ES2994635T3 - In-loop filters for video coding - Google Patents

In-loop filters for video coding Download PDF

Info

Publication number
ES2994635T3
ES2994635T3 ES20906639T ES20906639T ES2994635T3 ES 2994635 T3 ES2994635 T3 ES 2994635T3 ES 20906639 T ES20906639 T ES 20906639T ES 20906639 T ES20906639 T ES 20906639T ES 2994635 T3 ES2994635 T3 ES 2994635T3
Authority
ES
Spain
Prior art keywords
video
samples
clipping
value
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES20906639T
Other languages
English (en)
Inventor
Yi-Wen Chen
Xiaoyu Xiu
Tsung-Chuan Ma
Hong-Jheng Jhu
Xianglin Wang
Bing Yu
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 ES2994635T3 publication Critical patent/ES2994635T3/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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • 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/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

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

Abstract

Esta solicitud está dirigida a la codificación de datos de vídeo que incluyen una pluralidad de muestras de imagen de un fotograma de vídeo. Cada muestra de imagen corresponde a una de las muestras de luminancia y una muestra de croma. Cada muestra de imagen se filtra utilizando un filtro adaptativo en bucle que tiene una longitud de filtro y un conjunto de coeficientes de filtro. Se identifica un conjunto de muestras de imagen relacionadas en la longitud de filtro de cada muestra de imagen. Para cada muestra de imagen relacionada, se identifican un índice de valor de recorte respectivo y un coeficiente de filtro correspondiente. Se recorta una diferencia de cada muestra de imagen relacionada y la muestra de imagen respectiva en función del índice de valor de recorte respectivo que corresponde a un valor límite de recorte respectivo igual a 2 elevado a una potencia de un número de recorte respectivo. La muestra de imagen respectiva se modifica con la diferencia recortada de cada una de las muestras de imagen relacionadas en función del coeficiente de filtro respectivo. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Filtros en bucle para la codificación de video
Campo técnico
La presente solicitud en general se refiere a la codificación y compresión de datos de video y, en particular, a un método y sistema para mejorar la codificación de los componentes de crominancia y luminancia de un fotograma de imagen en un flujo de bits de datos de video.
Antecedentes
El video digital es compatible con una gran variedad de dispositivos electrónicos, tales como televisiones digitales, computadoras 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 teleconferencia de video, dispositivos de transmisión de video, entre otros. Los dispositivos electrónicos transmiten, reciben, codifican, decodifican y/o almacenan datos de video digital mediante la implementación de estándares de compresión/descompresión de video según se definen por MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, la Codificación Avanzada de Video (AVC), la Codificación de Video de Alta Eficiencia (HEVC) y la Codificación de Video Versátil (VVC). La compresión de video normalmente incluye realizar la predicción espacial (intra-fotograma) y/o la predicción temporal (inter-fotograma) para reducir o eliminar la redundancia inherente en los datos de video. Para la codificación de video basada en bloques, un fotograma de video se divide en uno o más segmentos y cada segmento tiene múltiples bloques de video, los cuales también pueden ser referidos como unidades de codificación en árbol (CTU). Cada CTU puede contener una unidad de codificación (CU) o separarse de forma recursiva en unidades de codificación más pequeñas hasta alcanzar el tamaño mínimo predefinido de unidad de codificación. Cada CU (también denominada CU en hoja) contiene una o múltiples unidades de transformada (TU) y cada CU también contiene una o múltiples unidades de predicción (PU). Cada CU puede codificarse en los modos intra, inter o IBC. Los bloques de video en un segmento intracodificado (I) de un fotograma de video se codifican mediante la predicción espacial con respecto a las muestras de referencia en los bloques contiguos dentro del mismo fotograma de video. Los bloques de video en un segmento intercodificado (P o B) de un fotograma de video pueden utilizar la predicción espacial con respecto a las muestras de referencia en los bloques contiguos dentro del mismo fotograma de video o la predicción temporal con respecto a las muestras de referencia en otros fotogramas de video de referencia previos y/o futuros.
La predicción espacial o temporal con base en un bloque de referencia que se ha codificado previamente, por ejemplo, un bloque contiguo, da como resultado un bloque predictivo para la codificación de un bloque de video actual. El proceso de encontrar el bloque de referencia puede realizarse mediante un algoritmo de coincidencia de bloques. Los datos residuales que representan diferencias de píxeles entre el bloque actual que se va a codificar y el bloque predictivo son referidos como bloque residual o errores de predicción. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta hacia un bloque de referencia en un fotograma de referencia que forma el bloque predictivo, y el bloque residual. El proceso de determinar el vector de movimiento normalmente es referido como estimación de movimiento. Un bloque intracodificado se codifica de acuerdo con un modo de intra-predicción y con 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, un dominio de frecuencia, lo que da como resultado coeficientes residuales de transformada que posteriormente pueden cuantificarse. Los coeficientes de transformada cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden explorarse para producir un vector unidimensional de coeficientes de transformada para después codificarse por entropía en un flujo de bits de video y así obtener una compresión más uniforme.
El flujo de bits de video codificados entonces se guarda en un medio de almacenamiento legible por computadora (por ejemplo, una memoria flash) a la que se puede acceder a través de otro dispositivo electrónico con capacidad de video digital o transmitirse directamente al dispositivo electrónico de forma inalámbrica o por cable. Después, el dispositivo electrónico realiza la descompresión de video (que es un proceso opuesto a la compresión de video antes descrita) al, por ejemplo, analizar sintácticamente el flujo de bits de video codificados para obtener elementos de sintaxis del flujo de bits y reconstruir los datos de video digital a su formato original a partir del flujo de bits de video codificados con base, por lo 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.
El filtrado en bucle se aplica a un bloque de video reconstruido antes de colocarlo en un almacenamiento de imágenes de referencia y utilizarlo para codificar otros bloques de video. Los filtros en bucle adaptativos (ALF) se aplican a los componentes de crominancia y luminancia, respectivamente, del bloque de video reconstruido. Sería conveniente contar con un mecanismo de codificación más eficaz para codificar y decodificar estos componentes de color, al mismo tiempo que se conserva la calidad de la imagen de los datos de video decodificados.
DU (TENCENT) Y ET AL: ”Non-CE5: On non-linear ALF clipping values”, 16. REUNIÓN DE JVET; 20191001 -20191011; GINEBRA; (EL EQUIPO CONJUNTO DE VIDEOEXPLORACIÓN DE ISO/IEC JTC1/SC29/WG11 E ITUT SG.16 ), núm. JVET-P0505; m504768 de octubre de 2019 (2019-10-08) divulga un método para derivar valores de recorte de ALF que son proporcionales a la profundidad de 2 bits.
Sumario
Esta solicitud describe las implementaciones relacionadas con la codificación y decodificación de datos de video y, más en particular, el método y sistema para mejorar la codificación de muestras de crominancia y luminancia de un fotograma de video mediante la aplicación de una operación de recorte con base en la profundidad de bits en el filtrado de bucle adaptativo. De acuerdo con la invención, se proporciona un método con las características de la reivindicación 1. Cada muestra de luminancia o crominancia del fotograma de video se filtra con base en una pluralidad de muestras de luminancia o crominancia circundantes de acuerdo con un esquema de filtro en bucle adaptativo (ALF) respectivo. Para cada muestra de luminancia o crominancia, se recorta una diferencia de una muestra de imagen relacionada y la muestra respectiva para generar un intervalo dinámico respectivo definido por un valor límite de corte igual a 2 a una potencia de un número de recorte respectivo.
En un aspecto, un método de codificación de datos de video incluye obtener, a partir de un flujo de bits, una pluralidad de muestras de imágenes de un fotograma de video. Cada muestra de imagen corresponde a una de una muestra de luminancia y una muestra de crominancia. El método también incluye, para cada una de la pluralidad de muestras de imágenes, filtrar la muestra de imagen respectiva con el uso de un filtro en bucle adaptativo que tenga una longitud de filtro y un conjunto de coeficientes de filtro. Filtrar la muestra de imagen respectiva también incluye identificar un conjunto de muestras de imágenes relacionadas en la longitud de filtro de la muestra de imagen respectiva; para cada una del conjunto de muestras de imágenes relacionadas, identificar un índice de valor de recorte respectivo y un coeficiente de filtro correspondiente; recortar una diferencia de cada una del conjunto de muestras de imágenes relacionadas y la muestra de imagen respectiva con base en el índice de valor de recorte respectivo; y modificar la muestra de imagen respectiva con la diferencia recortada de cada una del conjunto de muestras de imágenes relacionadas con base en el coeficiente de filtro respectivo. Para cada muestra de imagen, el índice de valor de recorte respectivo corresponde a un valor límite de recorte respectivo igual a 2 a una potencia de un número de recorte respectivo, y el número de recorte respectivo es un número entero. El método también incluye reconstruir el fotograma de video con el uso de la pluralidad de muestras de imágenes modificadas.
En algunas realizaciones, para cada muestra de imagen, la diferencia de cada una de las muestras de imágenes relacionadas y la muestra de imagen respectiva se recorta al determinar un IBDI de la muestra de imagen respectiva; para cada una del conjunto de muestras de imágenes relacionadas, determinar el valor límite de recorte respectivo con base en el IBDI, así como el índice de valor de recorte respectivo de acuerdo con una fórmula o tabla predefinida de valores límite de recorte, y recortar la diferencia de cada una del conjunto de muestras de imágenes relacionadas y la muestra de imagen respectiva con base en el valor límite de recorte respectivo. Además, en algunas realizaciones, la fórmula o tabla predefinida de valores límite de recorte se almacena localmente tanto en un codificador de video como en un decodificador de video. Para cada muestra de imagen, los índices de valores de recorte de las muestras de imágenes relacionadas se obtienen con el flujo de bits.
En otro aspecto, un dispositivo electrónico incluye uno o más procesadores y memoria para almacenar instrucciones, las cuales, cuando se ejecutan a través de uno o más procesadores, hacen que el dispositivo electrónico lleve a cabo los métodos de codificación de datos de video, tal como se describió anteriormente.
En aún otro aspecto, un medio de almacenamiento no transitorio y legible por computadora contiene instrucciones almacenadas, las cuales, cuando se ejecutan a través de uno o más procesadores de un dispositivo electrónico, hacen que uno o más procesadores lleven a cabo los métodos de codificación de datos de video, tal como se describió anteriormente.
Breve descripción de los dibujos
Los dibujos anexos, los cuales se incluyen con la finalidad de permitir un mayor entendimiento de las implementaciones y se incorporan en este documento y constituyen una parte de la especificación, ilustran las implementaciones descritas y, junto con la descripción, sirven para explicar los principios subyacentes. Números de referencia similares hacen referencia a las partes correspondientes.
La figura 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y decodificación de video de acuerdo con algunas realizaciones.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador de video de acuerdo con algunas realizaciones.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de decodificador de video de acuerdo con algunas realizaciones.
Las figuras 4A-4E son diagramas esquemáticos para dividir de forma recursiva un fotograma de imagen en bloques de video de diferentes tamaños y formas, de acuerdo con algunas realizaciones.
La figura 5 ilustra una porción de un fotograma de video en un flujo de bits, de acuerdo con algunas realizaciones. La figura 6 es un diagrama de bloques de un filtro en bucle que se aplica en un codificador o decodificador de video, de acuerdo con algunas realizaciones.
La figura 7A es un ejemplo de esquema de filtrado ALF en el que una muestra de luminancia se procesa con base en un conjunto de muestras de luminancia relacionadas mediante un ALF de luminancia, de acuerdo con algunas realizaciones, y la figura 7B es un ejemplo de esquema de filtrado ALF en el que una muestra de crominancia se procesa con base en un conjunto de muestras de crominancia relacionadas mediante un ALF de crominancia, de acuerdo con algunas realizaciones.
La figura 8 es un ejemplo de esquema de filtrado ALF que tiene un índice de valor de recorte para un conjunto de muestras de imágenes relacionadas de cada muestra de imagen en un bloque de un fotograma de imagen, de acuerdo con algunas realizaciones.
Las figuras 9A-9C son tres ejemplos de tablas predefinidas de valores límite de recorte de acuerdo con algunas realizaciones.
La figura 10 es una estructura de datos de un valor que se recortará para una muestra de imagen, de acuerdo con algunas realizaciones.
La figura 11 es un diagrama de flujo de un método de codificación de video, de acuerdo con algunas realizaciones.
Descripción detallada
Ahora se hará referencia detallada a las implementaciones específicas, cuyos ejemplos se ilustran en los dibujos anexos. En la siguiente descripción detallada, se expone una serie de detalles específicos no limitativos con el objetivo de ayudar a comprender la materia objeto que se presenta en esta solicitud. Sin embargo, será evidente para un experto en la técnica que pueden utilizarse diversas alternativas sin apartarse del alcance de las reivindicaciones y que la materia objeto puede practicarse sin estos detalles específicos. Por ejemplo, será evidente para un experto en la técnica que la materia objeto que se presenta en este documento puede implementarse en distintos tipos de dispositivos electrónicos con capacidades de video digital.
La figura 1 es un diagrama de bloques que ilustra un ejemplo de sistema 10 para la codificación y decodificación de bloques de video en paralelo de acuerdo con algunas realizaciones. Tal como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que genera y codifica datos de video para que un dispositivo de destino 14 los decodifique posteriormente. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia variedad de dispositivos electrónicos, incluyendo computadoras de escritorio o portátiles, tabletas, teléfonos inteligentes, convertidores de señal de TV, televisiones digitales, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión 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 que se decodificarán a través de un enlace 16. El enlace 16 puede incluir cualquier tipo de medio de comunicación o dispositivo capaz de trasladar los datos de video codificados del 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, tal 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, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como la 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 hasta el dispositivo de destino 14.
En algunas otras implementaciones, los datos de video codificados pueden transmitirse de 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 del dispositivo de almacenamiento 32 a través de la interfaz de entrada 28. El dispositivo de almacenamiento 32 puede incluir cualquiera de una diversidad de medios de almacenamiento de datos distribuidos o a los que se accede localmente, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de video codificados. En otro ejemplo, el dispositivo de almacenamiento 32 puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que pueda 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 por secuencias o descarga. El servidor de archivos puede ser cualquier tipo de computadora capaz de almacenar datos de video codificados y transmitir los datos de video codificados al dispositivo de destino 14. Entre los ejemplos de servidores de archivos se incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectados a la red (NAS) 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, incluyendo 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 los 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 por secuencias, una transmisión por 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, tal como un dispositivo de captura de video, por ejemplo una cámara de video, un archivo de video que contenga video previamente capturado, una interfaz de alimentación de video para recibir video de un proveedor de contenido de video y/o un sistema de gráficos de computadora para generar datos de gráficos de computadora como el video de origen, o una combinación de tales fuentes. Por 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 teléfonos con video. Sin embargo, las implementaciones descritas en la presente solicitud pueden ser aplicables a la codificación de video en general y pueden aplicarse a aplicaciones inalámbricas y/o por cable.
El video capturado, precapturado o generado por computadora puede codificarse a través del 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 también (o de manera alternativa) pueden almacenarse en el dispositivo de almacenamiento 32 para un posterior acceso por el dispositivo de destino 14 u otros dispositivos, para la decodificación y/o reproducción. La interfaz de salida 22 también puede incluir 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 a través del enlace 16. Los datos de video codificados, comunicados a través del enlace 16 o proporcionados en el dispositivo de almacenamiento 32, pueden incluir una diversidad de elementos de sintaxis generados por el codificador de video 20 para su uso por el decodificador de video 30 en la decodificación de los datos de video. Tales elementos de sintaxis pueden incluirse en los datos de video codificados, ya sea 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, el cual puede ser un dispositivo de visualización integrado y un dispositivo de visualización externo que se configure 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 diversidad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo emisor de luz orgánico (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 de propiedad exclusiva o de la industria, tales como los estándares VVC, HEVC, MPEG-4, Parte 10, la Codificación de Video Avanzada (AVC) o extensiones de tales estándares. Debe entenderse que la presente solicitud no se limita a un estándar específico de codificación/decodificación de video y que puede aplicarse a otros estándares de codificación/decodificación de video. Por lo general, se contempla que el codificador de video 20 del dispositivo de origen 12 pueda configurarse para codificar datos de video de acuerdo con cualquiera de estos estándares actuales o futuros. De igual manera, por lo general también se contempla que el decodificador de video 30 del dispositivo de destino 14 pueda configurarse para decodificar datos de video de acuerdo con cualquiera de estos estándares actuales o futuros.
Cada uno del codificador de video 20 y el decodificador de video 30 puede implementarse como cualquiera de una diversidad de circuitos de codificador adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables de campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando se implementa parcialmente en el software, un dispositivo electrónico puede almacenar instrucciones para el software en un medio no transitorio y legible por computadora que sea adecuado y ejecutar las instrucciones en el hardware a través de uno o más procesadores para realizar las operaciones de codificación/decodificación de video que se dan a conocer en la presente descripción. Cada uno del codificador de video 20 y el decodificador de video 30 pueden incluirse en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado (CODEC) en un dispositivo respectivo.
La figura 2 es un diagrama de bloques que ilustra un ejemplo de codificador de video 20 de acuerdo con algunas implementaciones descritas en la presente solicitud. El codificador de video 20 puede realizar la intra-codificación y la inter-predicción predictiva de bloques de video dentro de los fotogramas de video. La intra-codificación predictiva se basa en la predicción espacial para reducir o eliminar la redundancia espacial en los datos de video dentro de una imagen o fotograma de video determinado. La inter-codificación predictiva se basa en la predicción temporal para reducir o eliminar la redundancia temporal en los datos de video dentro de imágenes o fotogramas de video adyacentes de una secuencia de video.
Como se muestra en la figura 2, el codificador de video 20 incluye una memoria de datos de video 40, una unidad de procesamiento de predicciones 41, una memoria intermedia de imágenes decodificadas (DPB) 64, una sumadora 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54 y una unidad de codificación de entropía 56. La unidad de procesamiento de predicciones 41 también incluye una unidad de estimación de movimiento 42, una unidad de compensación de movimiento 44, una unidad de división 45, una unidad de procesamiento de intra-predicciones 46 y una unidad de copia intra-bloque (BC) 48. En algunas implementaciones, el codificador de video 20 también incluye una unidad de cuantificación inversa 58, una unidad de procesamiento de transformada inversa 60 y una sumadora 62 para la reconstrucción de bloques de video. Un filtro en bucle 66 puede situarse entre la sumadora 62 y la DPB 64, e incluye un filtro de desbloqueo para filtrar los límites de bloque y eliminar artefactos de bloqueo del video reconstruido. El filtro en bucle 66 también incluye un desplazamiento adaptativo de muestra (SAO) y un filtro en bucle adaptativo (ALF) para filtrar el resultado de la sumadora 62 antes de que el resultado de la sumadora 62 se coloque en la DPB 64 y se utilice para codificar otros bloques de video. 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 codificarse mediante los componentes del codificador de video 20. Los datos de video de la memoria de datos de video 40 pueden obtenerse, por ejemplo, de la fuente de video 18. La DPB 64 es una memoria intermedia que almacena datos de video de referencia para su uso en la codificación de datos de video a través del codificador de video 20 (por ejemplo, en los modos de intra-codificación o inter-codificación predictiva). La memoria de datos de video 40 y la DPB 64 pueden conformarse por cualquiera de una diversidad de dispositivos de memoria. En diversos ejemplos, la memoria de datos de video 40 puede estar en chip con otros componentes del codificador de video 20, o fuera de chip en relación con esos componentes.
Como se muestra en la figura 2, después de recibir los datos de video, la unidad de división 45 dentro de la unidad de procesamiento de predicciones 41 divide los datos de video en bloques de video. Esta división también puede incluir dividir un fotograma de video en segmentos, mosaicos u otras unidades de codificación (CU) más grandes de acuerdo con estructuras de separación predefinidas, tal como una estructura de árbol cuaternario asociada con los datos de video. El fotograma de video puede dividirse en múltiples bloques de video (o conjuntos de bloques de video referidos como mosaicos). La unidad de procesamiento de predicciones 41 puede seleccionar uno de una pluralidad de posibles modos de codificación predictiva, tal como uno de una pluralidad de modos de intracodificación predictiva o uno de una pluralidad de modos de inter-codificación predictiva, para el bloque de video actual con base en los resultados de error (por ejemplo, la velocidad de codificación y el nivel de distorsión). La unidad de procesamiento de predicciones 41 puede proporcionar el bloque de predicción intracodificado o intercodificado resultante a la sumadora 50 para generar un bloque residual y a la sumadora 62 para reconstruir el bloque codificado para su uso posterior como parte de un fotograma de referencia. La unidad de procesamiento de predicciones 41 también proporciona elementos de sintaxis, tales como vectores de movimiento, señalizadores de modo intra, información de divisiones y otra información de sintaxis, a la unidad de codificación de entropía 56.
Para seleccionar un modo adecuado de intra-codificación predictiva para el bloque de video actual, la unidad de procesamiento de intra-predicciones 46 dentro de la unidad de procesamiento de predicciones 41 puede realizar la intra-codificación predictiva del bloque de video actual en relación con uno o más bloques contiguos en el mismo fotograma que el bloque actual que se va a codificar para proporcionar la 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 predicciones 41 realizan la inter-codificación predictiva del bloque de video actual en relación con uno o más bloques predictivos en uno o más fotogramas de referencia para proporcionar una predicción temporal. El codificador de video 20 puede realizar múltiples pasadas de codificación, por ejemplo, para seleccionar un modo de codificación adecuado para cada bloque de datos de video.
En algunas implementaciones, la unidad de estimación de movimiento 42 determina el modo de inter-predicción para un fotograma de video actual mediante la generación de un vector de movimiento, el cual indica el desplazamiento de una unidad de predicción (PU) de un bloque de video dentro del fotograma de video actual en relación con un bloque predictivo dentro de un fotograma de video de referencia, de acuerdo con un patrón predeterminado dentro de una secuencia de fotogramas de video. La estimación del movimiento, realizada a través de la unidad de estimación del movimiento 42, es el proceso de generar vectores de movimiento, los cuales estiman el movimiento de los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video dentro de un fotograma de video o imagen actual en relación con un bloque predictivo dentro de un fotograma de referencia (u otra unidad codificada) en relación con el bloque actual que se codifica dentro del fotograma actual (u otra unidad codificada). El patrón predeterminado puede designar fotogramas de video en la secuencia como fotogramas P o fotogramas B. La unidad de copia intra-bloque (BC) 48 puede determinar vectores, por ejemplo, vectores de bloque, para la codificación de intra-BC, de forma similar a la determinación de vectores de movimiento a través de la unidad de estimación de movimiento 42 para la inter predicció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 fotograma de referencia que se considera que coincide estrechamente con la PU del bloque de video que se va a codificar en términos de diferencia de píxeles, el cual puede determinarse mediante la suma de las diferencias absolutas (SAD), la suma de las diferencias cuadradas (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 fotogramas de referencia almacenados en la DPB 64. Por ejemplo, el codificador de video 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo píxel u otras posiciones de píxeles fraccionarios del fotograma de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento en relación con las posiciones de píxeles completos y las posiciones de píxeles fraccionarios y generar un vector de movimiento con una precisión de píxel fraccionario.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de video en un fotograma de predicción intercodificado al comparar la posición de la PU con la posición de un bloque predictivo de un fotograma de referencia seleccionado de una primera lista de fotogramas de referencia (Lista 0) o de una segunda lista de fotogramas de referencia (Lista 1), cada una de las cuales identifica uno o más fotogramas de referencia almacenados en la 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 luego a la unidad de codificación de entropía 56.
La compensación de movimiento, realizada a través de la unidad de compensación de movimiento 44, puede implicar recolectar o generar el bloque predictivo con base en el vector de movimiento determinado por la unidad de estimación de movimiento 42. Una vez que recibe 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 fotogramas de referencia, recuperar el bloque predictivo de la DPB 64 y reenviar el bloque predictivo a la sumadora 50. Después, la sumadora 50 forma un bloque de video residual de valores de diferencia de píxeles al restar los valores de píxeles del bloque predictivo proporcionado por la unidad de compensación de movimiento 44 de los valores de píxeles 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 luminancia o crominancia 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 fotograma de video para su uso por el decodificador de video 30 en la decodificación de los bloques de video del fotograma 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, cualquier indicador que indique el modo de predicción o cualquier otra información de sintaxis descrita en este documento. Es importarte señalar que la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar totalmente integradas, pero se ilustran por separado para fines conceptuales.
En algunas implementaciones, la unidad de copia intra-bloque (BC) 48 puede generar vectores y recolectar bloques predictivos de forma 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 los bloques predictivos están en el mismo fotograma que el bloque actual que se está codificando y los vectores son referidos como vectores de bloque en vez de vectores de movimiento. En particular, la unidad de copia intra-bloque (BC) 48 puede determinar un modo de intra-predicción que se utilizará para codificar un bloque actual. En algunos ejemplos, la unidad de copia intra-bloque (BC) 48 puede codificar un bloque actual con el uso de distintos modos de intra-predicción, por ejemplo, durante pasadas de codificación separadas, y probar su rendimiento mediante un análisis de distorsión de la velocidad. Después, la unidad de copia intra-bloque (BC) 48 puede seleccionar, entre los distintos modos de intra- predicción probados, un modo de intra-predicción adecuado para utilizarse y generar un señalizador de modo intra en consecuencia. Por ejemplo, la unidad de copia intra-bloque (BC) 48 puede calcular los valores de distorsión de la velocidad mediante un análisis de distorsión de la velocidad para los distintos modos de intra-predicción probados y seleccionar el modo de intra-predicción que tenga las mejores características de distorsión de la velocidad, de entre los modos probados, como el modo de intra-predicción adecuado que se va a utilizar. El análisis de distorsión de la velocidad por lo general determina un grado de distorsión (o de error) entre un bloque codificado y un bloque original sin codificar que se codificó para producir el bloque codificado, así como una velocidad de bits (es decir, un número de bits) utilizada para producir el bloque codificado. La unidad de copia intra-bloque (BC) 48 puede calcular las proporciones a partir de las distorsiones y las velocidades para los distintos bloques codificados a fin de determinar cuál modo de intra-predicción muestra el mejor valor de distorsión de la velocidad para el bloque.
En otros ejemplos, la unidad de copia intra-bloque (BC) 48 puede utilizar 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<la intra-predicción de>B<c de acuerdo con las implementaciones descritas en este documento. En cualquier caso,>para la copia intra-bloque, un bloque predictivo puede ser un bloque que se considere que coincide estrechamente con el bloque que se va a codificar, en términos de diferencia de píxeles, el cual puede determinarse mediante la suma de las diferencias absolutas (SAD), la suma de las diferencias cuadradas (SSD) u otras métricas de diferencia, y la identificación del bloque predictivo puede incluir el cálculo de valores para las posiciones de píxeles subenteros.
Ya sea que el bloque predictivo proceda del mismo fotograma de acuerdo con la intra-predicción, o de un fotograma diferente de acuerdo con la inter-predicción, el codificador de video 20 puede formar un bloque de video residual al restar los valores de píxeles del bloque predictivo de los valores de píxeles 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 tanto de luminancia como de crominancia.
La unidad de procesamiento de intra-predicciones 46 puede intra-predecir un bloque de video actual, como alternativa a la inter-predicción realizada a través de 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 a través de la unidad de copia intra-bloque (BC) 48, tal como se describió anteriormente. En particular, la unidad de procesando de intrapredicciones 46 puede determinar un modo de intra-predicción que se utilizará para codificar un bloque actual. Para ello, la unidad de procesamiento de intra-predicciones 46 puede codificar un bloque actual con el uso de distintos modos de intra-predicción, por ejemplo, durante pasadas de codificación separadas, y la unidad de procesamiento de intra-predicciones 46 (o una unidad de selección de modo, en algunos ejemplos) puede seleccionar un modo de intra-predicción adecuado para utilizarse a partir de los modos de intra-predicción probados. La unidad de procesamiento de intra-predicciones 46 puede proporcionar información indicativa del modo de intra-predicción seleccionado para el bloque a la unidad de codificación de entropía 56. La unidad de codificación de entropía 56 puede codificar la información que indica el modo de intra-predicción seleccionado en el flujo de bits.
Después que la unidad de procesamiento de predicciones 41 determina el bloque predictivo para el bloque de video actual mediante la inter-predicción o la intra-predicción, la sumadora 50 forma un bloque de video residual al restar el bloque predictivo del bloque de video actual. Los datos de video residuales del 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 mediante una transformada, tal como una transformada discreta del coseno (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 velocidad 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 al ajustar un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 después puede realizar una exploración de una matriz que incluya los coeficientes de transformada cuantificados. De manera alternativa, la unidad de codificación de entropía 56 puede realizar la exploración.
Posterior a la cuantificación, la unidad de codificación de entropía 56 codifica por entreoía los coeficientes de transformada cuantificados en un flujo de bits de video con el uso, por ejemplo, de la codificación de longitud variable adaptativa según el contexto (CAVLC), la codificación aritmética binaria adaptativa según el contexto (CABAC), la codificación aritmética binaria adaptativa según el contexto basada en sintaxis (SBAC), la codificación de entropía por división de intervalos de probabilidad (PIPE) u otra técnica o metodología de codificación de entropía. Posteriormente, el flujo de bits codificados puede transmitirse al decodificador de video 30, o archivarse en el dispositivo de almacenamiento 32 para su posterior transmisión o recuperación mediante el decodificador de video 30. La unidad de codificación de entropía 56 también puede codificar por entropía los vectores de movimiento y los demás elementos de sintaxis para el fotograma de video actual que se está codificando.
La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican la cuantificación inversa y la transformación 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. Tal como se señaló anteriormente, la unidad de compensación de movimiento 44 puede generar un bloque predictivo con compensación de movimiento a partir de uno o más bloques de referencia de los fotogramas almacenados en la 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 los valores de píxeles subenteros para su uso en la estimación de movimiento.
La sumadora 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 su almacenamiento en la DPB 64. Después, la unidad de copia intra-bloque (BC) 48, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden utilizar el bloque de referencia como un bloque predictivo para inter-predecir otro bloque de video en un fotograma de video posterior.
La figura 3 es un diagrama de bloques que ilustra un ejemplo de decodificador de video 30 de acuerdo con algunas implementaciones de la presente solicitud. El decodificador de video 30 incluye una memoria de datos de video 79, una unidad de decodificación de entropía 80, una unidad de procesamiento de predicciones 81, una unidad de cuantificación inversa 86, una unidad de procesamiento de transformada inversa 88, una sumadora 90 y una DPB 92. La unidad de procesamiento de predicciones 81 también incluye una unidad de compensación de movimiento 82, una unidad de procesamiento de intra-predicciones 84 y una unidad de copia intra-bloque (BC) 85. El decodificador de video 30 puede realizar un proceso de decodificación generalmente recíproco al proceso de codificación antes descrito 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 con base en vectores de movimiento recibidos de la unidad de decodificación de entropía 80, mientras que la unidad de intra-predicciones 84 puede generar datos de predicción con base en señalizadores de modo de intra-predicción recibidos de la unidad de decodificación de entropía 80.
En algunos ejemplos, a una unidad de decodificador de video 30 se le puede asignar la tarea de realizar las implementaciones de la presente solicitud. Asimismo, 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 copia intra-bloque (BC) 85 puede realizar las implementaciones de la presente solicitud, sola o en combinación con otras unidades del decodificador de video 30, tal como la unidad de compensación de movimiento 82, la unidad de procesamiento de intra-predicciones 84 y la unidad de decodificación de entropía 80. En algunos ejemplos, el decodificador de video 30 puede no incluir la unidad de copia intra-bloque (BC) 85 y la funcionalidad de la unidad de copia intra-bloque (BC) 85 puede ser realizada por otros componentes de la unidad de procesamiento de predicciones 81, tal como la unidad de compensación de movimiento 82.
La memoria de datos de video 79 puede almacenar datos de video, tal como un flujo de bits de video codificados, para su decodificación a través de los demás 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, tal como una cámara, mediante la comunicación de datos de video por red inalámbrica o por cable, o al acceder a medios de almacenamiento de datos físicos (por ejemplo, una unidad flash o un disco duro). La memoria de datos de video 79 puede incluir una memoria intermedia de imágenes codificadas (CPB) que almacena datos de video codificados de un flujo de bits de video codificados. La memoria intermedia de imágenes decodificadas (DPB) 92 del decodificador de video 30 almacena datos de video de referencia para su uso en la decodificación de datos de video a través del codificador de video 30 (por ejemplo, en los modos de intra-codificación o inter-codificación predictiva). La memoria de datos de video 79 y la DPB 92 puede conformarse por cualquiera de una variedad de dispositivos de memoria, tal como la memoria dinámica de acceso aleatorio (DRAM), incluida la DRAM síncrona (Sd RAM), la RAM magneto-resistiva (MRAM), la RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. Para fines ilustrativos, la memoria de datos de video 79 y la DPB 92 se representan como dos componentes distintos del decodificador de video 30 en la figura 3. Sin embargo, será evidente para un experto en la técnica que la memoria de datos de video 79 y la DPB 92 puede proporcionarse en el mismo dispositivo de memoria o en dispositivos de memoria separados. En algunos ejemplos, la memoria de datos de video 79 puede estar en chip con otros componentes del decodificador de video 30, o fuera de 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 codificados que representa los bloques de video de un fotograma de video codificado y elementos de sintaxis asociados. El decodificador de video 30 puede recibir los elementos de sintaxis a nivel de fotograma de video y/o a nivel de bloque de video. La unidad de decodificación de entropía 80 del decodificador de video 30 decodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o señalizadores de modo de intrapredicción, y otros elementos de sintaxis. Después, la unidad de decodificación de entropía 80 reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad de procesamiento de predicciones 81.
Cuando el fotograma de video se codifica como un fotograma predictivo intracodificado (I) o para bloques predictivos intracodificados en otros tipos de fotogramas, la unidad de procesamiento de intra-predicciones 84 de la unidad de procesamiento de predicciones 81 puede generar datos de predicción para un bloque de video del fotograma de video actual con base en un modo de intra-predicción señalizado y datos de referencia de los bloques previamente decodificados del fotograma actual.
Cuando el fotograma de video se codifica como un fotograma predictivo intercodificado (es decir, B o P), la unidad de compensación de movimiento 82 de la unidad de procesamiento de predicciones 81 produce uno o más bloques predictivos para un bloque de video del fotograma de video actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad de decodificación de entropía 80. Cada uno de bloques predictivos puede producirse a partir de un fotograma de referencia dentro de una de las listas de fotogramas de referencia. El decodificador de video 30 puede construir las listas de fotogramas de referencia, Lista 0 y Lista 1, con el uso de técnicas predeterminadas de construcción con base en fotogramas de referencia almacenadas en la DPB 92.
En algunos ejemplos, cuando el bloque de video se codifica de acuerdo con el modo de copia intra-bloque que aquí se describe, la unidad de copia intra-bloque (BC) 85 de la unidad de procesamiento de predicciones 81 produce bloques predictivos para el bloque de video actual con base en vectores de bloque y otros elementos de sintaxis recibidos de la unidad de decodificación de entropía 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 copia intra-bloque (BC) 85 determina la información de predicción para un bloque de video del fotograma de video actual al analizar sintácticamente los vectores de movimiento y otros elementos de sintaxis, y después utiliza 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-predicción o inter-predicción) utilizado para codificar los bloques de video del fotograma de video, un tipo de fotograma de inter-predicción (por ejemplo, B o P), información de construcción para una o más de las listas de fotogramas de referencia para el fotograma, vectores de movimiento para cada bloque de video predictivo intercodificado del fotograma, estatus de inter-predicción para cada bloque de video predictivo intercodificado del fotograma, así como otra información para decodificar los bloques de video en el fotograma de video actual.
De manera similar, la unidad de copia intra-bloque (BC) 85 puede utilizar algunos de los elementos de sintaxis recibidos, por ejemplo, un indicador, para determinar que el bloque de video actual se predijo mediante el modo de copia intra-bloque, información de construcción de cuáles bloques de video del fotograma se encuentran dentro de la región reconstruida y deben almacenarse en la DPB 92, vectores de bloque para cada bloque de video previsto mediante copia intra-bloque del fotograma, estatus de predicción de copia intra-bloque para cada bloque de video previsto mediante copia intra-bloque del fotograma, y otra información para decodificar los bloques de video en el fotograma de video actual.
La unidad de compensación de movimiento 82 también puede realizar la interpolación con el uso de los filtros de interpolación que utiliza el codificador de video 20 durante la codificación de los bloques de video para calcular los valores interpolados para píxeles subenteros de los bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación que utiliza el codificador de video 20 a partir de los elementos de sintaxis recibidos y utilizar los filtros de interpolación para producir bloques predictivos.
La unidad de cuantificación inversa 86 cuantifica en forma inversa los coeficientes de transformada cuantificados que se proporcionan en el flujo de bits y se decodifican por entropía por la unidad de decodificación de entropía 80 con el uso del mismo parámetro de cuantificación calculado por el codificador de video 20 para cada bloque de video en el fotograma 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 inversa de números enteros 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 que la unidad de compensación de movimiento 82 o la unidad de copia intra-bloque (BC) 85 genera el bloque predictivo para el bloque de video actual con base en los vectores y otros elementos de sintaxis, la sumadora 90 reconstruye el bloque de video decodificado para el bloque de video actual al sumar 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 copia intra-bloque (BC) 85. Un filtro en bucle 94 puede situarse entre la sumadora 90 y la DPB 92, e incluye un filtro de desbloqueo para filtrar los límites de bloque y eliminar artefactos de bloqueo del bloque de video decodificado. El filtro en bucle 94 también incluye un filtro SAO y un filtro ALF para filtrar el bloque de video decodificado generado por la sumadora 90. Los bloques de video decodificados en un fotograma determinado se almacenan después en la DPB 92, la cual almacena los fotogramas de referencia utilizados para la posterior compensación de movimiento de los siguientes bloques de video. La DPB 92, o un dispositivo de memoria independiente de la DPB 92, también puede almacenar video decodificado para su posterior presentación 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 normalmente incluye un conjunto ordenado de fotogramas o imágenes. Cada fotograma puede incluir tres matrices de muestra, denotadas como SL, SCb y SCr. SL es una matriz bidimensional de muestras de luminancia. SCb es una matriz bidimensional de muestras de crominancia de Cb. SCr es una matriz bidimensional de muestras de crominancia de Cr. En otros casos, un fotograma puede ser monocromático y, por lo tanto, incluye sólo una matriz bidimensional de muestras de luminancia.
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 fotograma al primero dividir el fotograma en un conjunto de unidades de codificación en árbol (CTU). Un fotograma de video puede incluir un número entero de CTU ordenadas de forma consecutiva en un orden de exploración de trama 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 se señalan mediante el codificador de video 20 en un conjunto de parámetros de secuencia, de tal modo que todas las CTU de una secuencia de video tienen el mismo tamaño, como por ejemplo 128 x 128, 64 x 64, 32 x 32 y 16 x 16. Sin embargo, cabe señalar que<la presente solicitud no necesariamente se limita a un tamaño específico. Tal como se muestra en la figura>4<b>, cada CTU puede comprender un bloque de codificación en árbol (CTB) de muestras de luminancia, dos bloques de codificación en árbol correspondientes de muestras de crominancia y elementos de sintaxis utilizados para codificar las muestras de los bloques de codificación en árbol. Los elementos de sintaxis describen las propiedades de los distintos 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 la inter-predicción o intra-predicción, el modo de intra-predicción, los vectores de movimiento y otros parámetros. En imágenes monocromáticas o imágenes con tres planos de color independientes, una CTU puede comprender un solo bloque de codificación en árbol y elementos de sintaxis utilizados para codificar las muestras del bloque de codificación en árbol. Un bloque de codificación en árbol puede ser un bloque NxN de muestras.
Para lograr un mejor rendimiento, el codificador de video 20 puede realizar de forma recursiva divisiones en árbol, tales como divisiones en árbol binario, divisiones en árbol ternario, divisiones en árbol cuaternario o una combinación de ambos en los bloques de codificación en árbol de la CTU y dividir la CTU en unidades de codificación (CU) más pequeñas. Tal como se representa en la figura 4C, la CTU 400 de 64x64 se divide primero en cuatro CU más pequeñas, cada una con un tamaño de bloque de 32x32. Entre las cuatro CU más pequeñas, la CU 410 y la CU 420 se dividen, cada una, en cuatro CU de 16x16 por tamaño de bloque. Cada una de las dos CU 430 y 440 de 16x16 se dividen 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, tal como se representa en la figura 4C, cada nodo de hoja del árbol cuaternario corresponde a una CU de un tamaño respectivo que va desde 32x32 hasta 8x8. Al igual que la CTU que se representa en la figura 4B, cada CU puede comprender un bloque de codificación (CB) de muestras de luminancia y dos bloques de codificación correspondientes de muestras de crominancia de un fotograma del mismo tamaño, y elementos de sintaxis utilizados para codificar las muestras de los bloques de codificación. En las imágenes monocromáticas o imágenes con tres planos de color independientes, una CU puede comprender un solo bloque de codificación y estructuras de sintaxis utilizadas para codificar las muestras del bloque de codificación. Cabe señalar que la división en árbol cuaternario que se describe en las figuras 4C y 4D es sólo para fines ilustrativos y que una CTU puede separarse en varias CU para adaptarse a las diversas características locales con base en las divisiones en árbol cuaternario/ternario/binario. de árbol de múltiples tipos, una CTU se divide en una estructura de árbol cuaternario y cada CU de hoja de árbol cuaternario también puede dividirse en una estructura de árbol binario y ternario. Tal como se muestra en la figura 4E, existen cinco tipos de división, es decir, la división cuaternaria, la división binaria horizontal, la división binaria vertical, la división ternaria horizontal y la división ternaria vertical.
En algunas implementaciones, el codificador de video 20 también puede 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 inter-predicción o intra-predicción. Una unidad de predicción (PU) de una CU puede comprender un bloque de predicción de muestras de luminancia, dos bloques de predicción correspondientes de muestras de crominancia y elementos de sintaxis utilizados para predecir los bloques de predicción. En imágenes monocromáticas o imágenes con tres planos de color independientes, una PU puede comprender un solo 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 de luminancia, Cb y Cr para los bloques de predicción de luminancia, Cb y Cr de cada PU de la CU.
El codificador de video 20 puede utilizar la intra-predicción o la inter-predicción para generar los bloques predictivos para una PU. Si el codificador de video 20 utiliza la intra-predicción para generar los bloques predictivos de una PU, el codificador de video 20 puede generar los bloques predictivos de la PU con base en muestras decodificadas del fotograma asociado con la PU. Si el codificador de video 20 utiliza la inter-predicción para generar los bloques predictivos de una PU, el codificador de video 20 puede generar los bloques predictivos de la PU con base en muestras decodificadas de uno o más fotogramas distintos del fotograma asociado con la PU.
Después que el codificador de video 20 genera los bloques predictivos de luminancia, Cb y Cr para una o más PU de una CU, el codificador de video 20 puede generar un bloque residual de luminancia para la CU al restar los bloques predictivos de luminancia de la CU de su bloque de codificación de luminancia original, de tal modo que cada muestra en el bloque residual de luminancia de la CU indica una diferencia entre una muestra de luminancia en uno de los bloques predictivos de luminancia de la CU y una muestra correspondiente en el bloque de codificación de luminancia original de la CU. Del mismo modo, el codificador de video 20 puede generar un bloque residual de Cb y un bloque residual de Cr, respectivamente, para la CU, de tal modo que cada muestra en el bloque residual de Cb de la CU indica una diferencia entre una muestra de Cb en uno de los bloques predictivos de Cb de<la CU y una muestra correspondiente en el bloque de codificación de Cb original de la>C<u y cada muestra en el>bloque residual de Cr de la CU puede indicar una diferencia entre una muestra de Cr en uno de los bloques predictivos de Cr de la CU y una muestra correspondiente en el bloque de codificación de Cr original de la CU.
Adicionalmente, tal como se ilustra en la figura 4C, el codificador de video 20 puede utilizar la división en árbol cuaternario para descomponer los bloques residuales de luminancia, Cb y Cr de una CU en uno o más bloques de transformada de luminancia, 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 luminancia, dos bloques de transformada correspondientes de muestras de crominancia y elementos de sintaxis utilizados para transformar las muestras de bloques de transformada. Por lo tanto, cada TU de una CU puede asociarse con un bloque de transformada de luminancia, un bloque de transformada de Cb y un bloque de transformada de Cr. En algunos ejemplos, el bloque de transformada de luminancia asociado con la TU puede ser un sub-bloque del bloque residual de luminancia de la CU. El bloque de transformada de Cb puede ser un sub-bloque del bloque residual de Cb de la CU. El bloque de transformada de Cr puede ser un sub-bloque del bloque residual de Cr de la CU. En las imágenes monocromáticas o imágenes con tres planos de color independientes, una TU puede comprender un solo bloque de transformada y estructuras de sintaxis 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 de luminancia de una TU para generar un bloque de coeficientes de luminancia 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 transformada de Cb de una TU para generar un bloque de coeficientes de Cb para la TU. El codificador de video 20 puede aplicar una o más transformadas a un bloque de transformada de Cr de una TU para generar un bloque de coeficientes de Cr para la TU.
Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luminancia, un bloque de coeficientes de Cb o un bloque de coeficientes de Cr), el codificador de video 20 puede cuantificar el bloque de coeficientes. La cuantificación por lo general se refiere a un proceso en el que se cuantifican los coeficientes de transformada para posiblemente reducir la cantidad de datos utilizados para representar los coeficientes de transformada, proporcionando una mayor compresión. Una vez que el codificador de video 20 cuantifica un bloque de coeficientes, el codificador de video 20 puede codificar por entropía los elementos de sintaxis que indican los coeficientes de transformada cuantificados. Por ejemplo, el codificador de video 20 puede realizar la codificación aritmética binaria adaptativa según el contexto (CABAC) en los elementos de sintaxis que indican los coeficientes de transformada cuantificados. Finalmente, el codificador de video 20 puede generar un flujo de bits que incluye una secuencia de bits que forma una representación de los fotogramas codificados y datos asociados, los cuales 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 fotogramas de los datos de video con base, por lo menos en parte, en los elementos de sintaxis obtenidos del flujo de bits. El proceso de reconstruir los datos de video por lo general es 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 en los bloques de coeficiente asociados con las TU de una CU actual para reconstruir los 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 al añadir las muestras de los bloques predictivos para las<PU de la CU actual a las muestras correspondientes de los bloques de transformada de las>T<u de la CU actual.>Después de reconstruir los bloques de codificación para cada CU de un fotograma, el decodificador de video 30 puede reconstruir el fotograma.
Como se señaló anteriormente, la codificación de video logra la compresión de video al utilizar principalmente dos modos, es decir, la intra-predicción de fotograma (o intra-predicción) y la inter-predicción de fotograma (o inter predicción). La codificación basada en paleta constituye otro esquema de codificación que muchos estándares de codificación de video han adoptado. En la codificación basada en paleta, la cual puede ser particularmente adecuada para la codificación de contenido generado en pantalla, un codificador de video (por ejemplo, un codificador de video 20 o un decodificador de video 30) forma una tabla de paleta que representa los datos de video de un bloque determinado. La tabla de paleta incluye los valores de píxeles más dominantes (por ejemplo, los más utilizados) en el bloque determinado. Los valores de píxeles que no se representan con frecuencia en los datos de video del bloque determinado no se incluyen en la tabla de paleta o se incluyen en la tabla de paleta como colores de escape.
Cada entrada en la tabla de paleta incluye un índice para un valor de píxel correspondiente que aparece en la tabla de paleta. Los índices de la paleta para las muestras en el bloque pueden codificarse para indicar cuál entrada de la tabla de paleta se va a utilizar para predecir o reconstruir qué muestra. Este modo de paleta comienza con el proceso de generar un predictor de paleta para un primer bloque de una imagen, segmento, mosaico u otra agrupación de bloques de video. Tal como se explica a continuación, el predictor de paleta para los bloques de video posteriores normalmente se genera al actualizar un predictor de paleta previamente utilizado. Para fines ilustrativos, se asume que el predictor de paleta se define a nivel de imagen. En otras palabras, una imagen puede incluir múltiples bloques de codificación, cada uno con su propia tabla de paleta, pero existe un predictor de paleta para toda la imagen.
Para reducir los bits necesarios para señalar entradas de paleta en el flujo de bits de video, un decodificador de video puede utilizar un predictor de paleta para determinar nuevas entradas de paleta en la tabla de paleta utilizada para reconstruir un bloque de video. Por ejemplo, el predictor de paleta puede incluir entradas de paleta de una tabla de paleta previamente utilizada o incluso inicializarse con una tabla de paleta utilizada más recientemente al incluir todas las entradas de la tabla de paleta utilizada más recientemente. En algunas implementaciones, el predictor de paleta puede incluir menos de todas las entradas de la tabla de paleta utilizada más recientemente y, después, incorporar algunas entradas de otras tablas de paleta previamente utilizadas. El predictor de paleta puede tener el mismo tamaño que las tablas paleta utilizadas para codificar diferentes bloques o puede ser más grande o más pequeño que las tablas de paleta utilizadas para codificar diferentes bloques. En un ejemplo, el predictor de paleta se implementa como una tabla FIFO (primera en entrar, primera en salir) que incluye 64 entradas de paleta.
Para generar una tabla de paleta para un bloque de datos de video a partir del predictor de paleta, un decodificador de video puede recibir, del flujo de bits de video codificado, un indicador de un bit para cada entrada del predictor de paleta. El indicador de un bit puede tener un primer valor (por ejemplo, un valor binario) que indica que la entrada asociada del predictor de paleta se debe incluir en la tabla de paleta o un segundo valor (por ejemplo, un cero binario) que indica que la entrada asociada del predictor de paleta no se debe incluir en la tabla de paleta. Si el tamaño del predictor de paleta es mayor que la tabla de paleta utilizada para un bloque de datos de video, entonces el decodificador de video puede dejar de recibir más indicadores una vez que se alcance un tamaño máximo para la tabla de paleta.
En algunas implementaciones, algunas entradas en una tabla de paleta pueden señalarse directamente en el flujo de bits de video codificado en lugar de determinarse mediante el predictor de paleta. Para tales entradas, el decodificador de video puede recibir, del flujo de bits de video codificado, tres valores de m-bit separados que indican los valores de píxeles para la luminancia y dos componentes de crominancia asociados con la entrada, en donde m representa la profundidad de bit de los datos de video. En comparación con los múltiples valores de mbit necesarios para las entradas de paleta directamente señaladas, esas entradas de paleta derivadas del predictor de paleta sólo requieren un indicador de un bit. Por lo tanto, la señalización de algunas o todas las entradas de paleta mediante el predictor de paleta puede reducir significativamente el número de bits necesarios para señalar las entradas de una nueva tabla de paleta, mejorando así la eficacia de codificación general de la codificación en modo de paleta.
En muchos casos, el predictor de paleta para un bloque se determina con base en la tabla de paleta utilizada para codificar uno o más bloques previamente codificados. Sin embargo, al codificar la primera unidad de codificación en árbol de una imagen, un segmento o un mosaico, es posible que la tabla de paleta de un bloque previamente codificado no esté disponible. Por lo tanto, no se puede generar un predictor de paleta utilizando entradas de las tablas de paleta previamente utilizadas. En tal caso, una secuencia de inicializadores de predictor de paleta puede señalarse en un conjunto de parámetros de secuencia (SPS) y/o un conjunto de parámetros de imagen (PPS), los cuales son valores utilizados para generar un predictor de paleta cuando una tabla de paleta previamente utilizada no está disponible. Un SPS por lo general se refiere a una estructura de sintaxis de elementos de sintaxis que se aplican a una serie de imágenes de video codificadas consecutivas denominada secuencia de video codificada (CVS) que se determina por el contenido de un elemento de sintaxis encontrado en el PPS al que hace referencia un elemento de sintaxis encontrado en cada encabezado de fracción de segmento. Un PPS por lo general se refiere a una estructura de sintaxis de elementos de sintaxis que se aplican a una o más imágenes individuales dentro de un CVS que se determina por un elemento de sintaxis encontrado en cada encabezado de fracción de segmento. Por lo tanto, un SPS por lo general se considera como una estructura de sintaxis de nivel superior que un PPS, lo que significa que los elementos de sintaxis incluidos en el SPS por lo general cambian con menos frecuencia y se aplican a una porción más grande de datos de video en comparación con los elementos de sintaxis incluidos en el PPS.
La figura 5 ilustra una porción de un fotograma de video 500 en un flujo de bits, de acuerdo con algunas realizaciones. El fotograma de video 500 incluye una pluralidad de píxeles, y cada píxel se compone de una pluralidad de elementos de color (por ejemplo, azul, verde y rojo). En la codificación y decodificación de video, la información de color de la pluralidad de píxeles se representa a través de una pluralidad de muestras de luminancia 502 y una pluralidad de muestras de crominancia 504. Cada uno de la pluralidad de píxeles corresponde a una muestra de luminancia respectiva 502, y cada muestra de luminancia 502 también corresponde a un píxel respectivo en el fotograma de video 500. Cada muestra de crominancia 504 corresponde a un conjunto respectivo de muestras de luminancia 502 de acuerdo con un esquema de submuestreo. Cada muestra de luminancia 502 tiene un componente de luminancia Y', y cada muestra de crominancia 504 tiene un componente de crominancia diferencia de azul Cb, y un componente de crominancia diferencia de rojo Cr. El esquema de submuestreo de los componentes de luminancia y crominancia (Y':Cb:Cr) tiene una relación de tres partes, por ejemplo, 4:1:1, 4:2:0, 4:2:2, 4:4:4 y 4:4:0. En particular, las muestras de luminancia 502 y las muestras de crominancia 504 del fotograma de video 500 cumplen con el esquema de submuestreo que tiene una relación de tres partes igual a 4:1:1 y, en promedio, cada cuatro muestras de luminancia 502 corresponden a una muestra de crominancia 504 que tiene el componente de crominancia diferencia de azul Cb y el componente de crominancia diferencia de rojo Cr.
La figura 6 es un diagrama de bloques de un filtro en bucle 600 que se aplica en un codificador de video 20 o decodificador de video 30, de acuerdo con algunas realizaciones. En la codificación o decodificación de video, cada una de las muestras de luminancia 502 y muestras de crominancia 504 se reconstruye a partir de bloques residuales del fotograma de video 500 y se filtran mediante un filtro de desbloqueo, uno o más filtros de desplazamiento adaptativo de muestra (SAO) 602, y uno o más filtros en bucle adaptativo (ALF) 604 del filtro en bucle 600 (por ejemplo, los filtros en bucle 66 y 94 de las figuras 2 y 3) para eliminar artefactos. Las muestras de luminancia 606 y las muestras de crominancia 608 filtradas se almacenan en una memoria intermedia de imágenes decodificadas 64 o 92 y se utilizan para codificar o decodificar otros bloques de video en el fotograma de video 500. En algunas realizaciones, cada uno de los filtros SAO 602 y ALF 604 de desbloqueo se configura para filtrar las muestras de luminancia 502 o las muestras de crominancia 504 con base en el mismo tipo de muestras, por ejemplo, filtrar cada muestra de luminancia 502 con base en un conjunto respectivo de muestras de luminancia adyacentes 502 y filtrar cada muestra de luminancia 502 con base en un conjunto respectivo de muestras de crominancia adyacentes 504. En algunas realizaciones, el filtro en bucle 600 también incluye un filtro de componente cruzado 610 configurado para filtrar cada muestra de crominancia 504 con base en una o más muestras de luminancia 502 que se encuentren adyacentes a la muestra de crominancia respectiva 504. Por el contrario, en algunas realizaciones, el filtro en bucle 600 incluye un filtro de componente cruzado alternativo configurado para filtrar cada muestra de luminancia 502 con base en una o más muestras de crominancia 504 que se encuentren adyacentes a la muestra de luminancia 502 respectiva.
Específicamente, el codificador de video 20 o el decodificador de video 30 obtiene una pluralidad de muestras de luminancia 502 y una pluralidad de muestras de crominancia 504 de un fotograma de video 500. Cada muestra de luminancia 502 tiene un valor de luminancia respectivo, y cada muestra de crominancia 504 tiene un valor de luminancia respectivo. El filtro SAO 602 compensa cada una de la pluralidad de muestras de luminancia 502 y de la pluralidad de muestras de crominancia 504. Específicamente, los filtros SAO 602A, 602B y 602C compensan las muestras de luminaria 502, los componentes de crominancia diferencia de azul Cb de las muestras de crominancia 504 y los componentes de crominancia diferencia de rojo Cr de las muestras de crominancia 504, respectivamente. Los ALF 604 se acoplan a los filtros SAO 602. Cada una de las muestras de luminancia compensadas 612 se actualiza a una muestra de luminancia 606 con el uso de un ALF de luminancia 604A con base en un conjunto de muestras de luminancia compensadas adyacentes 612, mientras que cada una de las muestras de crominancia compensadas 614A y 614B se actualiza a una muestra de crominancia 608A o 608B con el uso de un ALF de crominancia 604B con base en un conjunto de muestras de crominancia compensadas adyacentes 614.
En algunas realizaciones, el filtro de componente cruzado 610 se configura para generar un valor de refinamiento de crominancia 616 para cada muestra de crominancia 504 con base en un conjunto de muestras de luminancia 502. La muestra de crominancia respectiva 504 se actualiza con el uso del valor de refinamiento de crominancia 616, es decir, un valor de crominancia de la muestra de crominancia respectiva 504 se refina con el valor de refinamiento de crominancia 616. La muestra de crominancia respectiva actualizada 608 se almacena en asociación con el fotograma de video 500. En algunas realizaciones, el filtro de componente cruzado 610 incluye un primer filtro de componente cruzado 610A y un segundo filtro de componente cruzado 610 configurados para generar un primer valor de refinamiento 616A y un segundo valor de refinamiento 616B. Los componentes de crominancia diferencia de azul y diferencia de rojo 618A y 618B se actualizan por separado con el uso del primer y segundo valores de refinamiento 616A y 616B para generar un primer valor de crominancia refinada 608A y un segundo valor de crominancia refinada 608B, respectivamente.
Cada uno de los filtros SAO y ALF, de desbloqueo, del filtro en bucle 600 incluye uno o más coeficientes de filtro en bucle, y el ALF de componente cruzado 610 también incluye una pluralidad de coeficientes de filtro de componente cruzado. Los coeficientes de filtro de componente cruzado y en bucle se señalizan en un conjunto de parámetros de adaptación (APS). En un ejemplo, un APS transporta y señaliza múltiples conjuntos (por ejemplo, hasta 25 conjuntos) de coeficientes de filtro de luminancia e índices de valores de recorte, así como múltiples conjuntos (por ejemplo, hasta 8 conjuntos) de coeficientes de filtro de crominancia e índices de valores de recorte. El APS se transfiere junto con el fotograma de video 500 en el flujo de bits, del codificador de video 20 al decodificador de video 30, es decir, el APS es una sobrecarga de la transferencia del flujo de bits. En algunas realizaciones, los coeficientes de filtro con diferente clasificación para los componentes de luminancia de las muestras de luminancia 502 se fusionan para reducir la sobrecarga de la transferencia del flujo de bits. En un ejemplo, los índices del APS utilizados para un segmento de imagen se señalizan en un encabezado de segmento correspondiente.
La figura 7A es un ejemplo de esquema de filtrado ALF 700 en el que una muestra de luminancia 502A se procesa con base en un conjunto de muestras de luminancia relacionadas 502B mediante un ALF de luminancia 604A, de acuerdo con algunas realizaciones, y la figura 7B es un ejemplo de esquema de filtrado ALF 750 en el que una muestra de crominancia 50A4 se procesa con base en un conjunto de muestras de crominancia relacionadas 504B mediante un ALF de crominancia 604B, de acuerdo con algunas realizaciones. El ALF de luminancia 604A tiene una forma de filtro de diamante (por ejemplo, una forma de diamante de 7x7) y se selecciona de una pluralidad de filtros predefinidos (por ejemplo, 25 filtros que tienen coeficientes de filtro predefinidos) para cada bloque de 4x4 con base en una dirección y actividad de los gradientes locales. Cada cuadrado en la figura 7A representa una muestra de luminancia 502 etiquetada con un coeficiente de filtro correspondiente (C0-C12) del ALF de luminancia 604A que tiene forma de diamante. Para la muestra de luminancia 502A, se aplica de forma simétrica un total de 13 coeficientes de filtro (C0-C12) para combinar 25 muestras de luminancia 502 con el uso del ALF de luminancia 604A. De igual manera, el ALF de crominancia 604B tiene una forma de filtro de diamante (por ejemplo, una forma de diamante de 5x5) y se selecciona de una pluralidad de filtros predefinidos (por ejemplo, 8 filtros que tienen coeficientes de filtro predefinidos). Cada cuadrado en la figura 7B representa una muestra de crominancia 504 etiquetada con un coeficiente de filtro correspondiente (C0-C6) del ALF de crominancia 604B que tiene la forma de diamante. Para la muestra de crominancia 504A, se aplica de forma simétrica un total de 7 coeficientes de filtro (C0-C6) para combinar 13 muestras de crominancia 504 en el ALF de crominancia 604B.
Cuando se habilita el filtrado de bucle adaptativo, por ejemplo, para un CTB, se filtra cada muestra de imagen R(i, j) (por ejemplo, muestra de luminancia 502A, muestra de crominancia 504A) dentro de la CU, lo que da como resultado el valor de muestra R(i, j) como se muestra a continuación:
R'( í, j) = R (í,j) ( (£ fc *o L *o /(M ) x K(R( í k ,j 0 - R(í, j) ,c (k , l)) 64) >> 7) (1)
en donde f(k, l) denota los coeficientes de filtro decodificados, K(x, y) es la función de recorte y c(k, l) denota los parámetros de recorte decodificados. Las variables k y l varían entre y ^ en donde L denota la longitud de filtro.
Para el recorte en el filtrado de bucle adaptativo, cada muestra de imagen implica un conjunto de muestras de imágenes relacionadas en una longitud de filtro L de un ALF 604. Con referencia a la figura 7A, las muestras de luminancia relacionadas 502B de cada muestra de luminancia 502A incluyen 3 filas de muestras de luminancia (es decir, 9 muestras de luminancia) por arriba de la muestra de luminancia respectiva 502A, 3 filas de muestras de luminancia (es decir, 9 muestras de luminancia) por debajo de la muestra de luminancia respectiva 502A, 3 muestras de luminancia hacia la izquierda de la muestra de luminancia respectiva 502A, y 3 muestras de luminancia hacia la derecha de la muestra de luminancia respectiva 502A. Con referencia a la figura 7B, las muestras de crominancia relacionadas 504B de cada muestra de crominancia 504A incluyen 2 filas de muestras de crominancia (es decir, 4 muestras de crominancia) por arriba de la muestra de crominancia respectiva 504A, 2 filas de muestras de crominancia (es decir, 4 muestras de crominancia) por debajo de la muestra de crominancia respectiva 50rA, 2 muestras de crominancia hacia la izquierda de la muestra de crominancia respectiva 504A, y 2 muestras de crominancia hacia la derecha de la muestra de crominancia respectiva 504A.
En algunas realizaciones, los parámetros de filtro ALF se señalizan en un APS que incluye índices de valores de recorte que representan los parámetros de recorte c(k, l) antes mencionados. En un APS, podrían señalizarse hasta 25 conjuntos de coeficientes de filtro de luminancia (por ejemplo, un conjunto de C0-C12 en la figura 7A) e índices de valores de recorte, y hasta 8 conjuntos de coeficientes de filtro de crominancia (por ejemplo, un conjunto de C0-C6 en la figura 7B) e índices de valores de recorte. Para reducir la sobrecarga de bits de señalización, los coeficientes de filtro con diferente clasificación para las muestras de luminancia 502A pueden fusionarse. En el encabezado de segmento, se señalizan los índices de los APS utilizados para el segmento actual. Los índices de valores de recorte, los cuales se decodifican a partir del APS, permiten determinar los valores límite de recorte con el uso de una fórmula o tabla predefinida de valores límite de recorte. Estos valores límite de recorte dependen de la profundidad de bits internos y definen un intervalo dinámico al que se recortan las diferencias de un conjunto de muestras de imágenes relacionadas y una muestra de imagen 502A o 504A. En algunas realizaciones, diferentes fórmulas o tablas predefinidas de valores límites de recorte se aplican a las muestras de luminancia 502A y a las muestras de crominancia 504A.
En algunas realizaciones, en un encabezado de segmento, se puede señalizar una pluralidad de índices de APS (por ejemplo, 7 índices) para seleccionar un subconjunto de una pluralidad de conjuntos de filtros de luminancia y crominancia correspondientes para el filtrado de bucle adaptativo en un segmento actual. Este proceso de filtrado de bucle adaptativo puede controlarse a nivel de CTB. Se señaliza un indicador para indicar si el filtrado de bucle adaptativo se aplica a un CTB de luminancia. De acuerdo con una determinación de que la bandera habilita el filtrado de bucle adaptativo, un CTB de luminancia elige un conjunto de filtros de luminancia de entre una pluralidad de (por ejemplo, 16) conjuntos de filtros de luminancia. Se señaliza un índice de conjunto de filtros de luminancia para que el CTB de luminancia indique qué conjunto de filtros de luminancia se aplica. Cada uno de la pluralidad de conjuntos de filtros se define previamente y se codifica por hardware tanto en el codificador 20 como en el decodificador 30, y sólo un índice del conjunto de filtros de luminancia necesita transmitirse con un flujo de bits que transporte el fotograma de video 500. Asimismo, para las muestras de crominancia 504A, cuando el indicador habilita el filtrado de bucle adaptativo, un índice del conjunto de filtros de crominancia se señaliza en un encabezado de segmento para seleccionar uno de una pluralidad de conjuntos de filtros de crominancia para el filtrado de bucle adaptativo del segmento actual. A nivel de CTB, el índice del conjunto de filtros de crominancia se señaliza para cada CTB de crominancia en caso de que exista más de un conjunto de filtros de crominancia en el APS. Cada uno de los conjuntos de filtros se almacena localmente en un codificador o decodificador de video con coeficientes de filtro f(k, l) y parámetros de recorte c(k, l) o con índices de los coeficientes de filtro f(k, l) y parámetros de recorte c(k, l).
En algunas realizaciones, los coeficientes de filtro se cuantifican con una norma igual a 128. Se aplica una regla de cumplimiento de flujo de bits, de tal modo que los valores de los coeficientes de filtro que tengan una posición no central se encuentren en el intervalo de [-27 a 27 - 1]. Un coeficiente de filtro que tiene una posición central no se señaliza en el flujo de bits y se presume que es 128.
La figura 8 es un ejemplo de esquema de filtrado ALF 800 que tiene un índice de valor de recorte para un conjunto de muestras de imágenes relacionadas 804 de cada muestra de imagen 802 en un bloque de un fotograma de imagen, de acuerdo con algunas realizaciones. Para cada muestra de imagen 802 (por ejemplo, muestra de luminancia 502A, muestra de crominancia 504A), un ALF 604 tiene una longitud de filtro L y corresponde a una pluralidad de coeficientes de filtro (por ejemplo, C0-C13 para la muestra de luminancia 502A). Un conjunto de muestras de imágenes relacionadas 804 se identifica en la longitud de filtro de la muestra de imagen respectiva 802. Un índice de valor de recorte respectivo y un coeficiente de filtro correspondiente se identifican para cada una del conjunto de muestras de imágenes relacionadas 804 (por ejemplo, muestras de luminancia 502B correspondientes a coeficientes de filtro C1-C12 en la figura 7). Por ejemplo, cada muestra de imagen relacionada 804 en la figura 8 tiene un índice de valor de recorte igual a 0, 1, 2 o 3.
El índice de valor de recorte respectivo corresponde a un valor límite de recorte respectivo M igual a 2 a una potencia de un número de recorte respectivo i, y el número de recorte respectivo i es un número entero. El ALF 604 recorta una diferencia de cada una del conjunto de muestras de imágenes relacionadas 804 y la muestra de imagen respectiva 802 para generar un intervalo dinámico DR definido por el valor límite de recorte respectivo M asociado al índice de valor de recorte respectivo. La muestra de imagen respectiva 802 (por ejemplo, muestra de luminancia 502A, muestra de crominancia 504A) se modifica con la diferencia recortada de cada una del conjunto de muestras de imágenes relacionadas 804 con base en el coeficiente de filtro respectivo, de tal modo que el fotograma de imagen puede reconstruirse con el uso de la pluralidad de muestras de imágenes modificadas 802. Cuando los valores límite se restringen a 2 a potencias de números enteros, las diferencias de recorte de las muestras de imágenes relacionadas 804 y cada muestra de imagen 802 incluyen sólo operaciones lógicas AND y/u operaciones lógicas OR. Con estos medios, esta operación de recorte no incluye ninguna operación de comparación en cada muestra de imagen 802, lo cual reduce la cantidad de cálculos necesarios para el filtrado de bucle adaptativo y ahorra recursos de cómputo a partir de la codificación del fotograma de video correspondiente.
En algunas realizaciones, para un primer bloque de muestras de imágenes, un conjunto único de índices de valores de recorte se determina para todas las muestras de imágenes 802 en el primer bloque. El conjunto de índices de valores se transfiere de un codificador de video 20 a un decodificador de video 30 con el bloque de muestras de imágenes, lo que permite que el ALF 604 procese cada una de las muestras de imágenes 802 en el primer bloque con base en el mismo conjunto único de índices de valores de recorte. Un ejemplo de bloque es el fotograma de video completo, un segmento, un ladrillo, un mosaico, un grupo de mosaicos, un árbol de codificación o cualquier otra unidad de codificación. Además, en algunas realizaciones, el fotograma de video incluye un segundo bloque que es distinto del primer bloque. Un segundo conjunto de índices de valores de recorte se utiliza para el filtrado de bucle adaptativo de las muestras de imágenes 802 en el segundo bloque. El segundo conjunto de índices de valores de recorte se determina por separado del conjunto único de índices de valores de recorte utilizado para el primer bloque de imágenes.
Las figuras 9A-9C son tres ejemplos de tablas predefinidas de valores límite de recorte 900A-900C de acuerdo con algunas realizaciones. Cada una de las tablas predefinidas de valores límite de recorte 900 asocia un conjunto de índices de valores de recorte 902 a un conjunto de valores límite de recorte (M) 904 de acuerdo con un conjunto de índices de profundidad de bits internos (IBDI) 906. Todos y cada uno de los valores límite de recorte M contenidos en las tablas 900A-900C son iguales a 2 a una potencia de un número de recorte respectivo i. Cada tabla de valores límite de recorte 900 se aplica en el ALF 604 como referencia para determinar un valor límite de recorte M para un índice de valor de recorte respectivo. Por ejemplo, para una primera muestra de imagen 802 de un fotograma de video, cuando se recorta una diferencia de una de sus muestras de imágenes relacionadas 804A y la primera muestra de imagen 802, un índice de valor de recorte respectivo 902A (es decir, igual a 0) se proporciona con esta muestra de imagen relacionada 804A, y el IBDI 906A (por ejemplo, IBDI=10) puede determinarse a partir de la primera muestra de imagen 802 que deba filtrarse. El valor límite de recorte respectivo 904A (es decir, igual a 1024) se identifica en la tabla predefinida de valores límite de recorte 900A en una sección transversal de una columna correspondiente al índice de valor de recorte 902A y a una fila correspondiente al IBDI 906A.
Cada valor límite de recorte 904 es igual a 2 a una potencia de un número de recorte respectivo i. Para el mismo índice de valor de recorte (por ejemplo, 902A), el número de recorte respectivo i es un número entero que aumenta con el IBDI 906 de forma lineal. Cada valor límite 904 (M) se representa como una función del número de recorte respectivo i , de la siguiente manera:
M = 2!. (1)
En algunas realizaciones, para cada muestra de imagen relacionada 804 utilizada para el filtrado de bucle adaptativo de una primera muestra de imagen 802, la diferencia recortada de la muestra de imagen relacionada 804 y la primera muestra de imagen 802 se encuentra en el intervalo de [-M, M-1], es decir, [-2i, 2-1]. De manera alternativa, en algunas realizaciones, la diferencia recortada de la muestra de imagen relacionada 804 y la primera muestra de imagen 802 se encuentra en el intervalo de [-M+1, M], es decir, [-2+1, 2i]. De manera alternativa, en algunas realizaciones, la diferencia recortada de la muestra de imagen relacionada 804 y la primera muestra de imagen 802 se encuentra en el intervalo de [-M+1, M-1], es decir, [-2+1, 2i- 1 ]. De manera alternativa, en algunas realizaciones, la diferencia recortada de la muestra de imagen relacionada 804 y la primera muestra de imagen 802 se encuentra en el intervalo de [-M, M], es decir, [-2', 2!\.
En algunas realizaciones, una tabla predefinida de valores límite de recorte 900 utilizada en el filtrado de un bloque de muestras de imágenes 802 se obtiene con el flujo de bits que transporta el bloque, lo que permite que la tabla 900 se actualice para cada bloque de muestras de imágenes 802. Un ejemplo de bloque es el fotograma de video completo, un segmento, un ladrillo, un mosaico, un grupo de mosaicos, un árbol de codificación o cualquier otra unidad de codificación. De manera alternativa, dos copias de la misma tabla predefinida de valores límite de recorte 900 utilizada en el filtrado de bucle adaptativo se almacenan por separado en un codificador de video 20 y en un decodificador de video 30. Durante el curso de filtrado del bloque de muestras de imágenes 802, la tabla predefinida de valores límite de recorte 900 no se recibe con el fotograma de video, sino que se extrae de una memoria local que almacena previamente una o más tablas predefinidas de valores límite de recorte distintas (por ejemplo, un subconjunto o todas las tablas 900A-900C). Las muestras de imágenes 802 de un bloque comparten un conjunto de índices de valores de recorte y un señalizador de tabla de valores límite. El conjunto de índices de valores de recorte y el señalizador de tabla de valores límite se obtienen junto con el bloque de muestras de imágenes 802 en el flujo de bits, mientras que una o más tablas de valores límite de recorte se almacenan localmente. Una de las tablas de valores límite de recorte 900 se selecciona con base en el señalizador de tabla de valores límite y se aplica a la operación de recorte para filtrar cada muestra de imagen 802 en el bloque.
La tabla predefinida de valores límite de recorte 900A se representa con la siguiente fórmula:
en donde CVI es el índice de valor de recorte respectivo y CBV es el valor límite de recorte respectivo para cada una del conjunto de muestras de imágenes relacionadas 804. En algunas realizaciones, la tabla de valores límite de recorte 900A no se almacena en la memoria local, y la fórmula (2) se almacena en la misma. Para cada muestra de imagen 802, un valor límite de recorte se determina para cada muestra de imagen relacionada 804 con base en el IBDI y el índice de valor de recorte respectivo de acuerdo con la fórmula (2) predefinida para valores límite de recorte.
Los valores límite de recorte para un índice de valor de recorte de 2 son diferentes en las tablas predefinidas de valores límite de recorte 900A y 900B. La tabla predefinida de valores límite de recorte 900B se representa con la siguiente fórmula:
En algunas realizaciones, la tabla de valores límite de recorte 900B no se almacena en la memoria local, y la fórmula (3) se almacena en la misma. Para cada muestra de imagen 802, un valor límite de recorte se determina para cada muestra de imagen relacionada 804 con base en el IBDI y el índice de valor de recorte respectivo de acuerdo con la fórmula (3) predefinida para valores límite de recorte.
Los valores límite de recorte para un índice de valor de recorte de 1 son diferentes en las tablas predefinidas de valores límite de recorte 900A y 900C. La tabla predefinida de valores límite de recorte 900C se representa con la siguiente fórmula:
En algunas realizaciones, la tabla de valores límite de recorte 900C no se almacena en la memoria local, y la fórmula (4) se almacena en la misma. Para cada muestra de imagen 802, un valor límite de recorte se determina para cada muestra de imagen relacionada 804 con base en el IBDI y el índice de valor de recorte respectivo de acuerdo con la fórmula (4) predefinida para valores límite de recorte.
En algunas realizaciones, un flujo de bits incluye una pluralidad de muestras de imágenes 802 de un fotograma de video. La pluralidad de muestras de imágenes 802 incluye un subconjunto de muestras de luminancia 502A y un subconjunto de muestras de crominancia 504A. El subconjunto de muestras de luminancia 502A corresponde a un primer conjunto de índices de valores de recorte que define un índice de valor de recorte respectivo de cada una de un conjunto de muestras de luminancia relacionadas 502B en una primera longitud de filtro Li de cada muestra de luminancia 502A. El subconjunto de muestras de crominancia 504A corresponde a un segundo conjunto de índices de valores de recorte que define un índice de valor de recorte respectivo de cada una de un conjunto de muestras de crominancia relacionadas 504B en una segunda longitud de filtro L2de cada muestra de crominancia 504A. El segundo conjunto de índices de valores de recorte es distinto del primer conjunto de índices de valores de recorte. Además, en algunas realizaciones, cada conjunto del primer y segundo conjuntos de índices de valores de recorte corresponde a una fórmula o tabla de valores límite de recorte que asocia cada índice de valor de recorte en el conjunto respectivo de índices de valores de recorte con el valor límite de recorte respectivo con base en un IBDI. Además, en algunas realizaciones, la fórmula o tabla de valores límite de recorte se selecciona de una cantidad predefinida de fórmulas o tablas de valores límite de recorte. De manera alternativa, en algunas realizaciones, el primer y segundo conjuntos de índices de valores de recorte corresponden a una primera fórmula/tabla de valores límite de recorte y a una segunda fórmula/tabla de valores distinta de la primera fórmula/tabla de valores límite de recorte.
La figura 10 es una estructura de datos de un valor 1000 que se recortará para una muestra de imagen 802, de acuerdo con algunas realizaciones. La muestra de imagen 802 corresponde a una de una muestra de luminancia 502 y una muestra de crominancia 504 de un fotograma de video. En algunas realizaciones, el valor 1000 que se recortará corresponde a una diferencia de una muestra de imagen relacionada 804 y la muestra de imagen 802. El primer bit de la representación binaria del valor 1000 se define como el bit menos significativo (LSB) que suele ser el bit situado más a la derecha. Un índice de un bit aumenta en 1 comenzando desde el LSB hacia el bit más significativo (MSB) que suele ser el bit situado más a la izquierda. En algunas realizaciones, un intervalo dinámico para un recorte de una diferencia de una muestra de imagen relacionada 804 y una muestra de imagen respectiva 802 se define mediante un valor límite superior -M y un valor límite inferior M-1 de recorte, y se representa como [-M, M-1], en donde M es igual a 2'. Una operación de recorte correspondiente puede implementarse como operaciones lógicas “AND” y/u operaciones lógicas “OR” realizadas en bits que van desde el bit (i+1)th hasta el MSB. El uso de las operaciones lógicas “AND” y/o de las operaciones lógicas “OR” es más sencillo que realizar operaciones de recorte basadas en comparaciones.
En un ejemplo, suponiendo que el valor 1000 que se va a recortar se representa mediante 11 bits con un intervalo de valores de -211 a 211-1 inclusive. Los valores límite superior y límite inferior de recorte definen un intervalo dinámico de [-24, 24-1], y los bits que van desde el quinto bit hasta el MSB deben verificarse para determinar si este valor 1000 excede el intervalo dinámico definido por los valores límite superior y límite inferior. Si el valor 1000 que se va a recortar es positivo, se realiza una operación lógica “OR” en todos los bits que van desde el quinto bit hasta el MSB. Si el resultado de la operación lógica “OR” es 1, entonces el valor 1000 es mayor que 24-1 y este valor 1000 se recorta a 24-1. Si el valor 1000 que se va a recortar es negativo, se realiza una operación lógica “AND” en todos los bits que van desde el quinto bit hasta el MSB. Si el resultado de la operación lógica “AND” es 0, entonces el valor 1000 es menor que -24 y este valor 1000 se recorta a -24.
En otro ejemplo, el valor 1000 que se va a recortar se encuentra en un intervalo de valores de -16 a 15. El valor 1000 tiene cinco bits. Se utiliza un solo bit para representar el signo y cuatro bits para representar una magnitud del valor 1000. El valor límite de recorte es 4 y el intervalo dinámico para el recorte se establece como [-22, 22-1]. Si el valor de entrada 1000 es igual a 14 (el cual se binariza como 0,1110), se aplica una operación lógica “OR” al tercer y cuarto dígitos y da como resultado un valor de 1, lo cual indica que el valor de entrada 1000 excede el límite superior y, por lo tanto, se recorta al valor límite superior de 3. Si el valor de entrada 1000 es igual a 2 (b, el cual se binariza como 0,0010), se aplica una operación lógica “OR” al tercer y cuarto dígitos y da como resultado un valor de 0, lo que indica que el valor de entrada 1000 no excede el límite superior y se mantiene sin cambios. Si el valor de entrada 1000 es igual a -14 (el cual se binariza como 1,0010), se aplica una operación lógica “AND” al tercer y cuarto dígitos y da como resultado un valor de 0, lo cual indica que el valor de entrada 1000 excede el límite inferior y se establece en el valor límite inferior -4. Si el valor de entrada 1000 es igual a -2 (el cual se binariza como 1,1110), se aplica una operación lógica “AND” al tercer y cuarto dígitos y da como resultado un valor de 1, lo cual indica que el valor de entrada 1000 no excede el límite inferior y se mantiene sin cambios.
La figura 11 es un diagrama de flujo de un método de codificación de video 1100, de acuerdo con algunas realizaciones. El método de codificación de video 1100 se implementa en un dispositivo electrónico que tiene un codificador de video 20 o un decodificador de video 30. El dispositivo electrónico obtiene (1102), a partir de un flujo de bits, una pluralidad de muestras de imágenes 802 de un fotograma de video. Cada muestra de imagen 802 corresponde a una muestra de luminancia 502 y una muestra de crominancia 504. Para cada una de la pluralidad de muestras de imágenes 802, la muestra de imagen respectiva 802 se filtra (1104) con el uso de un filtro en bucle adaptativo 604 que tiene una longitud de filtro L y un conjunto de coeficientes de filtro. Específicamente, el dispositivo electrónico identifica (1106) un conjunto de muestras de imágenes relacionadas 804 en la longitud de filtro L de la muestra de imagen respectiva 802. Para cada una del conjunto de muestras de imágenes relacionadas 804, se identifica un índice de valor de recorte respectivo y un coeficiente de filtro correspondiente (1108). Una diferencia de cada una del conjunto de muestras de imágenes relacionadas 804 y la muestra de imagen respectiva 802 se recorta (1110) con base en el índice de valor de recorte respectivo. El índice de valor de recorte respectivo corresponde (1112) a un valor límite de recorte respectivo igual a 2 a una potencia de un número de recorte respectivo i, y el número de recorte respectivo i es un número entero. El dispositivo electrónico modifica (1114) la muestra de imagen respectiva 802 con la diferencia recortada de cada una del conjunto de muestras de imágenes relacionadas 804 con base en el coeficiente de filtro respectivo. El fotograma de video se reconstruye (1116) con el uso de la pluralidad de muestras de imágenes modificadas 802. En algunas realizaciones, la pluralidad de muestras de imágenes 802 forma un bloque del fotograma de video. De manera opcional, el bloque es el fotograma de video completo, un segmento, un ladrillo, un mosaico, un grupo de mosaicos, un árbol de codificación o cualquier otra unidad de codificación.
En algunas realizaciones, para cada muestra de imagen 802, se determina (1118) un IBDI de la muestra de imagen respectiva 802. Para cada una del conjunto de muestras de imágenes relacionadas 804, el dispositivo electrónico determina (1120) el valor límite de recorte respectivo con base en el IBDI y el índice de valor de recorte respectivo de acuerdo con una tabla predefinida de valores límite de recorte 900. La diferencia de cada una del conjunto de muestras de imágenes relacionadas 804 y la muestra de imagen respectiva 802 se recorta (1122) con base en el valor límite de recorte respectivo. Además, en algunas realizaciones, la tabla predefinida de valores límite de recorte 900 se obtiene con el flujo de bits. De manera alternativa, en algunas realizaciones, la tabla predefinida de valores límite de recorte 900 se extrae de una memoria local. La memoria local puede almacenar una pluralidad de tablas de valores límite de recorte (por ejemplo, un subconjunto o todas las tablas 900A-99C), la tabla predefinida de valores límite de recorte 900 se selecciona de la pluralidad de tablas de valores límite de recorte. Ejemplos de la tabla predefinida de valores límite de recorte 900 se muestran en las figuras 9A-9C.
En algunas realizaciones, para cada muestra de imagen 802, se determina un IBDI de la muestra de imagen respectiva 802. Para cada una del conjunto de muestras de imágenes relacionadas 804, el dispositivo electrónico determina el valor límite de recorte respectivo con base en el IBDI y el índice de valor de recorte respectivo de acuerdo con una fórmula predefinida de valores límite de recorte. La diferencia de cada una del conjunto de muestras de imágenes relacionadas 804 y la muestra de imagen respectiva 802 se recorta con base en el valor límite de recorte respectivo. La fórmula predefinida de valores límite de recorte se representa como una de las fórmulas (2)-(4).
En algunas realizaciones, en donde para cada una del conjunto de muestras de imágenes relacionadas, el índice de valor de recorte se selecciona de una pluralidad de números consecutivos (por ejemplo, 0, 1,2, y 3). El número de recorte respectivo i es una función de por lo menos el índice de valor de recorte, es decir, varía con el índice de valor de recorte. Además, el número de recorte respectivo i se relaciona de forma lineal con el IBDI para cada índice de valor de recorte. Por ejemplo, cuando el índice de valor de recorte es igual a 0, el número de recorte respectivo i es igual al IBDI, y cuando el índice de valor de recorte es igual a 3, el número de recorte respectivo i es igual al IBDI sustraído por 7.
En algunas realizaciones, para cada una de los conjuntos de muestras de imágenes relacionadas, la diferencia recortada de la muestra de imagen relacionada respectiva se encuentra en un intervalo de [-2', 2i-1].
En algunas realizaciones, para cada una del conjunto de muestras de imágenes relacionadas, la diferencia recortada de la muestra de imagen relacionada respectiva se encuentra en uno de una pluralidad de intervalos, incluyendo [-2^1, 2% [-2i, 2i], y [-2i+1, 2i-1].
En algunas realizaciones, recortar la diferencia de cada una del conjunto de muestras de imágenes relacionadas y la muestra de imagen respectiva incluye sólo las operaciones lógicas AND y/o las operaciones lógicas OR.
En algunas realizaciones, la pluralidad de muestras de imágenes incluye un subconjunto de muestras de luminancia 502A y un subconjunto de muestras de crominancia 504A. El subconjunto de muestras de luminancia 502A corresponde a un primer conjunto de índices de valores de recorte que define un índice de valor de recorte respectivo de cada una de un conjunto de muestras de luminancia relacionadas 502B en una primera longitud de filtro Li de cada muestra de luminancia 502A. El subconjunto de muestras de crominancia 504A corresponde a un segundo conjunto de índices de valores de recorte que define un índice de valor de recorte respectivo de cada una de un conjunto de muestras de crominancia relacionadas 504B en una segunda longitud de filtro L2de cada muestra de crominancia 504A. El segundo conjunto de índices de valores de recorte es distinto del primer conjunto de índices de valores de recorte. Además, en algunas realizaciones, cada conjunto del primer y segundo conjuntos de índices de valores de recorte corresponde a una fórmula o tabla de valores límite de recorte, la cual asocia cada índice de valor de recorte en el conjunto respectivo de índices de valores de recorte con el valor límite de recorte respectivo con base en un IBDI. Adicionalmente, en algunas realizaciones, la fórmula o tabla de valores límite de recorte que corresponde al primer o segundo conjunto de índices de valores de recorte se selecciona de una cantidad predefinida de fórmulas o tablas de valores límite de recorte. Además, en algunas realizaciones, en donde el primer y segundo conjuntos de índices de valores de recorte corresponden a una primera fórmula/tabla de valores límite de recorte y a una segunda fórmula/tabla de valores distinta de la primera fórmula/tabla de valores límite de recorte.
En uno o más ejemplos, las funciones descritas pueden implementarse en el hardware, software, firmware o en cualquier combinación de los mismos. Si se implementan en el software, las funciones pueden almacenarse o transmitirse en un medio legible por computadora, como una o más instrucciones o código, y ejecutarse a través de una unidad de procesamiento basada en hardware. Los medios legibles por computadora pueden incluir medios de almacenamiento legibles por computadora, los cuales corresponden a un medio tangible, como los medios de almacenamiento de datos, o medios de comunicación, incluido cualquier medio que facilite la transferencia de un programa de cómputo de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por computadora por lo general pueden corresponder a (1) medios de almacenamiento tangibles y legibles por computadora que no sean transitorios o (2) un medio de comunicación, tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que pueda acceder una o más computadoras o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para poner en práctica las implementaciones que se describen en la presente solicitud. Un producto de programa de cómputo puede incluir un medio legible por computadora.
La terminología utilizada en la descripción de las implementaciones contenidas en esta descripción es sólo con la finalidad de describir implementaciones específicas y no la de limitar el alcance de las reivindicaciones. Tal como se utiliza en la descripción de las implementaciones y en las reivindicaciones anexas, las formas en singular “un”, “uno”, “una,” y “el/la” tienen por objeto incluir también las formas en plural, a menos que el contexto indique claramente lo contrario. También se entenderá que el término “y/o”, en la forma utilizada en el presente documento, se refiere y abarca todas 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 utilizan en esta especificación, especifican la presencia de atributos, elementos y/o componentes señalados, pero no excluyen la presencia o la adición de uno o más atributos, elementos, componentes y/o grupos de los mismos.
También se entenderá que, aunque los términos primero, segundo, etc., pueden utilizarse en el presente documento para describir distintos elementos, esos elementos no deben limitarse por tales términos. Estos términos sólo se utilizan para hacer la distinción entre un elemento y otro. Por ejemplo, un primer electrodo podría denominarse un segundo electrodo y, de manera similar, un segundo electrodo podría denominarse un primer electrodo, sin apartarse del alcance de las implementaciones. Tanto el primer electrodo como el segundo electrodo son electrodos, pero no son el mismo electrodo.
La descripción de la presente solicitud se presenta para fines ilustrativos y descriptivos, y no tiene por objeto ser exhaustiva ni limitarse a la invención en la forma en que se describe. Diversas modificaciones, variaciones e implementaciones alternativas serán aparentes para los expertos en la técnica que tienen el beneficio de las enseñanzas presentadas en las descripciones anteriores y en los dibujos asociados. La realización se eligió y describió con el fin de explicar de la menor manera los principios de la invención y su aplicación práctica, así como para permitir que otros expertos en la técnica entiendan la invención para distintas implementaciones y para que utilicen de la mejor manera los principios subyacentes y las diversas modificaciones en la forma que sea adecuada para el uso específico contemplado. Por lo tanto, debe entenderse que el alcance de las reivindicaciones no debe limitarse a los ejemplos específicos de las implementaciones descritas y que se tiene por objeto incluir las modificaciones y otras implementaciones que se encuentren dentro del alcance de las reivindicaciones anexas.

Claims (15)

  1. REIVINDICACIONES 1. Un método para la decodificación de datos de video, el cual comprende: obtener, a partir de un flujo de bits, una pluralidad de muestras de imágenes de un fotograma de video, cada muestra de imagen corresponde a una muestra de luminancia y a una muestra de crominancia; para cada una de la pluralidad de muestras de imágenes, filtrar la muestra de imagen respectiva con el uso de un filtro en bucle adaptativo que tiene una longitud de filtro L y un conjunto de coeficientes de filtro, también incluye: identificar un conjunto de muestras de imágenes relacionadas de la muestra de imagen respectiva; para cada una del conjunto de muestras de imágenes relacionadas, identificar un índice de valor de recorte respectivo y un coeficiente de filtro correspondiente; recortar una diferencia entre cada una del conjunto de muestras de imágenes relacionadas y la muestra de imagen respectiva con base en el índice de valor de recorte respectivo, en donde el índice de valor de recorte respectivo corresponde a un valor límite de recorte respectivo igual a 2 a una potencia de un número de recorte respectivo, y modificar la muestra de imagen respectiva con la diferencia recortada entre cada una del conjunto de muestras de imágenes relacionadas y la muestra de imagen respectiva con base en el coeficiente de filtro correspondiente y reconstruir el fotograma de video usando la pluralidad de muestras de imagen modificadas caracterizado porque en todos los números de recorte respectivos que corresponden a cada índice de valor de recorte respectivo son números enteros.
  2. 2. El método de la reivindicación 1, donde para cada muestra de imagen, el recorte de la diferencia con base en el índice de valor de recorte respectivo comprende: determinar un índice de profundidad de bit interno (IBDI) de la muestra de imagen respectiva; para cada una del conjunto de muestras de imágenes relacionadas, determinar el valor límite de recorte respectivo con base en el IBDI y el índice de valor de recorte respectivo de acuerdo con una tabla predefinida de valores límite de recorte; y recortar la diferencia entre cada una del conjunto de muestras de imágenes relacionadas y la muestra de imagen respectiva con base en el valor límite de recorte respectivo.
  3. 3. El método de la reivindicación 2, que también comprende: extraer la tabla predefinida de valores límite de recorte de una memoria local.
  4. 4. El método de la reivindicación 3, donde la memoria local almacena una pluralidad de tablas de valores límite de recorte, el método que también comprende: seleccionar la tabla predefinida de valores límite de recorte de la pluralidad de tablas de valores límite de recorte.
  5. 5. El método de conformidad con la reivindicación 2, donde la tabla predefinida de valores límite de recorte se representa como una de las tres tablas siguientes:
  6. 6. El método de la reivindicación 1, donde para cada muestra de imagen, el recorte de la diferencia con base en el índice de valor de recorte respectivo comprende: determinar un índice de profundidad de bit interno (IBDI) de la muestra de imagen respectiva; para cada una del conjunto de muestras de imágenes relacionadas, determinar el valor límite de recorte respectivo con base en el IBDI y el índice de valor de recorte respectivo de acuerdo con una fórmula predefinida de valores límite de recorte; y recortar la diferencia entre cada una del conjunto de muestras de imágenes relacionadas y la muestra de imagen respectiva con base en el valor límite de recorte respectivo; en donde la fórmula predefinida de valores límite de recorte se representa como una de las siguientes fórmulas:
    en donde CVI es el índice de valor de recorte respectivo y CBV es el valor límite de recorte respectivo para cada una del conjunto de muestras de imágenes relacionadas.
  7. 7. El método de cualquiera de las reivindicaciones anteriores, donde para cada una del conjunto de muestras de imágenes relacionadas, el índice de valor de recorte se selecciona de 0, 1, 2 y 3, y el número de recorte respectivo i es una función del índice de valor de recorte y un índice de profundidad de bit interno.
  8. 8. El método de cualquiera de las reivindicaciones anteriores, donde para cada una del conjunto de muestras de imágenes relacionadas, la diferencia recortada entre la muestra de imagen relacionada respectiva y la muestra de imagen respectiva se encuentra en uno de una pluralidad de intervalos, incluyendo [-2'+1, 2i], [-2', 2i], y [-2'+1, 2'-1], en donde i es el número de recorte respectivo.
  9. 9. El método de cualquiera de las reivindicaciones anteriores, donde recortar la diferencia de cada una del conjunto de muestras de imágenes relacionadas y la muestra de imagen respectiva incluye sólo las operaciones lógicas AND y/o las operaciones lógicas OR.
  10. 10. El método de cualquiera de las reivindicaciones anteriores, donde: la pluralidad de muestras de imágenes incluye un subconjunto de muestras de luminancia y un subconjunto de muestras de crominancia; el subconjunto de muestras de luminancia corresponde a un primer conjunto de índices de valores de recorte que define un índice de valor de recorte respectivo de cada una de un conjunto de muestras de luminancia relacionadas en una primera longitud de filtro Li de cada muestra de luminancia; y el subconjunto de muestras de crominancia corresponde a un segundo conjunto de índices de valores de recorte que define un índice de valor de recorte respectivo de cada una de un conjunto de muestras de crominancia relacionadas en una segunda longitud de filtro L2de cada muestra de crominancia, el segundo conjunto de índices de valor de recorte es distinto del primer conjunto de índices de valores de recorte.
  11. 11. El método de la reivindicación 10, donde cada conjunto del primer y segundo conjuntos de índices de valores de recorte corresponde a una fórmula o tabla de valores límite de recorte que asocia cada índice de valor de recorte en el conjunto respectivo de índices de valores de recorte con el valor límite de recorte respectivo con base en un aumento de la profundidad de bits internos (IBDI).
  12. 12. El método de la reivindicación 10, donde el primer y segundo conjuntos de índices de valores de recorte corresponden a una primera fórmula/tabla de valores límite de recorte y a una segunda fórmula/tabla de valores que es distinta de la primera fórmula/tabla de valores límite de recorte.
  13. 13. Un dispositivo electrónico que comprende: uno o más procesadores; y memoria que tiene instrucciones almacenadas en la misma, que, cuando se ejecutan por el uno o más procesadores, provocan que los procesadores realicen el método de cualquiera de las reivindicaciones 1-12.
  14. 14. Un medio legible por computadora no transitorio, que tiene instrucciones almacenadas en el mismo, que cuando se ejecutan por uno o más procesadores provocan que los procesadores realicen el método de cualquiera de las reivindicaciones 1-12.
  15. 15. Un medio de almacenamiento legible por decodificador, que almacena un flujo de bits que es decodificable por cualquiera de los métodos de las reivindicaciones 1-12.
ES20906639T 2019-12-28 2020-12-28 In-loop filters for video coding Active ES2994635T3 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962954485P 2019-12-28 2019-12-28
PCT/US2020/067159 WO2021134064A1 (en) 2019-12-28 2020-12-28 In-loop filters for video coding

Publications (1)

Publication Number Publication Date
ES2994635T3 true ES2994635T3 (en) 2025-01-28

Family

ID=76575702

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20906639T Active ES2994635T3 (en) 2019-12-28 2020-12-28 In-loop filters for video coding

Country Status (13)

Country Link
US (3) US12003729B2 (es)
EP (5) EP4429243B1 (es)
JP (3) JP7336037B2 (es)
KR (2) KR102585317B1 (es)
CN (3) CN115643402B (es)
DK (1) DK4082213T3 (es)
ES (1) ES2994635T3 (es)
FI (1) FI4082213T3 (es)
HU (1) HUE068218T2 (es)
MX (5) MX2022008040A (es)
PL (1) PL4082213T3 (es)
PT (1) PT4082213T (es)
WO (1) WO2021134064A1 (es)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN120050419B (zh) * 2025-04-25 2025-07-15 马栏山音视频实验室 基于视频帧间差异的时域滤波方法、装置、设备及介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9094658B2 (en) * 2010-05-10 2015-07-28 Mediatek Inc. Method and apparatus of adaptive loop filtering
AU2015261734A1 (en) * 2015-11-30 2017-06-15 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data according to local luminance intensity
EP3297282A1 (en) * 2016-09-15 2018-03-21 Thomson Licensing Method and apparatus for video coding with adaptive clipping
WO2018105579A1 (ja) * 2016-12-09 2018-06-14 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10708592B2 (en) * 2018-04-02 2020-07-07 Qualcomm Incorporated Deblocking filter for video coding and processing
WO2020151714A1 (en) * 2019-01-25 2020-07-30 Mediatek Inc. Method and apparatus for non-linear adaptive loop filtering in video coding
CN117956147A (zh) * 2019-03-08 2024-04-30 佳能株式会社 自适应环路滤波器
GB2582029A (en) * 2019-03-08 2020-09-09 Canon Kk An adaptive loop filter
BR112021022051A2 (pt) * 2019-05-04 2021-12-28 Huawei Tech Co Ltd Codificador, decodificador e métodos correspondentes usando um filtro loop adaptativo
US11356662B2 (en) * 2019-05-21 2022-06-07 Qualcomm Incorporated Simplification of clipping value calculation for adaptive loop filters
JP6811931B2 (ja) * 2019-06-20 2021-01-13 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
CN114145019B (zh) * 2019-06-24 2023-11-10 华为技术有限公司 用于非线性自适应环路滤波器的限幅电平
BR112022005487A2 (pt) * 2019-09-23 2022-06-14 Vid Scale Inc Aparelho para processamento de vídeo, método, e, mídia legível por computador

Also Published As

Publication number Publication date
EP4429244A3 (en) 2024-11-27
KR20230145216A (ko) 2023-10-17
EP4429244B1 (en) 2026-02-04
EP4429244A2 (en) 2024-09-11
EP4429243C0 (en) 2025-11-19
CN115643402B (zh) 2023-09-19
MX2025012877A (es) 2025-12-01
JP7336037B2 (ja) 2023-08-30
EP4082213B1 (en) 2024-09-04
JP2023156469A (ja) 2023-10-24
US20220329817A1 (en) 2022-10-13
EP4429243B1 (en) 2025-11-19
EP4082213A1 (en) 2022-11-02
CN115643402A (zh) 2023-01-24
EP4082213A4 (en) 2023-06-14
KR20220114092A (ko) 2022-08-17
KR102585317B1 (ko) 2023-10-04
HUE068218T2 (hu) 2024-12-28
US12395636B2 (en) 2025-08-19
EP4429242B1 (en) 2025-11-12
US20240251085A1 (en) 2024-07-25
JP7551868B2 (ja) 2024-09-17
JP2024167388A (ja) 2024-12-03
US12003729B2 (en) 2024-06-04
MX2025012879A (es) 2025-12-01
CN118869993A (zh) 2024-10-29
EP4429242A3 (en) 2024-11-20
PT4082213T (pt) 2024-10-15
WO2021134064A1 (en) 2021-07-01
EP4429242A2 (en) 2024-09-11
FI4082213T3 (fi) 2024-09-19
JP2022552437A (ja) 2022-12-15
EP4429243A3 (en) 2024-11-20
MX2022008040A (es) 2022-08-22
US20250358423A1 (en) 2025-11-20
MX2025012880A (es) 2025-12-01
EP4429243A2 (en) 2024-09-11
DK4082213T3 (da) 2024-09-16
EP4429242C0 (en) 2025-11-12
CN115176481A (zh) 2022-10-11
MX2025012878A (es) 2025-12-01
PL4082213T3 (pl) 2025-02-24
CN118869993B (zh) 2025-11-07
EP4661403A2 (en) 2025-12-10

Similar Documents

Publication Publication Date Title
TWI761332B (zh) 從用於視訊寫碼之固定濾波器預測濾波器係數
ES2938068T3 (es) Codificador de video, decodificador de video y métodos de codificación y decodificación correspondientes
KR102578959B1 (ko) 인트라 예측 모드들의 이웃 기반의 시그널링
ES3019082T3 (en) Small chroma block size restriction in video coding
KR102465720B1 (ko) 필터링 정보의 시그널링
ES2977132T3 (es) Métodos y sistemas de restricción de bipredicción en codificación de vídeo
JP7615223B2 (ja) 映像データをエンコードするための方法、電子デバイス、非一時的なコンピュータ可読記憶媒体、ビットストリームを記憶するための方法およびコンピュータプログラム
TW201633787A (zh) 寫碼樹單元級可適性迴路濾波器
KR102697897B1 (ko) 비디오 코딩에서의 예측 모드 시그널링
WO2020214899A1 (en) Supplemental enhancement information message for embedded image
ES2994635T3 (en) In-loop filters for video coding
ES3037213T3 (en) Methods and apparatus of video decoding using palette mode
JP7401631B2 (ja) パレットモードを用いたビデオコーディングの方法および装置