ES2866894T3 - Predicción de coeficientes de filtro a partir de filtros fijos para codificación de video - Google Patents

Predicción de coeficientes de filtro a partir de filtros fijos para codificación de video Download PDF

Info

Publication number
ES2866894T3
ES2866894T3 ES17708064T ES17708064T ES2866894T3 ES 2866894 T3 ES2866894 T3 ES 2866894T3 ES 17708064 T ES17708064 T ES 17708064T ES 17708064 T ES17708064 T ES 17708064T ES 2866894 T3 ES2866894 T3 ES 2866894T3
Authority
ES
Spain
Prior art keywords
filter
class
block
fixed
filter coefficients
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
ES17708064T
Other languages
English (en)
Inventor
Marta Karczewicz
Wei-Jung Chien
Li Zhang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2866894T3 publication Critical patent/ES2866894T3/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/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/136Incoming video signal characteristics or properties
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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
    • 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
    • G06T5/70
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence

Abstract

Un método para filtrar un bloque decodificado de datos de video, el método comprende: asignar un conjunto de n filtros fijos a cada clase de una pluralidad de clases de bloques de una imagen actual de datos de video, en donde se usa un filtro fijo para predecir los coeficientes de filtro de un filtro que se aplicará a un bloque decodificado de datos de video; para cada clase que usa un filtro fijo, seleccionar (196) un filtro fijo del conjunto de n filtros fijos, en donde se selecciona un primer filtro fijo para una primera clase, y un segundo filtro fijo, diferente del primer filtro fijo, se selecciona para una segunda clase; para cada clase que usa un filtro fijo, generar el conjunto de coeficientes de filtro que se aplicarán a un bloque decodificado de datos de video de la clase, mediante la adición de coeficientes de filtro del filtro fijo seleccionado a un conjunto de coeficientes de filtro señalizados para la clase, en donde se usa un conjunto común de coeficientes de filtro señalizados para al menos la primera clase y la segunda clase; decodificar un bloque actual de una imagen actual de los datos de video; determinar (198) una clase para el bloque actual; seleccionar un conjunto generado de coeficientes de filtro que corresponda a la clase del bloque actual; y filtrar (200) al menos un píxel del bloque actual usando el conjunto seleccionado de coeficientes de filtro.

Description

DESCRIPCIÓN
Predicción de coeficientes de filtro a partir de filtros fijos para codificación de video
CAMPO TÉCNICO
La presente divulgación se refiere a la codificación de video.
ANTECEDENTES
Las capacidades de video digital se pueden incorporar en una amplia gama de dispositivos, incluidos televisores digitales, sistemas de transmisión directa digital, sistemas de transmisión inalámbrica, asistentes digitales personales (PDA), computadoras portátiles o de escritorio, tabletas, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos móviles o por satélite, los denominados "teléfonos inteligentes", dispositivos de video teleconferencia, dispositivos de transmisión de video y similares. Los dispositivos de video digital implementan técnicas de compresión de video, como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de video avanzada (AVC), el estándar ITU-T H.265 de codificación de video de alta eficiencia (HEVC) finalizado recientemente, y extensiones de dichos estándares. Los dispositivos de video pueden transmitir, recibir, codificar, decodificar y/o almacenar información de video digital de manera más eficiente implementando tales técnicas de compresión de video.
Las técnicas de compresión de video realizan predicciones espaciales (intraimagen) y/o predicciones temporales (interimagen) para reducir o eliminar la redundancia inherente a las secuencias de video. Para la codificación de video basada en bloques, un segmento de video (es decir, un fotograma de video o una parte de un fotograma de video) se puede dividir en bloques de video, que también pueden denominarse bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de video en un segmento intracodificado (I) de una imagen se codifican utilizando la predicción espacial con respecto a las muestras de referencia en los bloques vecinos en la misma imagen. Los bloques de video en un segmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse fotogramas y las imágenes de referencia pueden denominarse fotogramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para la codificación de un bloque. Los datos residuales representan las diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Un bloque intercodificado se codifica según un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica según un modo de intracodificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse del dominio de píxeles a un dominio de transformación, lo que resulta en coeficientes de transformación residuales, que luego pueden cuantificarse. Los coeficientes de transformación cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden escanear para producir un vector unidimensional de coeficientes de transformación, y se puede aplicar codificación entrópica para lograr una compresión aún mayor. Karcewicz M et al, en "Study of coding efficiency improvements beyond HEVC', 113. MPEG MEETING; 19-10-2015 - 23-10-2015; GENEVA; (GRUPO DE EXPERTOS EN IMAGEN MOVIMIENTO O ISO/IEC JTC1/SC29/WG11), (20151015), n. ° m37102, divulgan un filtro de bucle adaptativo. Véase también "Algorithm Description of Joint Exploration Test Model 1 (JEM1)", 113. MPEG MEETING; 19-10-2015 - 23-10-2015; GENEVA; (GRUPO DE EXPERTOS EN IMAGEN MOVIMIENTO O ISO/IEC JTC1/SC29/WG11), (20151211), n. ° N15790.
El documento EP2584781 también divulga un filtro adaptativo. Ehsan Maani ET AL en "Parametric Adaptive Loop Filter', 5. JCT- VC MEETING; 96. MPEG MEETING; 16-3-2011 - 23-3-2011; GENEVA;(JOINT COLLABORATIVE TEAM ON VIDEO CODING OF ISO/IEC JTC1/SC29/WG11AND ITU-T SG.16), n. ° JCTVC-E320, ISSN 0000-0005 proporcionan una breve descripción y resultados del filtro de bucle adaptativo paramétrico.
El documento EP2048886 divulga un método para emplear un filtro de interpolación adaptativo.
SUMARIO
En general, esta divulgación describe técnicas relacionadas con el filtrado, como el filtrado de bucle adaptativo (ALF). En particular, varias técnicas para generar filtros para diferentes clases de bloques de datos de video pueden ser realizadas por un codificador de video, como un codificador de video o un decodificador de video. En un ejemplo, el codificador de video puede construir múltiples conjuntos de coeficientes de filtro e índices de código en los conjuntos de coeficientes de filtro para varias clases de bloques, donde cada índice identifica el conjunto de coeficientes de filtro para la clase de bloques correspondiente. En otro ejemplo, el codificador de video puede generar un filtro para una clase de bloques usando un conjunto de coeficientes de filtro de un filtro previamente generado y aplicando una transformación geométrica (como una rotación, un giro vertical o un giro diagonal) a una región de soporte de filtro o a los propios coeficientes del filtro. En otro ejemplo más, el codificador de video puede predecir coeficientes de filtro para una clase de bloques a partir de un filtro fijo o un filtro de una imagen previamente codificada.
En las reivindicaciones independientes adjuntas se define un método para filtrar un bloque decodificado de datos de video y un dispositivo para filtrar un bloque decodificado de datos de video.
En otro ejemplo, un medio de almacenamiento legible por ordenador (como un medio de almacenamiento legible por ordenador no transitorio) que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que un procesador ejecute el método definido en las reivindicaciones del método también definido en el reivindicaciones adjuntas.
Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la siguiente descripción.
Otras características, objetos y ventajas serán evidentes a partir de la descripción, dibujos y reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La figura 1 es un diagrama esquemático que ilustra un ejemplo de sistema de codificación y decodificación de video que puede utilizar las técnicas descritas en esta divulgación.
La figura 2 es un diagrama conceptual que ilustra un mapeo de rangos para una métrica de actividad y una métrica de dirección para filtros.
La figura 3 es un diagrama conceptual que ilustra un patrón de ejemplo para señalizar diferencias de coeficientes de filtro.
La figura 4 es un diagrama esquemático que ilustra un ejemplo de codificador de video que puede implementar las técnicas descritas en esta divulgación.
La figura 5 es un diagrama esquemático que ilustra un ejemplo de decodificador de video que puede implementar las técnicas descritas en esta divulgación.
La figura 6 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un codificador de video (por ejemplo, durante un proceso de codificación de video).
La figura 7 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un decodificador de video (por ejemplo, durante un proceso de decodificación de video).
La figura 8 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un codificador de video (por ejemplo, durante un proceso de codificación de video).
La figura 9 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un decodificador de video (por ejemplo, durante un proceso de decodificación de video).
La figura 10 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un codificador de video (por ejemplo, durante un proceso de codificación de video).
La figura 11 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un decodificador de video (por ejemplo, durante un proceso de decodificación de video).
DESCRIPCIÓN DETALLADA
En un codificador de video típico, el fotograma de una secuencia de video original se divide en regiones o bloques rectangulares, que se codifican en intramodo (modo I) o intermodo (modo P). Los bloques se codifican mediante algún tipo de codificación de transformación, como la codificación DCT. Sin embargo, la codificación basada en transformada pura solo reduce la correlación interpíxel dentro de un bloque en particular, sin considerar la correlación interbloque de píxeles, y todavía produce altas tasas de transmisión de bits. Los estándares actuales de codificación de imágenes digitales también aprovechan ciertos métodos que reducen la correlación de valores de píxeles entre bloques. Como se aclarará en la siguiente descripción, el término codificación de video puede usarse en esta divulgación para referirse genéricamente a la codificación de video o a la decodificación de video.
En general, los bloques codificados en modo P se predicen a partir de uno de los fotogramas previamente codificados y transmitidos. La información de predicción de un bloque se representa mediante un vector de movimiento bidimensional (2D). Para los bloques codificados en modo I, el bloque predicho se forma utilizando la predicción espacial de bloques vecinos ya codificados dentro del mismo fotograma. El error de predicción, es decir, la diferencia entre el bloque que se codifica y el bloque predicho, se representa como un conjunto de funciones de base ponderadas de alguna transformada discreta. La transformación se realiza normalmente en bloques de 8x8 o 4x4. Los pesos, coeficientes de transformación, se cuantifican posteriormente. La cuantificación introduce pérdida de información y, por lo tanto, los coeficientes cuantificados tienen menor precisión que los originales.
Los coeficientes de transformación cuantificados, junto con los vectores de movimiento y cierta información de control, forman una representación de secuencia codificada completa y se denominan elementos de sintaxis. Antes de la transmisión desde el codificador al decodificador, los elementos de sintaxis se codifican en entropía para reducir aún más el número de bits utilizados para representar los elementos de sintaxis.
En el decodificador, el bloque en el fotograma actual se obtiene construyendo primero su predicción de la misma manera que en el codificador y agregando a la predicción el error de predicción comprimido. El error de predicción comprimido se encuentra ponderando las funciones de la base de transformación utilizando los coeficientes cuantificados. La diferencia entre el fotograma reconstruido y el fotograma original se denomina error de reconstrucción.
Para mejorar aún más la calidad del video decodificado, un decodificador de video puede realizar una o más operaciones de filtrado en los bloques de video reconstruidos. Ejemplos de estas operaciones de filtrado incluyen filtrado de desbloqueo, filtrado de desplazamiento adaptativo de muestra (SAO) y filtrado de bucle adaptativo (a Lf ). Los parámetros para estas operaciones de filtrado pueden ser determinados por un codificador de video y señalizados explícitamente en el flujo de bits de video codificado o pueden ser determinados implícitamente por un decodificador de video.
Esta divulgación describe técnicas asociadas con el filtrado de datos de video reconstruidos en un proceso de codificación de video y/o decodificación de video y, más particularmente, esta divulgación describe técnicas relacionadas con ALF. Según esta divulgación, el filtrado se aplica en un codificador y la información del filtro se codifica en el flujo de bits para permitir que un decodificador identifique el filtrado que se aplicó en el codificador. El codificador de video puede analizar varios escenarios de filtrado diferentes y, en base a un análisis de distorsión de velocidad, elegir un filtro o un conjunto de filtros que produzca un equilibrio deseado entre la calidad del video reconstruido y la calidad de compresión. El decodificador de video recibe datos de video codificados que incluyen la información del filtro, decodifica los datos de video y aplica el filtrado en base a la información de filtrado. De esta manera, el decodificador de video aplica el mismo filtrado que se aplicó en el codificador de video.
En esta divulgación, el término "filtro" generalmente se refiere a un conjunto de coeficientes del filtro. Por ejemplo, un filtro de 3x3 puede definirse mediante un conjunto de 9 coeficientes del filtro, un filtro de 5x5 puede definirse mediante un conjunto de 25 coeficientes del filtro, un filtro de 9x5 puede definirse mediante un conjunto de 45 coeficientes del filtro, etc. El término "conjunto de filtros" generalmente se refiere a un grupo de más de un filtro. Por ejemplo, un conjunto de dos filtros de 3x3 podría incluir un primer conjunto de 9 coeficientes de filtro y un segundo conjunto de 9 coeficientes del filtro. El término "forma", a veces llamado "soporte de filtro", generalmente se refiere al número de filas de coeficientes del filtro y al número de columnas de coeficientes del filtro para un filtro en particular. Por ejemplo, 9x9 es un ejemplo de una primera forma, 7x5 es un ejemplo de una segunda forma y 5x9 es un ejemplo de una tercera forma. En algunos casos, los filtros pueden adoptar formas no rectangulares, incluidas formas de diamante, formas similares a diamantes, formas circulares, formas similares a un círculo, formas hexagonales, formas octogonales, formas de cruz, formas de X, formas de T, otras formas geométricas, o muchas otras formas o configuraciones. En este caso, para los soportes de filtro no rectangulares, el número de coeficientes del filtro puede ser diferente. Por ejemplo, para un soporte de filtro de diamante de 9x9, el filtro de diamante de 9x9 puede definirse mediante un conjunto de coeficientes de filtro (9x9/4+1).
La figura 1 es un diagrama esquemático que ilustra un ejemplo de sistema de codificación y decodificación de video 10 que puede implementar las técnicas descritas en esta divulgación. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que genera datos de video codificados para ser decodificados en un momento posterior por un dispositivo de destino 14. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, que incluyen ordenadores de escritorio, ordenadores portátiles (es decir, computadoras portátiles), tabletas, decodificadores, aparato telefónico con microteléfono como los denominados teléfonos "inteligentes", los denominadas teclados "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de video o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para comunicación inalámbrica.
El dispositivo de destino 14 puede recibir los datos de video codificados para decodificarlos a través de un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo capaz de mover los datos de video codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo de origen 12 transmita 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 14 de destino. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o cableada, 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, como una red de área local, una red de área amplia o una red global como Internet. El medio de comunicación puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
Alternativamente, los datos codificados pueden salir desde la interfaz de salida 22 a un dispositivo de almacenamiento 26. De manera similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento 26 mediante la interfaz de entrada. El dispositivo de almacenamiento 26 puede incluir cualquiera de una variedad de medios de almacenamiento de datos distribuidos o de acceso local, como un disco duro, discos Bluray, 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 un ejemplo adicional, el dispositivo de almacenamiento 26 puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede contener el video codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a los datos de video almacenados desde el dispositivo de almacenamiento 26 mediante transmisión o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de video codificados y transmitir esos datos de video codificados al dispositivo de destino 14. Ejemplos de los servidores de archivos 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, incluida una conexión a Internet. Puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión por cable (por ejemplo, DSL, módem por cable, etc.) o una combinación de ambos que sea adecuada para acceder a datos de video codificados almacenados en un servidor de archivos. La transmisión de datos de video codificados desde el dispositivo de almacenamiento 26 puede ser una transmisión en streaming, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no se limitan necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de video para respaldar cualquiera de una variedad de aplicaciones multimedia, como transmisiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de video en streaming, por ejemplo, a través de Internet, codificación de video digital para almacenamiento en un medio de almacenamiento de datos, decodificación de video digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para admitir transmisión de video unidireccional o bidireccional para admitir aplicaciones tales como transmisión de video, reproducción de video, difusión de video y/o telefonía de video.
En el ejemplo de 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. En algunos casos, la interfaz de salida 22 puede incluir un modulador/demodulador (módem) y/o un transmisor. En el dispositivo de origen 12, 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 contiene video capturado previamente, una interfaz de alimentación de video para recibir videos de un proveedor de contenido de videos y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el video de origen, o una combinación de tales fuentes. Como ejemplo, si la fuente de video 18 es una cámara de video, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de video en general, y pueden aplicarse a aplicaciones inalámbricas y/o cableadas.
El video capturado, precapturado o generado por ordenador puede ser codificado por el codificador de video 20. Los datos de video codificados pueden transmitirse directamente al dispositivo de destino 14 a través de la interfaz de salida 22 del dispositivo de origen 12. Los datos de video codificados también pueden (o alternativamente) almacenarse en el dispositivo de almacenamiento 26 para un acceso posterior por el dispositivo de destino 14 u otros dispositivos, para la decodificación y/o reproducción.
El dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de video 30 y un dispositivo de visualización 32. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 recibe 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 26, pueden incluir una variedad de elementos de sintaxis generados por el codificador de video 20 para su uso por un decodificador de video, como el decodificador de video 30, al decodificar los datos de video. Tales elementos de sintaxis pueden incluirse con los datos de video codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos.
El dispositivo de visualización 32 puede estar integrado o ser externo al dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interactuar con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino puede ser un dispositivo de visualización 14. En general, el dispositivo de visualización 32 muestra los datos de video decodificados a un usuario y puede comprender cualquiera de una variedad 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ánica (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 un estándar de compresión de video, como el estándar de codificación de video de alta eficiencia (HEVC) recientemente finalizado, y pueden ajustarse al modelo de prueba de HEVC (HM). Alternativamente, el codificador de video 20 y el decodificador de video 30 pueden operar de acuerdo con otros estándares de propiedad o de la industria, como el estándar ITU-T H.264, también conocido como MPEG-4, Parte 10, Codificación de video avanzada (AVC) o extensiones de tales estándares. Las técnicas de esta divulgación, sin embargo, no se limitan a ningún estándar de codificación particular. Otros ejemplos de estándares de compresión de video incluyen MPEG-2 e ITU-T H.263.
Las técnicas de esta divulgación pueden utilizar terminología de HEVC para facilitar la explicación. Sin embargo, no se debe suponer que las técnicas de esta divulgación están limitadas a HEVC y, de hecho, se contempla explícitamente que las técnicas de esta divulgación pueden implementarse en estándares sucesores de HEVC y sus extensiones.
Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de video 20 y el decodificador de video 30 pueden estar integrados cada uno con un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro hardware y software, para manejar la codificación de audio y video en un flujo de datos común o flujos de datos separados. Si corresponde, en algunos ejemplos, las unidades MUX-DEMUx pueden ajustarse al protocolo multiplexor ITU H.223 u otros protocolos como el protocolo de datagramas de usuario (UDP).
El codificador de video 20 y el decodificador de video 30 pueden implementarse cada uno como cualquiera de una variedad de circuitos de codificador adecuados, como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador adecuado y no transitorio y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada codificador de video 20 y descodificador de video 30 se puede incluir 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.
Como se presentó anteriormente, el JCT-VC ha finalizado recientemente el desarrollo del estándar de HEVC. Los esfuerzos de estandarización de HEVC se basaron en un modelo en evolución de un dispositivo de codificación de video denominado modelo de prueba de HEVC (HM). El HM presupone varias capacidades adicionales de los dispositivos de codificación de video en relación con los dispositivos existentes según, por ejemplo, ITU-T H.264/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación intrapredicción, e1HM puede proporcionar hasta treinta y cinco modos de codificación intra-predicción.
En HEVC y otras especificaciones de codificación de video, una secuencia de video generalmente incluye una serie de imágenes. Las imágenes también pueden denominarse "fotogramas". Una imagen puede incluir tres matrices de muestra, denominadas SL, Scb y Scr. SL es una matriz bidimensional (es decir, un bloque) de muestras de luminancia. Scb es una matriz bidimensional de muestras de crominancia Cb. Scr es una matriz bidimensional de muestras de crominancia Cr. Las muestras de crominancia también pueden denominarse en la presente muestras de "croma". En otros casos, una imagen puede ser monocromática y solo puede incluir una matriz de muestras de luminancia.
Para generar una representación codificada de una imagen, el codificador de video 20 puede generar un conjunto de unidades de árbol de codificación (CTU). Cada una de las CTU puede comprender un bloque de árbol de codificación de muestras de luminancia, dos bloques de árbol de codificación correspondientes de muestras de croma y estructuras de sintaxis utilizadas para codificar las muestras de los bloques de árbol de codificación. En imágenes monocromas o imágenes que tienen tres planos de color separados, una CTU puede comprender un único bloque de árbol de codificación y estructuras de sintaxis utilizadas para codificar las muestras del bloque de árbol de codificación. Un bloque de árbol de codificación puede ser un bloque NxN de muestras. Una CTU también puede denominarse "bloque de árbol" o "unidad de codificación más grande" (LCU). Las CTU de HEVC pueden ser ampliamente análogas a los macrobloques de otros estándares, como H.264/AVC. Sin embargo, una CTU no está necesariamente limitada a un tamaño particular y puede incluir una o más unidades de codificación (CU). Un segmento puede incluir un número entero de CTU ordenadas consecutivamente en un orden de escaneo ráster.
Para generar una CTU codificada, el codificador de video 20 puede realizar de forma recursiva una partición de cuatro árboles en los bloques de árbol de codificación de una CTU para dividir los bloques de árbol de codificación en bloques de codificación, de ahí el nombre "unidades de árbol de codificación". Un bloque de codificación puede ser un bloque NxN de muestras. Una CU puede comprender un bloque de codificación de muestras de luminancia y dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene una matriz de muestras de luminancia, una matriz de muestras de Cb y una matriz de muestras de Cr, y estructuras de sintaxis utilizadas para codificar las muestras de los bloques de codificación. En imágenes monocromas o imágenes que tienen tres planos de color separados, una CU puede comprender un único bloque de codificación y estructuras de sintaxis utilizadas para codificar las muestras del bloque de codificación.
El codificador de video 20 puede dividir un bloque de codificación de una CU en uno o más bloques de predicción. Un bloque de predicción es un bloque rectangular de muestras (es decir, cuadrado o no cuadrado) en el que se aplica la misma 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 croma y estructuras de sintaxis utilizadas para predecir los bloques de predicción. En imágenes monocromas o imágenes que tienen tres planos de color separados, 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 de predicción 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 usar intrapredicción o interpredicción para generar los bloques predictivos para una PU. Si el codificador 20 de video usa intrapredicción para generar los bloques predictivos de una PU, el codificador 20 de video puede generar los bloques predictivos de la PU basándose en muestras decodificadas de la imagen asociada con la PU. Si el codificador de video 20 usa 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 basándose en muestras decodificadas de una o más imágenes distintas de la imagen asociada con la PU.
Después de que el codificador de video 20 genera bloques de predicción 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. Cada muestra en el bloque residual de luminancia de la CU indica una diferencia entre una muestra de luminancia en uno de los bloques de luminancia predictivos de la CU y una muestra correspondiente en el bloque de codificación de luminancia original de la CU. Además, el codificador de video 20 puede generar un bloque residual de Cb para la CU. Cada muestra en el bloque residual de Cb de la CU puede indicar una diferencia entre una muestra de Cb en uno de los bloques de Cb predictivos de la CU y una muestra correspondiente en el bloque de codificación de Cb original de la CU. El codificador de video 20 también puede generar un bloque residual de Cr para la CU. 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 de Cr predictivos de la CU y una muestra correspondiente en el bloque de codificación de Cr original de la CU.
Además, el codificador de video 20 puede utilizar la división de cuatro árboles para descomponer los bloques residuales de luminancia, Cb y Cr de una CU en uno o más bloques de transformación de luminancia, Cb y Cr. Un bloque de transformación es un bloque rectangular de muestras (por ejemplo, cuadrado o no cuadrado) en el que se aplica la misma transformación. Una unidad de transformación (TU) de una CU puede comprender un bloque de transformación de muestras de luminancia, dos bloques de transformación correspondientes de muestras de croma y estructuras de sintaxis utilizadas para transformar las muestras de bloques de transformación. Por lo tanto, cada TU de una CU puede asociarse con un bloque de transformación de luminancia, un bloque de transformación de Cb y un bloque de transformación de Cr. El bloque de transformación de luminancia asociado con la TU puede ser un sub-bloque del bloque residual de luminancia de la CU. El bloque de transformación de Cb puede ser un sub-bloque del bloque residual de Cb de la CU. El bloque de transformación de Cr puede ser un sub-bloque del bloque residual de Cr de la CU. En imágenes monocromas o imágenes que tienen tres planos de color separados, una TU puede comprender un solo bloque de transformación y estructuras de sintaxis utilizadas para transformar las muestras del bloque de transformación.
El codificador de video 20 puede aplicar una o más transformaciones a un bloque de transformación de luminancia de una TU para generar un bloque de coeficiente de luminancia para la TU. Un bloque de coeficiente puede ser una matriz bidimensional de coeficientes de transformación. Un coeficiente de transformación puede ser una cantidad escalar. El codificador de video 20 puede aplicar una o más transformaciones a un bloque de transformación de Cb de una TU para generar un bloque de coeficiente de Cb para la TU. El codificador de video 20 puede aplicar una o más transformaciones a un bloque de transformación de Cr de una TU para generar un bloque de coeficiente de Cr para la TU.
Después de generar un bloque de coeficiente (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 coeficiente. La cuantificación generalmente se refiere a un proceso en el que los coeficientes de transformación se cuantifican para posiblemente reducir la cantidad de datos utilizados para representar los coeficientes de transformación, proporcionando una mayor compresión. Después de que el codificador de video 20 cuantifica un bloque de coeficientes, el codificador de video 20 puede codificar con entropía los elementos de sintaxis que indican los coeficientes de transformación cuantificados. Por ejemplo, el codificador de video 20 puede realizar una codificación aritmética binaria adaptada al contexto (CABAC) en los elementos de sintaxis que indican los coeficientes de transformación cuantificados.
El codificador de video 20 puede generar un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas y datos asociados. El flujo de bits puede comprender una secuencia de unidades de NAL. Una unidad de NAL es una estructura de sintaxis que contiene una indicación del tipo de datos en la unidad de NAL y bytes que contienen esos datos en forma de RBSP intercalados según sea necesario con bits de prevención de emulación. Cada una de las unidades de NAL incluye un encabezado de unidad de NAL y encapsula un RBSP. El encabezado de la unidad de NAL puede incluir un elemento de sintaxis que indica un código de tipo de unidad de NAL. El código de tipo de unidad de NAL especificado por el encabezado de unidad de NAL de una unidad de NAL indica el tipo de unidad de NAL. Una RBSP puede ser una estructura de sintaxis que contiene un número entero de bytes que está encapsulado dentro de una unidad de NAL. En algunos casos, una RBSP incluye cero bits.
Los diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una RBSP para un PPS, un segundo tipo de unidad de NAL puede encapsular una RBSP para un segmento codificado, un tercer tipo de unidad de NAL puede encapsular una RBSP para mensajes s Ei, y así sucesivamente. Las unidades de NAL que encapsulan las RBSP para datos de codificación de video (a diferencia de las RBSP para conjuntos de parámetros y mensajes SEI) pueden denominarse unidades de NAL de VCL.
El decodificador de video 30 puede recibir un flujo de bits generado por el codificador de video 20. Además, el decodificador de video 30 puede analizar el flujo de bits para obtener elementos de sintaxis del flujo de bits. El descodificador de video 30 puede reconstruir las imágenes de los datos de video basándose, al menos en parte, en los elementos de sintaxis obtenidos del flujo de bits. El proceso para reconstruir los datos de video puede ser generalmente recíproco al proceso realizado por el codificador de video 20. Además, el decodificador de video 30 puede cuantificar de forma inversa los bloques de coeficientes asociados con las TU de una CU actual. El decodificador de video 30 puede realizar transformaciones inversas en los bloques de coeficientes para reconstruir bloques de transformación asociados con las TU de la CU actual. El decodificador de video 30 puede reconstruir los bloques de codificación de la CU actual añadiendo las muestras de los bloques predictivos para las PU de la CU actual a las muestras correspondientes de los bloques de transformación de las Tu de la CU actual. Al reconstruir los bloques de codificación para cada CU de una imagen, el decodificador de video 30 puede reconstruir la imagen.
En el campo de la codificación de video, es común aplicar filtros para mejorar la calidad de una señal de video decodificada. El filtro se puede aplicar como posfiltro, donde el fotograma filtrado no se usa predecir fotogramas futuros, o como un filtro en bucle, donde el fotograma filtrado puede usarse para predecir fotogramas futuros. Se puede diseñar un filtro, por ejemplo, minimizando el error entre la señal original y la señal filtrada decodificada. De manera similar a los coeficientes de transformación, los coeficientes del filtro h(k, l), k = -K, ..., K, l = -K, ... K puede cuantificarse
Figure imgf000008_0001
codificarse, y enviarse al decodificador. normFactor suele ser igual a 2n. Cuanto mayor sea el valor de normFactor, más precisa es la cuantificación, lo que normalmente da como resultado que los coeficientes de filtro cuantificados f(k, l) proporcionen un mejor rendimiento. Por otro lado, los valores más grandes de normFactor suelen producir coeficientes f(k, l) que requieren más bits para transmitir.
En el decodificador, los coeficientes de filtro decodificados f(k, l) se aplican a la imagen reconstruida R(i,j) de la siguiente manera
R(.i,D = l k = - K?<i=-Kf(k>0R(i k , j 0 / l L - f c 2 í= - t f / ( M ) (i)
donde i y j son las coordenadas de los píxeles dentro del fotograma.
ALF se propuso en HEVC y se incluyó en varios borradores de trabajo y software de modelo de prueba, es decir, el modelo de prueba de HEVC (o "Hm "), aunque ALF no está incluido en la versión final de HEVC. Entre las tecnologías relacionadas, el diseño de filtro en el modelo de prueba de HEVC versión HM-3.0 fue generalmente considerado como el diseño más eficiente.
El ALF en HM-3.0 se basa en la optimización del nivel de imagen. Es decir, los coeficientes de filtro se derivan después de codificar
la totalidad de un fotograma. Hubo dos modos para el componente de luminancia, adaptación basada en bloques (BA) y adaptación basada en regiones (RA). Estos dos modos comparten las mismas formas de filtro y operaciones de filtrado, así como elementos de sintaxis. La única diferencia entre ellos es el método de clasificación.
El filtrado de bucle adaptativo (ALF) con adaptación basada en bloques en HM-3.0 es un ejemplo de un filtro en bucle. En ALF para el componente de luminancia, los bloques de 4x4 en la imagen completa se clasifican en función de una direccionalidad (hasta 3 direcciones) del bloque y una actividad laplaciana 2D (hasta 5 valores de actividad) del bloque bajo el supuesto de que debería haber diferentes filtros para las regiones de la imagen que tienen diferentes características. El cálculo de la direccionalidad D y la actividad A no cuantificada se muestra en las ecuaciones (2) a (5):
Figure imgf000009_0001
donde R(i,j) indica un píxel reconstruido con coordenada relativa (i,j) en la parte superior izquierda de un bloque de 4x4. A se cuantifica además en el rango de 0 a 4 inclusive, como se describe en HM-3.0, y el valor cuantificado de A se indicará como Á.
En total, cada bloque se puede clasificar en una de 15 (5x3) clases y se asigna un índice a cada bloque de 4x4 según el valor de D y Á del bloque: 5D Á. Por lo tanto, se podrían señalar hasta 15 conjuntos de parámetros de ALF para el componente de luminancia de una imagen. Para ahorrar el costo de señalización, las clases se pueden fusionar a lo largo del valor del índice de clase. Para cada clase (o clase fusionada), se puede señalar un conjunto de coeficientes de filtro. Además, en HM-3.0, se señaliza una bandera en un nivel de CU para indicar si se aplica ALF a la CU.
Según las técnicas de esta divulgación, un dispositivo de codificación de video (tal como un codificador de video 20 o un decodificador de video 30) puede realizar el filtrado de datos de video decodificados. Tenga en cuenta que la unidad para señalizar los coeficientes de filtro puede ser una imagen/fotograma, un segmento, un mosaico u otros. Para simplificar, las siguientes descripciones tratan principalmente la unidad como una imagen. Sin embargo, las técnicas de esta divulgación no se limitan a la señalización de ALF a nivel de imagen. Como se analiza con mayor detalle a continuación, después de que el codificador de video 20 codifica una imagen de datos de video, el codificador de video 20 puede decodificar posteriormente la imagen, por ejemplo, para utilizarla como imagen de referencia. De esta manera, el codificador de video 20 codifica y decodifica datos de video. El codificador de video 20 y el decodificador de video 30 pueden realizar un filtrado como un proceso de filtrado "en bucle", aplicando ALF a imágenes decodificadas que se utilizan posteriormente como imágenes de referencia para imágenes codificadas y/o decodificadas posteriormente. Las descripciones en esta divulgación de un "codificador de video" deben entenderse como descripciones de un codificador de video, como el codificador de video 20, y un decodificador de video, como el decodificador de video 30.
Según las técnicas de esta divulgación, un codificador de video (tal como un codificador de video 20 y/o un decodificador de video 30) puede construir filtros para varias clases de bloques. El codificador de video puede clasificar un bloque basándose, por ejemplo, en la direccionalidad de un gradiente calculado a partir de los píxeles del bloque. El codificador de video puede calcular uno o más de un gradiente de dirección horizontal, un gradiente de dirección vertical, un gradiente de dirección diagonal de 45 grados o un gradiente de dirección diagonal de 135 grados. En general, el codificador de video puede construir un filtro diferente para cada clase de bloque. Sin embargo, en algunos casos, el codificador de video puede calcular un conjunto de coeficientes de filtro usados por dos o más clases de bloques. Por ejemplo, el codificador de video puede calcular una pluralidad de conjuntos de coeficientes de filtro. El codificador de video puede codificar además un índice para cada una de las clases de bloques (o un subconjunto de las clases de bloques) identificando un conjunto de coeficientes de filtro en la pluralidad de conjuntos de coeficientes de filtro. Por lo tanto, en el caso de que el codificador de video codifique el mismo índice para dos o más clases de bloques, esas clases de bloques utilizarán el mismo conjunto de coeficientes de filtro, es decir, el conjunto de coeficientes de filtro correspondiente al valor del índice codificado.
De manera adicional o alternativa, el codificador de video puede indicar que, para al menos una clase de bloques, el filtro se generará usando el mismo filtro, pero con una transformación geométrica aplicada a una región de soporte de filtro del filtro o los coeficientes de filtro. Por lo tanto, incluso para bloques con el mismo índice de clase, el soporte del filtro puede ser diferente debido a transformaciones geométricas. De manera funcional, la aplicación de la transformada geométrica a la región de soporte del filtro produce los mismos resultados matemáticos que la aplicación de la transformada geométrica a los coeficientes de filtro y, por lo tanto, el codificador de video puede aplicar la transformada geométrica a la región de soporte del filtro o los coeficientes de filtro. En este ejemplo, el codificador de video puede codificar, para una clase de bloque actual, datos que identifican un tipo de transformada geométrica (por ejemplo, una rotación, un giro diagonal, un giro vertical o una transformada no geométrica), así como un filtro previamente construido cuyos coeficientes de filtro se van a utilizar para un filtro generado para la clase de bloque actual.
De manera adicional o alternativa, el codificador de video puede codificar un valor (por ejemplo, de una bandera) que indica si se usa al menos un filtro fijo para predecir coeficientes de filtro para una clase de bloque. Es decir, la bandera puede indicar, por ejemplo, que los coeficientes de filtro para un filtro de una clase de bloque se predicen a partir de un filtro fijo o, en cambio, se predicen (o heredan) de filtros de una imagen previamente codificada o sin predicción de un filtro fijo o filtros de imágenes previamente codificadas. En algunos ejemplos, el codificador de video puede configurarse con una pluralidad de filtros fijos para cada clase de bloque. En tales ejemplos, el codificador de video puede codificar adicionalmente un índice en la pluralidad de filtros fijos, identificando uno de la pluralidad de filtros fijos que se utilizará para predecir los coeficientes de filtro de un filtro actual para la clase de bloque, cuando el valor indica que los coeficientes de filtro se predicen a partir de un filtro fijo.
En algunos ejemplos, el codificador de video puede codificar información adicional que indique que ninguno de los coeficientes de filtro para ninguna de las clases se predice a partir de ningún filtro fijo, o que todos los coeficientes de filtro se predicen a partir de filtros fijos, o que existen algunos coeficientes de filtro predichos a partir de filtros fijos, mientras que otros coeficientes de filtro no se predicen a partir de filtros fijos. Cuando ninguno de los coeficientes de filtro se predice a partir de un filtro fijo, el codificador de video puede evitar (por ejemplo, omitir o evitar) la codificación de datos que representan un índice en una pluralidad de filtros fijos. Por otro lado, cuando algunos o todos los coeficientes del filtro se predicen a partir de un filtro fijo, el código de video puede codificar además una bandera para cada clase si el filtro de una clase se predice a partir de un filtro fijo o no. Además, el codificador de video puede codificar índices en pluralidades respectivas de filtros fijos para aquellos conjuntos de coeficientes de filtro que se predicen a partir de un filtro fijo, donde los índices identifican el filtro fijo de referencia a partir del cual se van a predecir los coeficientes de filtro correspondientes. Además, el codificador de video puede utilizar los filtros fijos identificados por los índices para predecir los coeficientes de filtro correspondientes. Después de la predicción, el codificador de video puede codificar además valores residuales (por ejemplo, valores de desviación), que representan diferencias entre los coeficientes de filtro predichos y los valores reales de coeficiente de filtro.
El codificador de video puede aplicar estas técnicas solas o en combinación. Por ejemplo, un codificador de video puede codificar explícitamente una pluralidad de conjuntos de coeficientes de filtro, codificar índices para un primer conjunto de clases de bloques en la pluralidad de conjuntos de coeficientes de filtro y codificar de forma predictiva coeficientes de filtro para filtros de un segundo conjunto de clases de bloques a partir de filtros fijos o filtros de una o más imágenes de referencia. Alternativamente, un codificador de video puede codificar cada uno de una pluralidad de conjuntos de coeficientes de filtro predichos a partir de filtros fijos o a partir de un filtro de una o más imágenes codificadas previamente, y luego para cada una de las clases de bloques, codificar un índice que identifica uno de los conjuntos de coeficientes de filtro. Como otro ejemplo adicional, un codificador de video puede codificar coeficientes de filtro para un primer conjunto de clases de bloques usando cualquiera de las técnicas anteriores, y codificar información de transformación geométrica para un segundo conjunto de clases de bloques, incluidos los datos que identifican una transformación geométrica y los datos que identifican uno del primer conjunto de clases de bloques a partir del cual se heredan los coeficientes de filtro.
La figura 2 es un diagrama conceptual que ilustra los 15 grupos (también denominados clases) utilizados para la clasificación BA (adaptación basada en bloques). En el ejemplo de la figura 2, los filtros se mapean a rangos de valores para una métrica de actividad (es decir, rango 0 a rango 4) y una métrica de dirección. La métrica de dirección en la figura 2 se muestra con valores de Sin dirección, Horizontal y Vertical, que pueden corresponder a los valores de 0, 1 y 2 anteriores de la ecuación 3. El ejemplo particular de la figura 2 muestra seis filtros diferentes (es decir, Filtro 1, Filtro 2 ... Filtro 6) como mapeados a los 15 grupos, pero se pueden usar más o menos filtros de manera similar. Aunque la figura 2 muestra un ejemplo, con 15 grupos, identificados como grupos 221 a 235, también se pueden usar más o menos grupos. Por ejemplo, en lugar de cinco rangos para la métrica de actividad, se pueden usar más o menos rangos, lo que da como resultado más o menos grupos. De manera adicional o alternativa, en lugar de solo tres direcciones, también se pueden usar direcciones adicionales (por ejemplo, una dirección de 45 grados y una dirección de 135 grados). Si, por ejemplo, se usaran 5 rangos de la métrica de actividad junto con cinco direcciones (por ejemplo, sin dirección, horizontal, vertical, 45 diagonales y 135 diagonales), entonces se usarían 25 grupos para la clasificación, con cada uno de los 25 grupos mapeados a un filtro.
Para ambos componentes de croma en una imagen, se puede aplicar un único conjunto de coeficientes de filtro. Los coeficientes de filtro de las imágenes de referencia se pueden almacenar y permitir que se reutilicen como coeficientes de filtro de una imagen actual. La imagen actual puede optar por utilizar coeficientes de filtro almacenados para las imágenes de referencia y omitir la señalización de coeficientes de filtro. En este caso, solo es necesario señalar un índice de una de las imágenes de referencia, y los coeficientes de filtro almacenados de la imagen de referencia indicada se heredan para la imagen actual.
Según las técnicas de esta divulgación, antes de filtrar, un codificador de video (por ejemplo, codificador de video 20 o decodificador de video 30) puede aplicar ciertas transformaciones geométricas, como rotación, diagonal y giro vertical, a los píxeles en la región de soporte del filtro (píxeles que se multiplican por los coeficientes filtrados en la ec. (1)) dependiendo de la orientación del gradiente de los píxeles reconstruidos antes de realizar el ALF. Estas transformaciones pueden aumentar la similitud entre diferentes regiones dentro de la imagen, por ejemplo, su direccionalidad. Eso puede reducir el número de filtros que deben enviarse al decodificador, reduciendo así el número de bits necesarios para su representación o, alternativamente, reduciendo el error de reconstrucción. La aplicación de las transformaciones a las regiones de soporte de filtros equivale a la aplicación de las transformaciones directamente a los coeficientes de filtro. Por lo tanto, el codificador de video puede, en cambio, aplicar las transformaciones a los coeficientes de filtro en lugar de aplicarlas a las regiones de soporte del filtro. Según otra técnica de esta divulgación, que puede usarse conjuntamente con o independientemente de otras técnicas ya introducidas, para reducir el número de bits requeridos para representar los coeficientes de filtro, un codificador de video puede fusionar diferentes clases de bloques. Sin embargo, a diferencia de HM-3.0, se puede fusionar cualquier conjunto de clases, incluso las clases que tienen valores no consecutivos de C. La información sobre qué clases se fusionan se proporciona enviando, para cada una de las clases (por ejemplo, cada una de las 25 clases) un índice iC. Las clases que tienen el mismo índice iC comparten el mismo filtro f(k, l). Por lo tanto, un codificador de video puede generar una pluralidad de conjuntos de coeficientes de filtro, y para cada una de una pluralidad de clases, los datos de código que representan un valor de índice ic, donde C puede ser un valor entre 1 y el número de clases, e ic es un índice en los conjuntos generados de coeficientes de filtro que identifica el conjunto de coeficientes de filtro para la clase C.
Según otra técnica de esta divulgación, que puede usarse en conjunto o independientemente de otras técnicas ya introducidas, otra modificación relativa a ALF como se describe en HM-3.0 es que un codificador de video (por ejemplo, codificador de video 20 o decodificador de video 30) puede utilizar un conjunto de n filtros fijos, obtenidos, por ejemplo, mediante entrenamiento fuera de línea, asignados a cada clase para codificar de forma predictiva los coeficientes de filtro. Para cada clase para la que se predicen coeficientes de filtro a partir de un filtro fijo, el codificador de video puede codificar datos que representan cuál de los n filtros fijos se usa. En otro ejemplo, algunas clases pueden tener el mismo conjunto de n filtros fijos asignados o incluso el mismo conjunto de n filtros fijos se puede asignar a todas las clases. Incluso cuando se selecciona el filtro fijo para una clase determinada, los coeficientes del filtro adaptativo todavía se pueden señalar para esta clase. Los coeficientes del filtro que se pueden aplicar a la imagen reconstruida son, en este caso, la suma de los coeficientes f(k, l) señalados y los coeficientes del filtro fijo. El número de clases puede compartir los mismos coeficientes f(k, l) señalados incluso si para estos se eligieron diferentes filtros fijos.
A continuación se describirán ejemplos de implementaciones de las técnicas introducidas anteriormente. En un ejemplo, cada bloque NxN se clasifica en una de las 25 clases según su direccionalidad D y el valor cuantificado de actividad Á:
C = SD Á. (6)
Los valores del gradiente horizontal, el gradiente vertical y dos gradientes diagonales se calculan utilizando laplaciano 1-D:
Figure imgf000012_0001
En estos ejemplos, gv representa un gradiente vertical, gh representa un gradiente horizontal, gd1 representa un gradiente diagonal de 45 grados y gd2 representa un gradiente diagonal de 135 grados.
Los índices i y j se refieren a las coordenadas del píxel superior izquierdo en el bloque NxN. Para asignar la relación de direccionalidad D de máximo y mínimo de los gradientes horizontal y vertical
9h ,vx = m a x ( g h, g v), g%™ = m in ( g h, g v ), (11)
y la relación de máximo y mínimo de dos gradientes diagonales
ddoad i = m a x ( g d0, g d l ) , g ^ nd l = m in ( g d0, g d l ) , (12)
se comparan entre sí y con un conjunto de umbrales t i y t2:
n m ax * . n m in n m ax * . n m in
Paso 1. Si ambos Uh,v — Li Uh.v y í/do.di — Li UdQ,di, D se establece en 0 (el bloque se clasifica como "textura").
n m ax ¡ n m in n m ax / n m in
Paso 2. Si iJh.v / ah,v adO,di/adO,di continúa desde el Paso 3, de lo contrario continúa desde el Paso 4.
n m ax ^ * . n m in
Paso 3. Si iJh.v ^ l 2 gn,v , D se establece en 2, en caso contrario, D se establece en 1 (el bloque se clasifica como "fuerte horizontal/vertical" o bien "horizontal/vertical", respectivamente).
P n aso 4 A. Si y n d m O a rd x l s. t l 2 , ü ndmQ^Mn 1 D se establece en 4, de lo contrario, D se establece en 3 (el bloque se clasifica como "diagonal fuerte" o
"diagonal", respectivamente).
El valor de actividad A se calcula de la siguiente manera:
Figure imgf000012_0002
(Hfci flw )- (13)
A se cuantifica más en el rango de 0 a 4 inclusive, y el valor cuantificado se denota como Á\
Figure imgf000013_0001
Se pueden señalizar hasta 25 filtros, uno para cada clase. Para reducir el número de bits necesarios para representar los coeficientes de filtro, se pueden fusionar diferentes clases. Sin embargo, a diferencia de HM-3.0, cualquier conjunto de clases se puede fusionar, incluso las clases que tienen valores no consecutivos de C. La información sobre qué clases se fusionan se proporciona codificando, para cada una de las 25 clases, un índice iC. Las clases que tienen el mismo índice iC comparten el mismo filtro f(k, /).
Antes de filtrar cada bloque, se pueden aplicar transformaciones geométricas simples como la rotación o el giro diagonal y vertical a los coeficientes de filtro f(k, /) dependiendo de los valores de gradiente calculados para ese bloque. Eso equivale a aplicar estas transformaciones a los píxeles en la región de soporte del filtro. La idea es hacer más parecidos los diferentes bloques a los que se aplica ALF alineando su direccionalidad. Las transformaciones geométricas se definen de la siguiente manera
Giro Diagonal: = fC l j k ) ,
GiroVertical: / K( U ) = f ( k , K - l - 1 ), ( 15 ) GirarDerecha: / f l ( fc f ) = f Q í — l — \,k),
donde K es el tamaño del filtro y 0 □ k, / K - 1 son las coordenadas de los coeficientes, de manera que la ubicación (0,0) está en la esquina superior izquierda y la ubicación (K - 1, K - 1) está en la esquina inferior derecha. El mapeo entre los valores de gradiente calculados usando las ecuaciones (7)-(10) y las transformaciones geométricas especificadas en la ecuación (15) se muestra en la Tabla 1.
Tabla 1: Mapeo del gradiente calculado para el bloque NxN y el filtro
Figure imgf000013_0002
En algunos ejemplos, la predicción de coeficientes de filtro puede ser a partir de filtros fijos. La predicción temporal de los coeficientes de filtro puede mejorar la eficiencia de la codificación de fotogramas intercodificados. Para mejorar la eficiencia de la codificación cuando la predicción temporal no está disponible (intrafotogramas), se asigna un conjunto de n filtros fijos a cada clase. En algunos ejemplos, para cada una de las 25 clases, se señala una bandera si se utiliza el filtro fijo y, si es necesario, un índice del filtro elegido. En algunos ejemplos, el valor de la bandera puede indicar si se utiliza un filtro fijo. En algunos ejemplos, si es necesario, se puede señalar un índice que representa el filtro elegido. Alternativamente, se puede usar uno de los siguientes tres casos definidos de ejemplo. En un primer caso, ninguno de los filtros de las 25 clases se predice a partir del filtro fijo. En un segundo caso, todos los filtros de las clases se predicen a partir del filtro fijo. En un tercer caso, los filtros asociados con algunas clases se predicen a partir de filtros fijos y los filtros asociados con el resto de las clases no se predicen a partir de los filtros fijos.
Se puede codificar una variable para indicar cuál de los tres casos de ejemplo anteriores se aplica. Además, puede aplicarse lo siguiente:
• Si la variable indica el caso 1, no hay necesidad de señalizar más el índice del filtro fijo.
• De lo contrario, si la variable indica el caso 2, se codifica un índice del filtro fijo seleccionado para cada clase. • De lo contrario, si la variable indica el caso 3, se puede señalizar primero un bit para cada clase, y si se usa el filtro fijo, se puede señalizar además el índice.
Incluso cuando se selecciona el filtro fijo para una clase determinada, los coeficientes del filtro adaptativo todavía se pueden enviar para esta clase. Los coeficientes del filtro que se aplicarán a la imagen reconstruida son, en este caso, la suma de los coeficientes f(k, /) señalados y los coeficientes del filtro fijo. El número de clases puede compartir los mismos coeficientes f(k, /) incluso si para estos se eligieron diferentes filtros fijos. En una alternativa, los filtros fijos aplicados a intrafotogramas también se pueden aplicar a fotogramas intercodificados, tales como segmentos P o B.
La figura 3 es un diagrama conceptual que ilustra un patrón de ejemplo para señalizar diferencias de coeficientes de filtro. Las siguientes técnicas pueden usarse para definir uno o más filtros fijos, por ejemplo, valores de coeficientes para los filtros fijos. En un ejemplo, los filtros fijos derivan del entrenamiento fuera de línea y solo se definen los coeficientes de filtro para la derivación de filtro más grande (por ejemplo, forma de filtro de diamante de 9x9). Antes de codificar las diferencias entre los coeficientes de filtro derivados y los filtros fijos seleccionados, un codificador de video puede codificar primero un índice que indica el patrón de diferencias de coeficientes de filtro de señalización. Por ejemplo, el filtro fijo para una forma simétrica de filtro de diamante de 9x9 se muestra en la figura 3, en donde el coeficiente de filtro está indicado por Fi (i se indica en el rango de 0 a 20, inclusive). Cuando el índice de patrón señalado indica una forma de filtro de diamante de 5x5, como se muestra en la figura 3, y los coeficientes de filtro se predicen a partir de un filtro fijo, los valores de los coeficientes de filtro derivados ubicados en las áreas grises de la figura 3 se mantienen sin cambios y no es necesario señalar las diferencias para estas posiciones (es decir, las diferencias para estas posiciones grises son iguales a 0). En este caso, el codificador de video codifica los datos que definen las diferencias entre el coeficiente derivado y los coeficientes de filtro fijos (F0 ~ F6). Alternativamente, el codificador de video no necesita codificar datos que definan la diferencia del coeficiente de DC (es decir, F6), sino que deriva la diferencia para el coeficiente de DC en otros valores de diferencia codificados. En este caso, se debe tener en cuenta que el proceso de filtrado de diamante de 9x9 siempre se aplica cuando los coeficientes de filtro se predicen a partir del filtro fijo.
En otro ejemplo, se pueden predefinir versiones M de filtros fijos, en donde M indica el número total de formas de filtro admitidas. El codificador de video puede codificar primero un índice de la forma de filtro seleccionada, y luego codificar datos que representan los índices de filtros fijos seleccionados asociados con la forma del filtro. En este caso, se debe tener en cuenta que se admiten varios procesos de filtrado diferentes (según el valor de M).
La figura 4 es un diagrama esquemático que ilustra un ejemplo de codificador de video 20 que puede implementar las técnicas descritas en esta divulgación. El codificador de video 20 puede realizar intra- e intercodificación de bloques de video dentro de segmentos de video. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el video dentro de un fotograma o imagen de video determinado. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el video dentro de fotogramas o imágenes adyacentes de una secuencia de video. El intramodo (modo I) puede referirse a cualquiera de varios modos de compresión basados en el espacio. Los intermodos, como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), pueden referirse a cualquiera de varios modos de compresión basados en el tiempo.
En el ejemplo de la figura 4, el codificador de video 20 incluye una memoria de datos de video 33, unidad de división 35, unidad de procesamiento de predicción 41, sumadores 50, unidad de procesamiento de transformación 52, unidad de cuantificación 54, unidad de codificación de entropía 56. La unidad de procesamiento de predicción 41 incluye la unidad de estimación de movimiento (MEU) 42, la unidad de compensación de movimiento (MCU) 44 y la unidad de intrapredicción 46. Para la reconstrucción de bloques de video, el codificador de video 20 también incluye la unidad de cuantificación inversa 58, la unidad de procesamiento de transformación inversa 60, el sumador 62, la unidad de ALF 64 y la memoria intermedia de imágenes decodificadas (DPB) 66.
Como se muestra en la figura 4, el codificador de video 20 recibe datos de video y almacena los datos de video recibidos en la memoria de datos de video 33. La memoria de datos de video 33 puede almacenar datos de video para ser codificados por los componentes del codificador de video 20. Los datos de video almacenados en la memoria de datos de video 33 pueden obtenerse, por ejemplo, de la fuente de video 18. La DPB 66 puede ser una memoria de imágenes de referencia que almacena datos de video de referencia para su uso en la codificación de datos de video mediante el codificador de video 20, por ejemplo, en modos de intra- o intercodificación. La memoria de datos de video 33 y DPB 66 pueden estar formadas por cualquier variedad de dispositivos de memoria, como la memoria dinámica de acceso aleatorio (DRAM), incluida la DRAM sincrónica (SDRAM), la RAM magnetorresistiva (MRAM), la RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de video 33 y DPB 66 pueden proporcionarse por el mismo dispositivo de memoria o dispositivos de memoria separados. En varios ejemplos, la memoria de datos de video 33 puede estar en chip con otros componentes del codificador de video 20, o fuera de chip en relación con esos componentes.
La unidad de división 35 recupera los datos de video de la memoria de datos de video 33 y divide los datos de video en bloques de video. La división también puede incluir la división en porciones, mosaicos u otras unidades más grandes, así como la división de bloques de video, por ejemplo, según una estructura de cuatro árboles de LCU y CU. El codificador de video 20 en general ilustra los componentes que codifican bloques de video dentro de un segmento de video a codificar. El segmento se puede dividir en múltiples bloques de video (y posiblemente en conjuntos de bloques de video denominados mosaicos). La unidad de procesamiento de predicción 41 puede seleccionar uno de una pluralidad de modos de codificación posibles, como uno de una pluralidad de modos de intracodificación o uno de una pluralidad de modos de intercodificación, para el bloque de video actual basándose en resultados de error (por ejemplo, tasa de codificación y nivel de distorsión). La unidad de procesamiento de predicción 41 puede proporcionar el bloque intra- o intercodificado resultante al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso como imagen de referencia.
La unidad de predicción interna 46 dentro de la unidad de procesamiento de predicción 41 puede realizar la intrapredicción del bloque de video actual en relación con uno o más bloques vecinos en el mismo fotograma o segmento que el bloque actual a codificar para proporcionar compresión espacial. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 dentro de la unidad de procesamiento de predicción 41 realizan la interpredicción del bloque de video actual con respecto a uno o más bloques de referencia en una o más imágenes de referencia para proporcionar compresión temporal.
La unidad de estimación de movimiento 42 puede configurarse para determinar el modo de interpredicción para un segmento de video de acuerdo con un patrón predeterminado para una secuencia de video. El patrón predeterminado puede designar segmentos de video en la secuencia como segmentos P o segmentos B. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar muy integradas, pero se ilustran por separado con fines conceptuales. La estimación de movimiento, realizada por la unidad 42 de estimación de movimiento, es el proceso de generar vectores de movimiento, que estiman el movimiento para bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video dentro de una imagen o fotograma de video actual con respecto a un bloque predictivo dentro de una imagen de referencia.
Un bloque predictivo es un bloque que coincide estrechamente con la PU del bloque de video que se codificará en términos de diferencia de píxeles, que puede determinarse mediante la suma de la diferencia absoluta (SAD), la suma de la diferencia cuadrada (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de video 20 puede calcular valores para posiciones de píxeles sub-enteros de imágenes de referencia almacenadas en DPB 66. Por ejemplo, el codificador de video 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxeles fraccionarios de la imagen 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 precisión de píxeles fraccionarios.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de video en un segmento intercodificado mediante la comparación de la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en DPB 66. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación de entropía 56 y a la unidad de compensación de movimiento 44.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar buscar o generar el bloque predictivo en base al vector de movimiento determinado por la estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpíxeles. Al recibir el vector de movimiento para la PU del bloque de video actual, la unidad 44 de compensación de movimiento puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador de video 20 forma un bloque de video residual restando 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 forman datos residuales para el bloque y pueden incluir componentes de diferencia de luminancia y croma. El sumador 50 representa el componente o componentes que realizan esta operación de resta. La unidad de compensación de movimiento 44 también puede generar elementos de sintaxis asociados con los bloques de video y el segmento de video para su uso por el decodificador de video 30 al decodificar los bloques de video del segmento de video.
Después de que la unidad de procesamiento de predicción 41 genera el bloque predictivo para el bloque de video actual, ya sea mediante intrapredicción o interpredicción, el codificador de video 20 forma un bloque de video residual restando el bloque predictivo del bloque de video actual. Los datos de video residuales en el bloque residual pueden incluirse en una o más TU y aplicarse a la unidad de procesamiento de transformación 52. La unidad de procesamiento de transformación 52 transforma los datos de video residuales en coeficientes de transformación residuales utilizando una transformada, como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar. La unidad de procesamiento de transformación 52 puede convertir los datos de video residuales de un dominio de píxeles a un dominio de transformación, tal como un dominio de frecuencia.
La unidad de procesamiento de transformación 52 puede enviar los coeficientes de transformación resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformación para reducir aún más la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede luego realizar una exploración de la matriz que incluye los coeficientes de transformación cuantificados. Alternativamente, la unidad de codificación de entropía 56 puede realizar la exploración.
Después de la cuantificación, la entropía de la unidad de codificación de entropía 56 codifica los coeficientes de transformación cuantificados. Por ejemplo, la unidad de codificación de entropía 56 puede realizar codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC), codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación de entropía de partición de intervalo de probabilidad (PIPE) u otra metodología o técnica de codificación de entropía. Después de la codificación de entropía mediante la unidad de codificación de entropía 56, el flujo de bits codificado puede transmitirse al decodificador de video 30 o archivarse 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 la entropía en los vectores de movimiento y los otros elementos de sintaxis para el segmento de video actual que se codifica.
La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformación inversa 60 aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles para su uso posterior como un bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles subenteros para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento producido por la unidad de compensación de movimiento 44 para producir un bloque reconstruido.
La unidad de ALF 64 filtra el bloque reconstruido (por ejemplo, la salida del sumador 62) y almacena el bloque reconstruido filtrado en el DPB 66 para su uso como bloque de referencia. El bloque de referencia puede ser utilizado por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como un bloque de referencia para interpredecir un bloque en un fotograma de video o imagen posterior. Aunque no se muestra explícitamente en la figura 4, el codificador de video 20 puede incluir filtros adicionales tales como uno o más de un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) u otro tipo de filtro de bucle. Un filtro de desbloqueo puede, por ejemplo, aplicar un filtrado de desbloqueo para filtrar los límites del bloque para eliminar los artefactos de bloqueo del video reconstruido. Un filtro de SAO puede aplicar desplazamiento a los valores de los píxeles reconstruidos para mejorar la calidad general de la codificación. En algunas implementaciones, el SAO puede ser un caso especial o un modo especial de filtrado. También se pueden utilizar filtros de bucle adicionales (en bucle o en bucle posterior).
La unidad de ALF 64, sola o junto con otros componentes del codificador de video 20, puede configurarse para realizar las diversas técnicas de ALF descritas en esta divulgación. Por ejemplo, la salida del sumador 62 son datos de video decodificados que fueron previamente codificados por otros elementos del codificador de video 20 (tales como la unidad de procesamiento de predicción 41, la unidad de procesamiento de transformación 52 y la unidad de cuantificación 54). Por lo tanto, la unidad de ALF 64 puede filtrar datos de video decodificados según las técnicas de esta divulgación. En particular, la unidad de ALF 64 realiza el filtrado como un proceso de filtrado "en bucle", ya que la unidad de ALF 64 filtra imágenes decodificadas que se utilizan posteriormente como imágenes de referencia, almacenadas en DPB 66, para usarse mediante la unidad de procesamiento de predicción 41 para predecir imágenes posteriores.
Según las técnicas de esta divulgación, la unidad de ALF 64 puede construir filtros para varias clases de bloques. La unidad de ALF 64 puede clasificar un bloque basándose, por ejemplo, en la direccionalidad de un gradiente calculado a partir de los píxeles del bloque. En general, la unidad de a Lf 64 puede construir un filtro diferente para cada clase de bloque. Sin embargo, en algunos casos, la unidad de ALF 64 puede calcular un conjunto de coeficientes de filtro usados por dos o más clases de bloques. Por ejemplo, la unidad de ALF 64 puede calcular una pluralidad de conjuntos de coeficientes de filtro. La unidad de ALF 64 puede codificar además un valor de índice para cada una de las clases de bloques (o un subconjunto de las clases de bloques) identificando un conjunto de coeficientes de filtro en la pluralidad de conjuntos de coeficientes de filtro. La unidad de ALF 64 puede construir una estructura de datos que especifique los índices para cada una de las clases de bloques, y proporcionar la estructura de datos a la unidad de codificación de entropía 56 para que sea codificada por entropía e incluida en el flujo de bits. La unidad de codificación de entropía 56 puede codificar por entropía la estructura de datos y añadir la estructura de datos a, por ejemplo, un encabezado de segmento, un conjunto de parámetros de imagen u otra estructura de datos similar. Por lo tanto, en el caso de que la unidad de ALF 64 codifique el mismo índice para dos o más clases de bloques, esas clases de bloques utilizarán el mismo conjunto de coeficientes de filtro, es decir, el conjunto de coeficientes de filtro correspondiente al valor del índice codificado.
De manera adicional o alternativa, la unidad de ALF 64 puede indicar que, para al menos una clase de bloque, el filtro se generará usando los mismos coeficientes de filtro que una clase diferente de bloque, pero con una transformación geométrica aplicada a una región de soporte de filtro del filtro o los coeficientes de filtro. De manera funcional, la aplicación de la transformada geométrica a la región de soporte del filtro produce los mismos resultados matemáticos que la aplicación de la transformada geométrica a los coeficientes de filtro y, por lo tanto, la unidad de ALF 64 puede aplicar la transformada geométrica a la región de soporte del filtro o los coeficientes de filtro. En este ejemplo, la unidad de ALF 64 puede codificar, para una clase de bloque actual, datos que identifican un tipo de transformada geométrica (por ejemplo, una rotación, un giro diagonal, un giro vertical), así como un filtro previamente construido cuyos coeficientes de filtro se van a utilizar para un filtro generado para la clase de bloque actual. De nuevo, la unidad de ALF 64 puede proporcionar dichos datos a la unidad de codificación de entropía 56, que puede codificar por entropía los datos y añadir los datos a una estructura de datos como, por ejemplo, un encabezado de segmento o un conjunto de parámetros de imagen.
De manera adicional o alternativa, la unidad de ALF 64 puede codificar un valor (por ejemplo, de una bandera) que indica si se usa un filtro fijo para predecir un conjunto de coeficientes de filtro para una clase de bloque. Asimismo, la unidad de ALF 64 puede proporcionar estos valores a la unidad de codificación de entropía 56 para que sea codificada por entropía, por ejemplo, como parte de un encabezado de segmento, conjunto de parámetros de imagen u otra estructura de datos similar. La bandera puede indicar, por ejemplo, que los coeficientes de filtro para un filtro de una clase de bloque se predicen a partir de un filtro fijo o, en cambio, se predicen (o heredan) a partir de un filtro de una imagen de referencia. En algunos ejemplos, la unidad de ALF 64 puede configurarse con una pluralidad de filtros fijos para cada clase de bloque. En tales ejemplos, la unidad de ALF 64 puede codificar adicionalmente un índice en la pluralidad de filtros fijos, identificando uno de la pluralidad de filtros fijos que se utilizará para predecir los coeficientes de filtro de un filtro actual para la clase de bloque, cuando el valor indica que los coeficientes de filtro se predicen a partir de un filtro fijo.
En algunos ejemplos, la unidad de ALF 64 puede codificar información adicional que indique que ninguno de los coeficientes de filtro para ninguna de las clases se predice a partir de ningún filtro fijo, que todos los coeficientes de filtro se predicen a partir de un filtro fijo, o que existen algunos coeficientes de filtro predichos a partir de un filtro fijo, mientras que otros coeficientes de filtro no se predicen a partir de un filtro fijo. Cuando ninguno de los coeficientes de filtro se predice a partir de un filtro fijo, la unidad de ALF 64 puede evitar (por ejemplo, omitir o evitar) la codificación de datos que representan un índice en una pluralidad de filtros fijos. Por otro lado, cuando algunos o todos los coeficientes de filtro se predicen a partir de un filtro fijo, la unidad de ALF 64 puede codificar índices en pluralidades respectivas de filtros fijos para aquellos conjuntos de coeficientes de filtro que se predicen a partir de un filtro fijo, donde los índices identifican el filtro fijo de referencia a partir del cual se van a predecir los coeficientes de filtro correspondientes. Además, la unidad de ALF 64 puede utilizar los filtros fijos identificados por los índices para predecir los coeficientes de filtro correspondientes. Después de la predicción, la unidad de ALF 64 puede codificar además valores residuales (por ejemplo, valores de desviación), que representan diferencias entre los coeficientes de filtro predichos y los valores reales de coeficiente de filtro.
La unidad de ALF 64 puede aplicar estas técnicas solas o en combinación. Por ejemplo, la unidad de ALF 64 puede codificar explícitamente una pluralidad de conjuntos de coeficientes de filtro, codificar índices para un primer conjunto de clases de bloques en la pluralidad de conjuntos de coeficientes de filtro y codificar de forma predictiva coeficientes de filtro para filtros de un segundo conjunto de clases de bloques a partir de filtros fijos o filtros de una o más imágenes de referencia en DPB 66. Alternativamente, la unidad de ALF 64 puede codificar cada uno de una pluralidad de conjuntos de coeficientes de filtro predichos a partir de un filtro fijo o a partir de un filtro de una o más imágenes de referencia en DPB 66, y luego para cada una de las clases de bloques, codificar un índice de que identifica uno de los conjuntos de coeficientes de filtro. Como otro ejemplo adicional, la unidad de ALF 64 puede codificar coeficientes de filtro para un primer conjunto de clases de bloques usando cualquiera de las técnicas anteriores, y codificar información de transformación geométrica para un segundo conjunto de clases de bloques, incluidos los datos que identifican una transformación geométrica y los datos que identifican uno del primer conjunto de clases de bloques a partir del cual se heredan los coeficientes de filtro.
Para determinar cómo seleccionar índices para clases de bloques, si predecir coeficientes de filtro a partir de filtros fijos o imágenes de referencia de DPB 66, y/o si generar un filtro para una clase de bloque usando una transformación geométrica como se analizó anteriormente, codificador de video 20 puede ejecutar una variedad de pases de codificación en una imagen o secuencia de imágenes, y hacer que la unidad de ALF 64 aplique varias técnicas de filtrado a varias clases de bloques en las imágenes. El codificador de video 20 puede calcular métricas de optimización de distorsión de velocidad (RDO) para las imágenes filtradas y decodificadas, para determinar qué combinación de coeficientes de filtro y técnicas de predicción de coeficientes de filtro dan como resultado las mejores métricas de RDO. El codificador de video 20 puede luego seleccionar los coeficientes de filtro y las técnicas de filtrado para cada imagen basándose en la combinación de técnicas de filtrado que dan como resultado las mejores métricas de RDO para cada imagen.
La figura 5 es un diagrama esquemático que ilustra un ejemplo de decodificador de video 30 que puede implementar las técnicas descritas en esta divulgación. En el ejemplo de la figura 5, el decodificador de video 30 incluye la memoria de datos de video 78, la unidad de decodificación de entropía 80, la unidad de procesamiento de predicción 81, la unidad de cuantificación inversa 86, la unidad de procesamiento de transformación inversa 88, el sumador 90 y la memoria intermedia de imágenes decodificadas (DPB) 94. La unidad de procesamiento de predicción 81 incluye la unidad de compensación de movimiento 82 y la unidad de intrapredicción 84. El decodificador de video 30 puede, en algunos ejemplos, realizar un pase de decodificación generalmente recíproco al pase de codificación descrito con respecto al codificador de video 20 de la figura 4.
Durante el proceso de decodificación, el decodificador de video 30 recibe un flujo de bits de video codificado que representa bloques de video de un segmento de video codificado y elementos de sintaxis asociados del codificador de video 20. El decodificador 20 de video almacena el flujo de bits de video codificado recibido en la memoria de datos de video 78. La memoria de datos de video 78 puede almacenar datos de video, tales como un flujo de bits de video codificado, para ser decodificados por los componentes del decodificador de video 30. Los datos de video almacenados en la memoria de datos de video 78 pueden obtenerse, por ejemplo, a través del enlace 16, desde el dispositivo de almacenamiento 26, o desde una fuente de video local, tal como una cámara, o accediendo a medios físicos de almacenamiento de datos. La memoria de datos de video 78 puede formar una memoria intermedia de imágenes codificadas (CPB) que almacena datos de video codificados a partir de un flujo de bits de video codificado. La DPB 94 puede ser una memoria de imágenes de referencia que almacena datos de video de referencia para su uso en la decodificación de datos de video mediante el decodificador de video 30, por ejemplo, en modos de intra- o intercodificación. La memoria de datos de video 78 y DPB 94 pueden estar formadas por cualquier variedad de dispositivos de memoria, tales como DRAM, SDRAM, MRAM, RRAM u otros tipos de dispositivos de memoria. La memoria de datos de video 78 y DPB 94 pueden proporcionarse por el mismo dispositivo de memoria o dispositivos de memoria separados. En varios ejemplos, la memoria de datos de video 78 puede estar en chip con otros componentes del decodificador de video 30, o fuera de chip en relación con esos componentes.
La unidad de decodificación de entropía 80 del decodificador de video 30 decodifica por entropía los datos de video almacenados en la memoria de datos de video 78 para generar coeficientes cuantificados, vectores de movimiento y otros elementos de sintaxis. La unidad de decodificación de entropía 80 envía los vectores de movimiento y otros elementos de sintaxis a la unidad de procesamiento de predicción 81. El decodificador de video 30 puede recibir los elementos de sintaxis en el nivel de segmento de video y/o en el nivel de bloque de video.
Cuando el segmento de video se codifica como un segmento intracodificado (I), la unidad de intrapredicción 84 de la unidad de procesamiento de predicción 81 puede generar datos de predicción para un bloque de video del segmento de video actual en base a un modo de intrapredicción señalizado y datos de bloques previamente decodificados del fotograma o imagen actual. Cuando el fotograma de video se codifica como un segmento intercodificado (por ejemplo, segmento B o segmento P), la unidad de compensación de movimiento 82 de la unidad de procesamiento de predicción 81 produce bloques predictivos para un bloque de video del segmento de video actual basado en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad de decodificación de entropía 80. Los bloques predictivos pueden producirse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de video 30 puede construir las listas de fotogramas de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en DPB 94.
La unidad de compensación de movimiento 82 determina información de predicción para un bloque de video del segmento de video actual analizando los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques predictivos para el bloque de video actual que se está decodificando. Por ejemplo, la unidad de compensación de movimiento 82 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) usado para codificar los bloques de video del segmento de video, un tipo de segmento de interpredicción (por ejemplo, el segmento B o el segmento P), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de video intercodificado del segmento, estado de interpredicción para cada bloque de video intercodificado del segmento, y otra información para decodificar los bloques de video en el segmento de video actual.
La unidad de compensación de movimiento 82 también puede realizar una interpolación basada en filtros de interpolación. La unidad de compensación de movimiento 82 puede usar filtros de interpolación como los usa el codificador de video 20 durante la codificación de los bloques de video para calcular valores interpolados para píxeles subenteros de bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el codificador de video 20 a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
La unidad de cuantificación inversa 86 cuantifica inversamente, es decir, descuantifica, los coeficientes de transformación cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación de entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de video 20 para cada bloque de video en el segmento de video para determinar un grado de cuantificación e, igualmente, un grado de cuantificación inversa que debería aplicarse. La unidad de procesamiento de transformación inversa 88 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada inversa de número entero o un proceso de transformación inversa conceptualmente similar, a los coeficientes de transformación para producir bloques residuales en el dominio de píxeles.
Después de que la unidad de procesamiento de predicción genera el bloque predictivo para el bloque de video actual usando, por ejemplo, intra- o interpredicción, el decodificador de video 30 forma un bloque de video reconstruido sumando los bloques residuales de la
unidad de procesamiento de transformación inversa 88 con los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 82. El sumador 90 representa el componente o componentes que realizan esta operación de suma. La unidad de ALF 92 filtra el bloque de video reconstruido usando, por ejemplo, una o más de las técnicas de filtrado descritas en esta divulgación.
Aunque no se muestra explícitamente en la figura 5, el decodificador de video 30 también puede incluir uno o más de un filtro de desbloqueo, un filtro SAO u otros tipos de filtros. También se pueden utilizar otros filtros de bucle (ya sea en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxeles o mejorar de otro modo la calidad del video. Los bloques de video decodificados en un fotograma o imagen determinados se almacenan luego en DPB 94, que almacena imágenes de referencia utilizadas para la compensación de movimiento subsiguiente. La DPB 94 puede ser parte o estar separada de la memoria adicional que almacena video decodificado para una presentación posterior en un dispositivo de visualización, tal como el dispositivo 32 de visualización de la figura 1.
La unidad de ALF 92, sola o junto con otros componentes del decodificador de video 30, puede configurarse para realizar las diversas técnicas descritas en esta divulgación, incluidas las técnicas descritas en la sección de reivindicaciones así como en otras partes. Por ejemplo, la salida del sumador 90 son datos de video decodificados. Por lo tanto, la unidad de ALF 92 puede filtrar datos de video decodificados según las técnicas de esta divulgación. En particular, la unidad de ALF 92 realiza el filtrado como un proceso de filtrado "en bucle", ya que la unidad de ALF 92 filtra imágenes decodificadas que se utilizan posteriormente como imágenes de referencia, almacenadas en DPB 94, para usarse mediante la unidad de procesamiento de predicción 81 para predecir imágenes posteriores.
La unidad de ALF 92 puede aplicar las técnicas de esta divulgación solas o en combinación. Por ejemplo, la unidad de ALF 92 puede decodificar explícitamente una pluralidad de conjuntos de coeficientes de filtro, decodificar índices para un primer conjunto de clases de bloques en la pluralidad de conjuntos de coeficientes de filtro y decodificar de forma predictiva coeficientes de filtro para filtros de un segundo conjunto de clases de bloques de filtros fijos o filtros de una o más imágenes de referencia en DPB 94, en base a datos decodificados del flujo de bits, como un encabezado de segmento o un conjunto de parámetros de imagen. Alternativamente, la unidad de ALF 92 puede decodificar cada uno de una pluralidad de conjuntos de coeficientes de filtro predichos a partir de un filtro fijo o a partir de un filtro de una o más imágenes de referencia en DPB 94, y luego para cada una de las clases de bloques, decodificar un índice de que identifica uno de los conjuntos de coeficientes de filtro, en base a datos decodificados del flujo de bits, como un encabezado de segmento o un conjunto de parámetros de imagen. Como otro ejemplo adicional, la unidad de ALF 92 puede decodificar coeficientes de filtro para un primer conjunto de clases de bloques usando cualquiera de las técnicas anteriores, y decodificar información de transformación geométrica para un segundo conjunto de clases de bloques, incluidos los datos que identifican una transformación geométrica y los datos que identifican uno del primer conjunto de clases de bloques a partir del cual se heredan los coeficientes de filtro, en base a datos decodificados del flujo de bits, como un encabezado de segmento o un conjunto de parámetros de imagen. Por lo tanto, en general,
En algunos ejemplos, la unidad de ALF 92 puede construir filtros para varias clases de bloques. La unidad de ALF 92 puede clasificar un bloque basándose, por ejemplo, en la direccionalidad de un gradiente calculado a partir de los píxeles del bloque. En general, la unidad de ALF 92 puede construir un ALF diferente para cada clase de bloque. Sin embargo, en algunos casos, la unidad de ALF 92 puede calcular un conjunto de coeficientes de filtro usados por dos o más clases de bloques. Por ejemplo, la unidad de ALF 92 puede calcular una pluralidad de conjuntos de coeficientes de filtro. La unidad de ALF 92 puede decodificar además un valor de índice para cada una de las clases de bloques (o un subconjunto de las clases de bloques) identificando un conjunto de coeficientes de filtro en la pluralidad de conjuntos de coeficientes de filtro. La unidad de decodificación de entropía 80 puede decodificar por entropía una estructura de datos que especifique los índices para cada una de las clases de bloques y proporcionar la estructura de datos a la unidad de ALF 92. La unidad de decodificación de entropía 56 puede decodificar por entropía la estructura de datos, por ejemplo, de un encabezado de segmento, un conjunto de parámetros de imagen u otra estructura de datos similar. Por lo tanto, en el caso de que la unidad de ALF 92 decodifique el mismo índice para dos o más clases de bloques, esas clases de bloques utilizarán el mismo conjunto de coeficientes de filtro, es decir, el conjunto de coeficientes de filtro correspondiente al valor del índice decodificado.
De manera adicional o alternativa, la unidad de ALF 92 puede indicar que, para al menos una clase de bloque, el filtro se generará usando los mismos coeficientes de filtro que una clase diferente de bloque, pero con una transformación geométrica aplicada a una región de soporte de filtro del filtro o los coeficientes de filtro. De manera funcional, la aplicación de la transformada geométrica a la región de soporte del filtro produce los mismos resultados matemáticos que la aplicación de la transformada geométrica a los coeficientes de filtro y, por lo tanto, la unidad de ALF 92 puede aplicar la transformada geométrica a la región de soporte del filtro o los coeficientes de filtro.
En este ejemplo, la unidad de ALF 92 puede decodificar, para una clase de bloque actual, datos que identifican un tipo de transformada geométrica (por ejemplo, una rotación, un giro diagonal, un giro vertical), así como un filtro previamente construido cuyos coeficientes de filtro se van a utilizar para un filtro generado para la clase de bloque actual. Nuevamente, la unidad de decodificación de entropía 80 puede decodificar por entropía tales datos y proporcionar los datos decodificados a la unidad de ALF 92. Los datos pueden incluirse en una estructura de datos como, por ejemplo, un encabezado de segmento o un conjunto de parámetros de imagen.
De manera adicional o alternativa, la unidad de decodificación de entropía 80 puede decodificar un valor (por ejemplo, de una bandera) que indica si se usa un filtro fijo para predecir un conjunto de coeficientes de filtro para una clase de bloque. Asimismo, la unidad de decodificación de entropía 80 puede proporcionar estos valores a la unidad de ALF 92. La unidad de decodificación de entropía 80 puede decodificar los datos de parte de un encabezado de segmento, conjunto de parámetros de imagen u otra estructura de datos similar. La bandera puede indicar, por ejemplo, que los coeficientes de filtro para un filtro de una clase de bloque se predicen a partir de un filtro fijo o, en cambio, se predicen (o heredan) a partir de un filtro de una imagen de referencia. En algunos ejemplos, la unidad de ALF 92 puede configurarse con una pluralidad de filtros fijos para cada clase de bloque. En tales ejemplos, la unidad de ALF 92 puede decodificar adicionalmente un índice en la pluralidad de filtros fijos, identificando uno de la pluralidad de filtros fijos que se utilizará para predecir los coeficientes de filtro de un filtro actual para la clase de bloque, cuando el valor indica que los coeficientes de filtro se predicen a partir de un filtro fijo.
En algunos ejemplos, la unidad de ALF 92 puede recibir además información decodificada por entropía que indique que ninguno de los coeficientes de filtro para ninguna de las clases se predice a partir de ningún filtro fijo, que todos los coeficientes de filtro se predicen a partir de un filtro fijo, o que existen algunos coeficientes de filtro predichos a partir de un filtro fijo, mientras que otros coeficientes de filtro no se predicen a partir de un filtro fijo. Cuando ninguno de los coeficientes de filtro se predice a partir de un filtro fijo, la unidad de ALF 92 (o la unidad de decodificación de entropía 80) puede evitar (por ejemplo, omitir o prevenir) la decodificación de datos que representan un índice en una pluralidad de filtros fijos. Por otro lado, cuando algunos o todos los coeficientes de filtro se predicen a partir de un filtro fijo, la unidad de ALF 92 puede decodificar índices en pluralidades respectivas de filtros fijos para aquellos conjuntos de coeficientes de filtro que se predicen a partir de un filtro fijo, donde los índices identifican el filtro fijo de referencia a partir del cual se van a predecir los coeficientes de filtro correspondientes. Además, la unidad de a Lf 92 puede utilizar los filtros fijos identificados por los índices para predecir los coeficientes de filtro correspondientes. Después de la predicción, la unidad de ALF 92 puede decodificar además valores residuales (por ejemplo, valores de desviación), que representan diferencias entre los coeficientes de filtro predichos y los valores reales de coeficiente de filtro.
La figura 6 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un codificador de video (por ejemplo, durante un proceso de codificación de video). A fines de ejemplo y de explicación, el método de la figura 6 se describe con respecto al codificador de video 20 de la figura 4.
Inicialmente, el codificador de video 20 codifica una imagen (100). Por ejemplo, el codificador de video 20 puede intra- o interpredecir bloques de la imagen, calcular residuales para los bloques predichos, transformar y cuantificar los datos residuales y codificar la entropía de la información de predicción y los coeficientes de transformación cuantificados para la imagen, como se analizó anteriormente con respecto a la figura 4. Posteriormente, el codificador de video 20 puede decodificar la imagen (102), por ejemplo, cuantificando inversamente y transformando inversamente los coeficientes de transformación cuantificados para reproducir valores residuales, luego sumando los valores residuales a los bloques predichos.
La unidad de ALF 64 puede entonces calcular coeficientes de filtro para varias clases de bloques (104). Por ejemplo, la unidad de ALF 64 puede determinar clases de bloques basándose en gradientes potenciales para los bloques. La unidad de ALF 64 puede entonces generar filtros para las clases de bloques a partir de los coeficientes de filtro calculados (106). La unidad de ALF 64 puede utilizar cualquiera de las diversas técnicas para generar filtros de esta divulgación. Por ejemplo, para al menos algunas clases de bloques, la unidad de ALF 64 puede seleccionar índices en una pluralidad de conjuntos de coeficientes de filtro calculados, donde el índice para cada clase de bloque identifica el conjunto de coeficientes de filtro calculados que se utilizarán para generar el filtro para la clase de bloque correspondiente. De manera adicional o alternativa, para al menos algunas clases de bloques, la unidad de ALF 64 puede generar datos que indiquen un filtro generado previamente que se utilizará, así como una transformada geométrica que se aplicará a al menos una de una región de soporte de filtro o los coeficientes de filtro del filtro generado previamente. De manera adicional o alternativa, para al menos algunas clases de bloques, la unidad de ALF 64 puede predecir coeficientes de filtro a partir de un filtro fijo o un filtro de una imagen de referencia, y generar datos que indiquen el filtro fijo o la imagen de referencia a partir de los cuales se deben predecir los coeficientes de filtro.
Además, el codificador de video 20 puede codificar datos que definen los filtros para las diversas clases de bloques (108). Por ejemplo, para cualquier clase de bloque para el que se vayan a generar filtros usando índices en una pluralidad de conjuntos de coeficientes de filtro, la unidad de codificación de entropía 56 puede codificar por entropía los índices para esas clases de bloques. De manera adicional o alternativa, para cualquier clase de bloque para el cual se generen filtros usando filtros generados previamente y una transformada geométrica, la unidad de codificación de entropía 56 puede codificar por entropía datos que identifican los filtros generados previamente y la transformada geométrica que se aplicará (por ejemplo, rotación, giro vertical o giro diagonal). De manera adicional o alternativa, para cualquier clase de bloque para el cual se generen filtros usando coeficientes de filtro predichos de un filtro fijo, la unidad de codificación de entropía 56 puede codificar por entropía datos que indiquen si los coeficientes de filtro deben predecirse a partir de un filtro fijo o un filtro de una imagen de referencia, así como una indicación del filtro fijo o la imagen de referencia.
La unidad de ALF 64 también puede filtrar bloques de la imagen decodificada usando los filtros correspondientes (110). Es decir, para cada bloque de la imagen, la unidad de ALF 64 puede calcular un gradiente y determinar una clase para el bloque basándose en el gradiente. La unidad de ALF 64 puede además seleccionar el filtro correspondiente a la clase. La unidad de ALF 64 puede luego filtrar cada píxel del bloque usando el filtro correspondiente a la clase del bloque.
De esta manera, el método de la figura 6 representa un ejemplo de un método de filtrado de un bloque decodificado de datos de video que incluye la construcción de una pluralidad de filtros para clases de bloques de una imagen actual de datos de video, en donde la construcción de la pluralidad de filtros comprende, para cada una de las clases, determinar si un filtro fijo se usa para predecir un conjunto de coeficientes de filtro de la clase, y en respuesta a la determinación de que se usa un filtro fijo para predecir el conjunto de coeficientes de filtro, determinar un valor de índice en un conjunto de filtros fijos de la clase y predecir el conjunto de coeficientes de filtro de la clase utilizando un filtro fijo del conjunto de filtros fijos identificados por el valor del índice, decodificar un bloque actual de una imagen actual de los datos de video, determinar una clase para el bloque actual, seleccionar un filtro de la pluralidad de filtros que corresponde a la clase para el bloque actual, y filtrar al menos un píxel del bloque actual usando el filtro seleccionado.
La figura 7 es un diagrama de flujo que ilustra i un método de ejemplo para filtrar bloques de una imagen decodificada por un decodificador de video (por ejemplo, durante un proceso de decodificación de video). A fines de ejemplo y de explicación, el método de la figura 6 se describe con respecto al decodificador de video 30 de la figura 5.
Inicialmente, el decodificador de video 30 decodifica una imagen (120). Por ejemplo, el decodificador de video 30 puede decodificar por entropía información de predicción y coeficientes de transformación cuantificados para la imagen, bloques de intra- o interpredicción de la imagen basados en la información de predicción, cuantificación inversa y coeficientes de transformación cuantificados de transformación inversa para reproducir datos residuales, y combinar los bloques predichos y los datos residuales para reproducir bloques, como se analizó anteriormente con respecto a la figura 5.
La unidad de decodificación de entropía 80 puede además decodificar datos de entropía que definen filtros para varias clases de bloques (122). Por ejemplo, la unidad de decodificación de entropía 80 puede decodificar por entropía datos que indican clases de bloques para los cuales se van a generar filtros usando índices en una pluralidad de conjuntos de coeficientes de filtro, y decodificar por entropía los índices para esas clases de bloques. De manera adicional o alternativa, la unidad de decodificación de entropía 80 puede decodificar por entropía datos que indican clases de bloque para las cuales se van a generar filtros mediante el uso de filtros generados previamente y una transformada geométrica, así como datos que identifican los filtros generados previamente y la transformada geométrica que se aplicará (por ejemplo, rotación, giro vertical o giro diagonal). De manera adicional o alternativa, la unidad de decodificación de entropía 80 puede decodificar por entropía datos que indiquen clases de bloque para las cuales se generarán filtros usando coeficientes de filtro predichos de un filtro fijo, y datos que indiquen si los coeficientes de filtro deben predecirse a partir de un filtro fijo o un filtro de una imagen de referencia, así como una indicación del filtro fijo o la imagen de referencia.
La unidad de ALF 92 puede entonces calcular coeficientes de filtro para varias clases de bloques (124). Por ejemplo, la unidad de ALF 92 puede determinar clases de bloques basándose en gradientes potenciales para los bloques. La unidad de ALF 92 puede luego generar filtros para las clases de bloques a partir de los coeficientes de filtro calculados (126), basándose en los datos decodificados por entropía representativos de cómo generar los filtros como se analizó anteriormente. La unidad de ALF 92 puede utilizar cualquiera de las diversas técnicas para generar filtros de esta divulgación. Por ejemplo, para al menos algunas clases de bloques, la unidad de ALF 92 puede recibir índices de la unidad de decodificación de entropía 80 en una pluralidad de conjuntos de coeficientes de filtro calculados, donde el índice para cada clase de bloque identifica el conjunto de coeficientes de filtro calculados que se utilizarán para generar el filtro para la clase de bloque correspondiente. De manera adicional o alternativa, para al menos algunas clases de bloques, la unidad de ALF 92 puede recibir datos de la unidad de decodificación de entropía 80 que indiquen un filtro generado previamente que se utilizará, así como una transformada geométrica que se aplicará a al menos una de una región de soporte de filtro o los coeficientes de filtro del filtro generado previamente. De manera adicional o alternativa, para al menos algunas clases de bloques, la unidad de ALF 92 puede predecir coeficientes de filtro a partir de un filtro fijo o un filtro de una imagen de referencia, y generar datos que indiquen el filtro fijo o la imagen de referencia a partir de los cuales se deben predecir los coeficientes de filtro, como lo indican los datos recibidos de la unidad de decodificación de entropía 80.
La unidad de ALF 92 luego puede filtrar bloques de la imagen decodificada usando los filtros correspondientes (128). Es decir, para cada bloque de la imagen, la unidad de ALF 92 puede calcular un gradiente y determinar una clase para el bloque basándose en el gradiente. La unidad de ALF 92 puede además seleccionar el filtro correspondiente a la clase. La unidad de ALF 92 puede luego filtrar cada píxel del bloque usando el filtro correspondiente a la clase del bloque.
De esta manera, el método de la figura 7 representa un ejemplo de un método de filtrado de un bloque decodificado de datos de video que incluye la construcción de una pluralidad de filtros para clases de bloques de una imagen actual de datos de video, en donde la construcción de la pluralidad de filtros comprende, para cada una de las clases, determinar si un filtro fijo se usa para predecir un conjunto de coeficientes de filtro de la clase, y en respuesta a la determinación de que se usa un filtro fijo para predecir el conjunto de coeficientes de filtro, determinar un valor de índice en un conjunto de filtros fijos de la clase y predecir el conjunto de coeficientes de filtro de la clase utilizando un filtro fijo del conjunto de filtros fijos identificados por el valor del índice, decodificar un bloque actual de una imagen actual de los datos de video, determinar una clase para el bloque actual, seleccionar un filtro de la pluralidad de filtros que corresponde a la clase para el bloque actual, y filtrar al menos un píxel del bloque actual usando el filtro seleccionado.
La figura 8 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un codificador de video (por ejemplo, durante un proceso de codificación de video). A fines de ejemplo y de explicación, el método de la figura 8 se describe con respecto al codificador de video 20 de la figura 4.
Inicialmente, el codificador de video 20 codifica una imagen (140). Por ejemplo, el codificador de video 20 puede intra- o interpredecir bloques de la imagen, calcular residuales para los bloques predichos, transformar y cuantificar los datos residuales y codificar la entropía de la información de predicción y los coeficientes de transformación cuantificados para la imagen, como se analizó anteriormente con respecto a la figura 4. Posteriormente, el codificador de video 20 puede decodificar la imagen (142), por ejemplo, cuantificando inversamente y transformando inversamente los coeficientes de transformación cuantificados para reproducir valores residuales, luego sumando los valores residuales a los bloques predichos.
La unidad de ALF 64 puede luego seleccionar un filtro (por ejemplo, según el filtrado de bucle adaptativo (ALF)) para una clase de un bloque de la imagen (144). La unidad de ALF 64 puede seleccionar la clase basándose, por ejemplo, en un gradiente calculado para uno o más píxeles del bloque. De manera alternativa, la unidad de ALF 64 puede determinar una clase para el bloque basándose en otras características del bloque.
Según las técnicas de esta divulgación, la unidad de ALF 64 puede calcular un gradiente del bloque (146). La unidad de ALF 64 puede además determinar y realizar una transformada geométrica basada en el gradiente calculado (148). Por ejemplo, la unidad de ALF 64 puede determinar una transformada geométrica según las técnicas de la Tabla 1 como se analizó anteriormente. La unidad de ALF 64 puede aplicar la transformación geométrica a los coeficientes del filtro seleccionado o a una región de soporte de filtro del filtro seleccionado (por ejemplo, píxeles vecinos a un píxel que se filtrará mediante el uso del filtro seleccionado). La unidad de ALF 64 puede luego filtrar el bloque de la imagen decodificada usando el filtro seleccionado (150). Es decir, la unidad de ALF 64 filtra cada píxel del bloque usando el filtro seleccionado.
De esta manera, el método de la figura 8 representa un ejemplo de un método para filtrar un bloque decodificado de datos de video, que incluye decodificar un bloque actual de una imagen actual de los datos de video, seleccionar un filtro (según el filtrado de bucle adaptativo (ALF)) que se utilizará para filtrar píxeles del bloque actual, seleccionar una transformada geométrica que se realizará en una de una región de soporte de filtro o coeficientes del filtro seleccionado, realizar la transformada geométrica en la región de soporte de filtro o los coeficientes del filtro seleccionado, y filtrar al menos un píxel del bloque actual usando el filtro seleccionado después de realizar la transformada geométrica.
La figura 9 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un decodificador de video (por ejemplo, durante un proceso de decodificación de video). A fines de ejemplo y de explicación, el método de la figura 9 se describe con respecto al decodificador de video 30 de la figura 5.
Inicialmente, el decodificador de video 30 decodifica una imagen (160), por ejemplo, mediante valores de decodificación de entropía de elementos de sintaxis para predicción y coeficientes de transformación cuantificados, cuantificación inversa y transformación inversa de los coeficientes de transformación cuantificados para reproducir valores residuales, luego sumando los valores residuales a los bloques predichos. La unidad de ALF 92 puede luego seleccionar un filtro (por ejemplo, según el filtrado de bucle adaptativo (ALF)) para una clase de un bloque de la imagen (162). La unidad de a Lf 92 puede seleccionar la clase basándose, por ejemplo, en un gradiente calculado para uno o más píxeles del bloque. De manera alternativa, la unidad de ALF 92 puede determinar una clase para el bloque basándose en otras características del bloque.
Según las técnicas de esta divulgación, la unidad de ALF 92 puede calcular un gradiente del bloque (164). La unidad de ALF 92 puede además determinar y realizar una transformada geométrica basada en el gradiente calculado (166). Por ejemplo, la unidad de ALF 92 puede determinar una transformada geométrica según las técnicas de la Tabla 1 como se analizó anteriormente. La unidad de ALF 92 puede aplicar la transformación geométrica a los coeficientes del filtro seleccionado o a una región de soporte de filtro del filtro seleccionado (por ejemplo, píxeles vecinos a un píxel que se filtrará mediante el uso del filtro seleccionado). La unidad de ALF 92 puede luego filtrar el bloque de la imagen decodificada usando el filtro seleccionado (168). Es decir, la unidad de ALF 92 filtra cada píxel del bloque usando el filtro seleccionado.
De esta manera, el método de la figura 9 representa un ejemplo de un método para filtrar un bloque decodificado de datos de video, que incluye decodificar un bloque actual de una imagen actual de los datos de video, seleccionar un filtro (según el filtrado de bucle adaptativo (ALF)) que se utilizará para filtrar píxeles del bloque actual, seleccionar una transformada geométrica que se realizará en una de una región de soporte de filtro o coeficientes del filtro seleccionado, realizar la transformada geométrica en la región de soporte de filtro o los coeficientes del filtro seleccionado, y filtrar al menos un píxel del bloque actual usando el filtro seleccionado después de realizar la transformada geométrica.
La figura 10 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un codificador de video (por ejemplo, durante un proceso de codificación de video). A fines de ejemplo y de explicación, el método de la figura 10 se describe con respecto al codificador de video 20 de la figura 4. Inicialmente, el codificador de video 20 codifica una imagen (170). Por ejemplo, el codificador de video 20 puede intra- o interpredecir bloques de la imagen, calcular residuales para los bloques predichos, transformar y cuantificar los datos residuales y codificar la entropía de la información de predicción y los coeficientes de transformación cuantificados para la imagen, como se analizó anteriormente con respecto a la figura 4. Posteriormente, el codificador de video 20 puede decodificar la imagen (172), por ejemplo, cuantificando inversamente y transformando inversamente los coeficientes de transformación cuantificados para reproducir valores residuales, luego sumando los valores residuales a los bloques predichos.
La unidad de ALF 64 puede luego predecir los coeficientes de un filtro (por ejemplo, según el filtrado de bucle adaptativo (ALF)) para una clase de bloque de la imagen usando un filtro fijo (174). La unidad de ALF 64 puede seleccionar la clase basándose, por ejemplo, en un gradiente calculado para uno o más píxeles del bloque. De manera alternativa, la unidad de ALF 64 puede determinar una clase para el bloque basándose en otras características del bloque. En algunos ejemplos, pueden estar disponibles múltiples filtros fijos para cada clase de bloque, y la unidad de ALF 64 puede evaluar cada uno de los filtros fijos disponibles para determinar cuál da como resultado el mejor rendimiento de distorsión de velocidad. La unidad de ALF 64 puede luego seleccionar los filtros fijos que produzcan el mejor rendimiento de distorsión de velocidad para cada clase de bloque, o un filtro de referencia de una imagen de referencia si el filtro de referencia produce un mejor rendimiento de distorsión de velocidad. La unidad de ALF 64 codifica luego una bandera que indica cuál de los filtros fijos se usa para cada clase de bloque (y de manera adicional o alternativa, si el filtro para una clase particular se predice a partir de un filtro de referencia de una imagen de referencia) (176).
La unidad de ALF 64 puede luego seleccionar filtros para cada clase de bloque de la imagen decodificada (178), determinar clases para cada uno de los bloques de la imagen decodificada (180), por ejemplo, basándose en gradientes calculados para los bloques, y filtrar los bloques usando los filtros seleccionados (182). Una vez más, la unidad de ALF 64 puede evaluar diferentes filtros para cada clase de bloque para determinar qué filtro produce el mejor rendimiento de distorsión de velocidad. Según las técnicas de esta divulgación, en algunos ejemplos, la unidad de ALF 64 puede fusionar dos o más clases de bloques, de manera que cada una de las clases fusionadas use el mismo filtro. Además, el codificador de video 20 puede codificar datos que indiquen cuál de los filtros se utilizará para cada clase de bloque.
De esta manera, el método de la figura 10 representa un ejemplo de un método para filtrar un bloque decodificado de datos de video que incluye la construcción de una pluralidad de filtros para clases de bloques de una imagen actual de datos de video, en donde construcción de una pluralidad de filtros para clases de bloques de una imagen actual de datos de video, en donde la construcción de la pluralidad de filtros comprende, para cada una de las clases, determinar si un filtro fijo se usa para predecir un conjunto de coeficientes de filtro de la clase, y en respuesta a la determinación de que se usa un filtro fijo para predecir el conjunto de coeficientes de filtro, determinar un valor de índice en un conjunto de filtros fijos de la clase y predecir el conjunto de coeficientes de filtro de la clase utilizando un filtro fijo del conjunto de filtros fijos identificados por el valor del índice, decodificar un bloque actual de una imagen actual de los datos de video, determinar una clase para el bloque actual, seleccionar un filtro de la pluralidad de filtros que corresponde a la clase para el bloque actual, y filtrar al menos un píxel del bloque actual usando el filtro seleccionado.
La figura 11 es un diagrama de flujo que ilustra un método de ejemplo para filtrar bloques de una imagen decodificada por un decodificador de video (por ejemplo, durante un proceso de decodificación de video). A fines de ejemplo y de explicación, el método de la figura 11 se describe con respecto al decodificador de video 30 de la figura 5.
Inicialmente, el decodificador de video 30 decodifica una imagen de datos de video (190), por ejemplo, mediante valores de decodificación de entropía de elementos de sintaxis para predicción y coeficientes de transformación cuantificados, cuantificación inversa y transformación inversa de los coeficientes de transformación cuantificados para reproducir valores residuales, luego sumando los valores residuales a los bloques predichos.
La unidad de ALF 92 puede luego decodificar una bandera que indica si los coeficientes de un filtro deben predecirse a partir de un filtro fijo (192) y, en algunos ejemplos, si los coeficientes de filtro deben predecirse a partir de un filtro fijo, datos que identifican el filtro fijo. La unidad de ALF 92 puede luego predecir los coeficientes del filtro usando el filtro fijo (suponiendo que los coeficientes del filtro se van a predecir a partir del filtro fijo en este ejemplo) (194). En otros ejemplos, la unidad de ALF 92 puede predecir coeficientes de filtro a partir de un filtro de referencia de una imagen de referencia, si la bandera indica que los coeficientes de filtro no se predicen a partir de un filtro fijo.
La unidad de ALF 92 puede luego seleccionar filtros para cada clase de bloque de la imagen decodificada (196), determinar clases para cada uno de los bloques de la imagen decodificada (198), por ejemplo, basándose en gradientes calculados para los bloques, y filtrar los bloques usando los filtros seleccionados (200). La unidad de ALF 92 puede decodificar datos para cada clase de bloque identificando un filtro que se utilizará para filtrar píxeles de bloques de esa clase.
De esta manera, el método de la figura 11 representa un ejemplo de un método de filtrado de un bloque decodificado de datos de video que incluye la construcción de una pluralidad de filtros para clases de bloques de una imagen actual de datos de video, en donde la construcción de la pluralidad de filtros comprende, para cada una de las clases, determinar si un filtro fijo se usa para predecir un conjunto de coeficientes de filtro de la clase, y en respuesta a la determinación de que se usa un filtro fijo para predecir el conjunto de coeficientes de filtro, determinar un valor de índice en un conjunto de filtros fijos de la clase y predecir el conjunto de coeficientes de filtro de la clase utilizando un filtro fijo del conjunto de filtros fijos identificados por el valor del índice, decodificar un bloque actual de una imagen actual de los datos de video, determinar una clase para el bloque actual, seleccionar un filtro de la pluralidad de filtros que corresponde a la clase para el bloque actual, y filtrar al menos un píxel del bloque actual usando el filtro seleccionado.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse o transmitirse, como una o más instrucciones o código, en un medio legible por ordenador y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible, como medios de almacenamiento de datos, o medios de comunicación, incluido cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, según un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder mediante uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no restrictivo, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se puede utilizar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Además, cualquier conexión se denomina correctamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota utilizando un cable coaxial, cable de fibra óptica, par trenzado, línea de suscriptor digital (DSL) o tecnologías inalámbricas como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debe entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que están dirigidos a medios de almacenamiento tangibles no transitorios. El disco, como se usa en la presente, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete y disco Blu-ray, donde los discos generalmente reproducen datos magnéticamente, mientras que los discos reproducen datos ópticamente con láser. Las combinaciones de los anteriores también deben incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables en campo (FP-GA) u otro circuito lógico integrado o discreto equivalente. Por consiguiente, el término "procesador", como se usa en la presente, puede referirse a cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para la implementación de las técnicas descritas en la presente. Además, en algunos aspectos, la funcionalidad descrita en la presente puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporarse en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos. Por lo tanto, un procesador puede estar formado por cualquiera de una variedad de circuitos de procesamiento integrados que comprenden uno o más procesadores implementados como circuitos de procesamiento de hardware fijo, circuitos de procesamiento programares y/o una combinación de circuitos de procesamiento tanto fijos como programares.
Las técnicas de esta divulgación pueden implementarse en una amplia variedad de dispositivos o aparatos, incluido un microteléfono, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta divulgación se describen varios componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización por diferentes unidades de hardware. Más bien, como se describió anteriormente, varias unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o firmware adecuados.
Se han descrito varios ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (1)

  1. REIVINDICACIONES
    1. Un método para filtrar un bloque decodificado de datos de video, el método comprende:
    asignar un conjunto de n filtros fijos a cada clase de una pluralidad de clases de bloques de una imagen actual de datos de video, en donde se usa un filtro fijo para predecir los coeficientes de filtro de un filtro que se aplicará a un bloque decodificado de datos de video; para cada clase que usa un filtro fijo, seleccionar (196) un filtro fijo del conjunto de n filtros fijos, en donde se selecciona un primer filtro fijo para una primera clase, y un segundo filtro fijo, diferente del primer filtro fijo, se selecciona para una segunda clase;
    para cada clase que usa un filtro fijo, generar el conjunto de coeficientes de filtro que se aplicarán a un bloque decodificado de datos de video de la clase, mediante la adición de coeficientes de filtro del filtro fijo seleccionado a un conjunto de coeficientes de filtro señalizados para la clase, en donde se usa un conjunto común de coeficientes de filtro señalizados para al menos la primera clase y la segunda clase;
    decodificar un bloque actual de una imagen actual de los datos de video;
    determinar (198) una clase para el bloque actual; seleccionar un conjunto generado de coeficientes de filtro que corresponda a la clase del bloque actual; y
    filtrar (200) al menos un píxel del bloque actual usando el conjunto seleccionado de coeficientes de filtro.
    2. El método de la reivindicación 1, que comprende además determinar, para cada una de las clases, si se usa un filtro fijo para predecir el conjunto de coeficientes de filtro determinando, para cada una de las clases, un valor de una bandera que indica si el filtro fijo se usa para predecir el conjunto de coeficientes de filtro para la clase.
    3. El método de la reivindicación 1, que comprende además construir una pluralidad de filtros y determinar un valor que representa uno de:
    todos los conjuntos de coeficientes de filtro para todas las clases se predicen a partir de al menos uno de los filtros fijos; o algunos de los conjuntos de coeficientes de filtro de las clases se predicen a partir de uno o más de los filtros fijos y los conjuntos restantes de coeficientes de filtro no se predicen a partir de ninguno de los filtros fijos.
    4. El método de la reivindicación 3, comprende además, cuando el valor representa que todos los conjuntos de coeficientes de filtro para todas las clases se predicen a partir de al menos uno de los filtros fijos, determinar valores de índice para cada una de las clases que representan uno de los filtros fijos a partir del cual se predice el conjunto de coeficientes de filtro para la clase correspondiente.
    5. El método de la reivindicación 3, que comprende además, cuando el valor representa que todos los conjuntos de coeficientes de filtro para todas las clases se predicen a partir de al menos uno de los filtros fijos, evitar la codificación de una bandera que indica si se usa un filtro fijo para predecir un conjunto de coeficientes de filtro de cada clase.
    6. El método de la reivindicación 3, que comprende además, cuando el valor representa que algunos de los conjuntos de coeficientes de filtro de las clases se predicen a partir de uno o más de los filtros fijos: determinar cuál de las clases corresponde a conjuntos de coeficientes de filtro que se predicen a partir de uno o más de los filtros fijos; y
    para cada uno de los conjuntos de coeficientes de filtro que se predicen a partir de uno o más de los filtros fijos, determinar el valor de índice que representa el filtro fijo de uno o más filtros fijos a partir del cual se predice el conjunto correspondiente de coeficientes de filtro.
    7. El método de la reivindicación 1, que comprende además codificar el bloque actual antes de decodificar el bloque actual.
    8. Un dispositivo para filtrar un bloque decodificado de datos de video, el dispositivo comprende:
    una memoria configurada para almacenar los datos de video; y
    una o más unidades de procesamiento implementadas en circuitos configurados para:
    asignar un conjunto de n filtros fijos a cada clase de una pluralidad de clases de bloques de una imagen actual de datos de video, en donde se usa un filtro fijo para predecir los coeficientes de filtro de un filtro que se aplicará a un bloque decodificado de datos de video;
    para cada clase que usa un filtro fijo, seleccionar un filtro fijo del conjunto de n filtros fijos, en donde se selecciona un primer filtro fijo para una primera clase, y un segundo filtro fijo, diferente del primer filtro fijo, se selecciona para una segunda clase;
    para cada clase que usa un filtro fijo, generar el conjunto de coeficientes de filtro que se aplicarán a un bloque decodificado de datos de video de la clase mediante la adición de coeficientes de filtro del filtro fijo seleccionado a un conjunto de coeficientes de filtro señalizados de la clase, en donde se usa un conjunto común de coeficientes de filtro señalizados para al menos la primera clase y la segunda clase;
    decodificar un bloque actual de una imagen actual de los datos de video;
    determinar una clase para el bloque actual;
    seleccionar el conjunto generado de coeficientes de filtro que corresponde a la clase para el bloque actual; y filtrar al menos un píxel del bloque actual que usa el conjunto seleccionado de coeficientes de filtro.
    9. El dispositivo de la reivindicación 8, en donde el dispositivo es un dispositivo de comunicación inalámbrica, que comprende además:
    un receptor configurado para recibir datos de video, incluida la imagen actual.
    10. El dispositivo de la reivindicación 9, en donde el dispositivo de comunicación inalámbrica es un teléfono celular y los datos de video son recibidos por el receptor y modulados según un estándar de comunicación celular.
    11. Un medio de almacenamiento legible por ordenador que tiene almacenadas instrucciones que cuando se ejecutan hacen que un procesador ejecute el método de cualquiera de las reivindicaciones 1-7.
ES17708064T 2016-02-15 2017-02-15 Predicción de coeficientes de filtro a partir de filtros fijos para codificación de video Active ES2866894T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662295461P 2016-02-15 2016-02-15
US201662324776P 2016-04-19 2016-04-19
US15/432,848 US11405611B2 (en) 2016-02-15 2017-02-14 Predicting filter coefficients from fixed filters for video coding
PCT/US2017/017964 WO2017142943A1 (en) 2016-02-15 2017-02-15 Predicting filter coefficients from fixed filters for video coding

Publications (1)

Publication Number Publication Date
ES2866894T3 true ES2866894T3 (es) 2021-10-20

Family

ID=59561914

Family Applications (3)

Application Number Title Priority Date Filing Date
ES17708064T Active ES2866894T3 (es) 2016-02-15 2017-02-15 Predicción de coeficientes de filtro a partir de filtros fijos para codificación de video
ES17708066T Active ES2927641T3 (es) 2016-02-15 2017-02-15 Fusionar filtros para múltiples clases de bloques para codificación de video
ES17708062T Active ES2863275T3 (es) 2016-02-15 2017-02-15 Transformaciones geométricas para filtros para la codificación de video

Family Applications After (2)

Application Number Title Priority Date Filing Date
ES17708066T Active ES2927641T3 (es) 2016-02-15 2017-02-15 Fusionar filtros para múltiples clases de bloques para codificación de video
ES17708062T Active ES2863275T3 (es) 2016-02-15 2017-02-15 Transformaciones geométricas para filtros para la codificación de video

Country Status (11)

Country Link
US (4) US11064195B2 (es)
EP (3) EP3417614B1 (es)
JP (4) JP6914951B2 (es)
KR (3) KR20180113528A (es)
CN (4) CN108605126B (es)
BR (3) BR112018016598A2 (es)
CA (3) CA3011867A1 (es)
ES (3) ES2866894T3 (es)
HU (3) HUE053984T2 (es)
TW (3) TWI755376B (es)
WO (3) WO2017142946A1 (es)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10405000B2 (en) * 2014-11-21 2019-09-03 Vid Scale, Inc. One-dimensional transform modes and coefficient scan order
US11064195B2 (en) 2016-02-15 2021-07-13 Qualcomm Incorporated Merging filters for multiple classes of blocks for video coding
US10419755B2 (en) 2016-05-16 2019-09-17 Qualcomm Incorporated Confusion of multiple filters in adaptive loop filtering in video coding
US10616582B2 (en) 2016-09-30 2020-04-07 Qualcomm Incorporated Memory and bandwidth reduction of stored data in image/video coding
US10623737B2 (en) 2016-10-04 2020-04-14 Qualcomm Incorporated Peak sample adaptive offset
US10555006B2 (en) 2016-12-22 2020-02-04 Qualcomm Incorporated Deriving bilateral filter information based on a prediction mode in video coding
US10506230B2 (en) 2017-01-04 2019-12-10 Qualcomm Incorporated Modified adaptive loop filter temporal prediction for temporal scalability support
WO2018170801A1 (zh) * 2017-03-22 2018-09-27 华为技术有限公司 图像滤波方法及装置
US10440396B2 (en) 2017-03-28 2019-10-08 Qualcomm Incorporated Filter information sharing among color components
US10778974B2 (en) 2017-07-05 2020-09-15 Qualcomm Incorporated Adaptive loop filter with enhanced classification methods
EP3454556A1 (en) 2017-09-08 2019-03-13 Thomson Licensing Method and apparatus for video encoding and decoding using pattern-based block filtering
WO2019093916A1 (en) * 2017-11-07 2019-05-16 Huawei Technologies Co., Ltd Interpolation filter for an inter prediction apparatus and method for video coding
WO2019093919A1 (en) 2017-11-13 2019-05-16 Huawei Technologies Co., Ltd In-loop filter apparatus and method for video coding
US10721469B2 (en) 2017-11-28 2020-07-21 Qualcomm Incorporated Line buffer reduction for adaptive loop filtering in video coding
CN115955562A (zh) * 2017-11-29 2023-04-11 韩国电子通信研究院 采用环内滤波的图像编码/解码方法和装置
CN107896330B (zh) 2017-11-29 2019-08-13 北京大学深圳研究生院 一种用于帧内和帧间预测的滤波方法
CN111386703B (zh) * 2017-12-01 2022-06-03 索尼公司 编码装置、编码方法、解码装置和解码方法
EP4246973A3 (en) * 2018-03-09 2023-12-06 Huawei Technologies Co., Ltd. Method and apparatus for image filtering with adaptive multiplier coefficients
CN111758258B (zh) * 2018-03-26 2023-06-27 华为技术有限公司 用于视频编码的帧间预测装置和方法
US20190306534A1 (en) 2018-04-02 2019-10-03 Qualcomm Incorporated Unification of deblocking filter and adaptive loop filter
JP2021166319A (ja) * 2018-07-06 2021-10-14 ソニーグループ株式会社 符号化装置、符号化方法、復号装置、及び、復号方法
AU2019301656B2 (en) * 2018-07-11 2023-10-26 Interdigital Vc Holdings, Inc. In-loop filter with multiple regions
CN110830680B (zh) * 2018-08-08 2021-03-16 瑞昱半导体股份有限公司 确定滤波器系数的方法
JP2022002353A (ja) * 2018-09-25 2022-01-06 ソニーグループ株式会社 符号化装置、符号化方法、復号装置、及び、復号方法
CN112740678A (zh) * 2018-09-25 2021-04-30 索尼公司 编码装置、编码方法、解码装置和解码方法
CN111083491A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 细化运动矢量的利用
US11412260B2 (en) 2018-10-29 2022-08-09 Google Llc Geometric transforms for image compression
EP3857879A4 (en) 2018-11-12 2022-03-16 Beijing Bytedance Network Technology Co., Ltd. SIMPLIFICATION OF COMBINED INTER-INTRA PREDICTION
EP3861742A4 (en) 2018-11-20 2022-04-13 Beijing Bytedance Network Technology Co., Ltd. DIFFERENCE CALCULATION BASED ON SPATIAL POSITION
WO2020103877A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Coding and decoding of video coding modes
WO2020103934A1 (en) 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Construction method for inter prediction with geometry partition
US10841617B2 (en) * 2018-11-27 2020-11-17 Semiconductor Components Industries, Llc Methods and apparatus for successive intra block prediction
US11044473B2 (en) * 2018-12-21 2021-06-22 Qualcomm Incorporated Adaptive loop filtering classification in video coding
CN109862374A (zh) * 2019-01-07 2019-06-07 北京大学 一种自适应环路滤波方法及装置
US11595662B2 (en) 2019-02-06 2023-02-28 Tencent America LLC Method and apparatus for neighboring block availability in video coding
JP7288071B2 (ja) 2019-03-02 2023-06-06 北京字節跳動網絡技術有限公司 ビデオ処理方法、装置及び記憶媒体
WO2020177756A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Size dependent inter coding
AU2020248837B2 (en) 2019-03-24 2023-06-08 Beijing Bytedance Network Technology Co., Ltd. Nonlinear adaptive loop filtering in video processing
JP7239732B2 (ja) 2019-04-02 2023-03-14 北京字節跳動網絡技術有限公司 双方向オプティカルフローに基づく映像符号化及び復号化
KR20230169434A (ko) 2019-04-02 2023-12-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 디코더 측 움직임 벡터 유도
WO2020211769A1 (en) 2019-04-15 2020-10-22 Beijing Bytedance Network Technology Co., Ltd. Clipping parameter derivation in adaptive loop filter
CN113767623B (zh) 2019-04-16 2024-04-02 北京字节跳动网络技术有限公司 用于视频编解码的自适应环路滤波
CN113728630B (zh) 2019-04-19 2023-11-17 北京字节跳动网络技术有限公司 不同运动矢量细化中的基于区域的梯度计算
CN113711609B (zh) 2019-04-19 2023-12-01 北京字节跳动网络技术有限公司 利用光流的预测细化过程中的增量运动矢量
US11284114B2 (en) * 2019-04-23 2022-03-22 Qualcomm Incorporated Adaptive loop filter set index signaling
US11019334B2 (en) * 2019-05-17 2021-05-25 Qualcomm Incorporated Multiple adaptive loop filter sets for video coding
WO2020239119A1 (en) 2019-05-30 2020-12-03 Beijing Bytedance Network Technology Co., Ltd. Adaptive loop filtering for chroma components
CN114097228B (zh) 2019-06-04 2023-12-15 北京字节跳动网络技术有限公司 具有几何分割模式编解码的运动候选列表
KR102627821B1 (ko) 2019-06-04 2024-01-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 이웃 블록 정보를 사용한 모션 후보 리스트 구성
US11418779B2 (en) * 2019-06-11 2022-08-16 Qualcomm Incorporated Clipping indices coding for adaptive loop filter in video coding
KR20220030953A (ko) 2019-07-09 2022-03-11 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 적응적 루프 필터링을 위한 샘플 결정
MX2022000123A (es) 2019-07-11 2022-02-16 Beijing Bytedance Network Tech Co Ltd Relleno de muestras en filtrado de bucle adaptativo.
CN114175636B (zh) * 2019-07-14 2024-01-12 北京字节跳动网络技术有限公司 自适应参数集中的自适应环路滤波的指示
WO2021008546A1 (en) 2019-07-15 2021-01-21 Beijing Bytedance Network Technology Co., Ltd. Accessing samples across video unit boundaries in adaptive loop filtering
US11234010B2 (en) * 2019-08-28 2022-01-25 Qualcomm Incorporated Cross-component adaptive loop filtering for video coding
KR20220058899A (ko) 2019-09-18 2022-05-10 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 적응형 루프 필터의 2-파트 시그널링
EP4018652A4 (en) 2019-09-22 2022-11-02 Beijing Bytedance Network Technology Co., Ltd. FILLING METHOD IN AN ADAPTIVE LOOP FILTER
US11356707B2 (en) * 2019-09-23 2022-06-07 Qualcomm Incorporated Signaling filters for video processing
EP4022910A4 (en) 2019-09-27 2022-11-16 Beijing Bytedance Network Technology Co., Ltd. ADAPTIVE LOOP FILTERING BETWEEN DIFFERENT VIDEO UNITS
CN114450959A (zh) 2019-09-28 2022-05-06 北京字节跳动网络技术有限公司 视频编解码中的几何分割模式
WO2021072177A1 (en) 2019-10-09 2021-04-15 Bytedance Inc. Cross-component adaptive loop filtering in video coding
WO2021068922A1 (en) 2019-10-10 2021-04-15 Beijing Bytedance Network Technology Co., Ltd. Deblocking of blocks coded in geometry partition mode
CN114556939A (zh) 2019-10-10 2022-05-27 北京字节跳动网络技术有限公司 自适应环路滤波中不可用样点位置处的填充处理
CN114556924B (zh) 2019-10-14 2024-01-26 字节跳动有限公司 视频处理中色度残差的联合编解码与滤波的方法、装置及介质
JP7389252B2 (ja) 2019-10-29 2023-11-29 北京字節跳動網絡技術有限公司 クロスコンポーネント適応ループフィルタ
KR20220106116A (ko) 2019-12-09 2022-07-28 바이트댄스 아이엔씨 비디오 코딩에서 양자화 그룹 사용
CN115104302A (zh) 2019-12-11 2022-09-23 抖音视界有限公司 跨分量适应性回路滤波的样点填充
WO2021138293A1 (en) 2019-12-31 2021-07-08 Bytedance Inc. Adaptive color transform in video coding
KR20210118768A (ko) * 2020-03-23 2021-10-01 주식회사 케이티 비디오 신호 처리 방법 및 장치
US11394967B2 (en) 2020-04-26 2022-07-19 Tencent America LLC Geometric cross-component filtering
CN112543338B (zh) * 2020-10-16 2022-03-04 腾讯科技(深圳)有限公司 视频解码方法、装置、计算机可读介质及电子设备
WO2022140567A1 (en) 2020-12-23 2022-06-30 Qualcomm Incorporated Adaptive loop filter with fixed filters
US11778177B2 (en) 2020-12-23 2023-10-03 Qualcomm Incorporated Adaptive loop filter with fixed filters
CN114640846A (zh) * 2021-02-23 2022-06-17 杭州海康威视数字技术股份有限公司 滤波方法、装置及设备
US11818343B2 (en) * 2021-03-12 2023-11-14 Tencent America LLC Sample offset with predefined filters
WO2023051561A1 (en) * 2021-09-29 2023-04-06 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2024017010A1 (en) * 2022-07-20 2024-01-25 Mediatek Inc. Method and apparatus for adaptive loop filter with alternative luma classifier for video coding
WO2024055940A1 (en) * 2022-09-15 2024-03-21 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL2123051T3 (pl) 2006-12-18 2011-04-29 Koninl Philips Electronics Nv Kompresja i dekompresja obrazu
WO2009037803A1 (ja) * 2007-09-20 2009-03-26 Panasonic Corporation 画像ノイズ除去装置、画像ノイズ除去方法及び画像ノイズ除去プログラム
EP2048886A1 (en) 2007-10-11 2009-04-15 Panasonic Corporation Coding of adaptive interpolation filter coefficients
JPWO2009133844A1 (ja) 2008-04-30 2011-09-01 株式会社東芝 エッジを考慮したフィルタリング機能を備えた動画像符号化/復号化方法及び装置
US8548041B2 (en) 2008-09-25 2013-10-01 Mediatek Inc. Adaptive filter
US8611435B2 (en) 2008-12-22 2013-12-17 Qualcomm, Incorporated Combined scheme for interpolation filtering, in-loop filtering and post-loop filtering in video coding
KR101647376B1 (ko) 2009-03-30 2016-08-10 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
KR20110001990A (ko) 2009-06-30 2011-01-06 삼성전자주식회사 영상 데이터의 인 루프 필터링 장치 및 방법과 이를 이용한 영상 부호화/복호화 장치
WO2011078002A1 (ja) * 2009-12-22 2011-06-30 ソニー株式会社 画像処理装置および方法、並びにプログラム
US9369712B2 (en) 2010-01-14 2016-06-14 Dolby Laboratories Licensing Corporation Buffered adaptive filters
JP5464435B2 (ja) 2010-04-09 2014-04-09 ソニー株式会社 画像復号装置および方法
US9094658B2 (en) 2010-05-10 2015-07-28 Mediatek Inc. Method and apparatus of adaptive loop filtering
CN106454356B (zh) 2010-06-17 2019-11-08 夏普株式会社 解码装置及编码装置
US9154807B2 (en) 2010-06-25 2015-10-06 Qualcomm Incorporated Inclusion of switched interpolation filter coefficients in a compressed bit-stream
KR20120016991A (ko) 2010-08-17 2012-02-27 오수미 인터 프리딕션 방법
US9247265B2 (en) 2010-09-01 2016-01-26 Qualcomm Incorporated Multi-input adaptive filter based on combination of sum-modified Laplacian filter indexing and quadtree partitioning
US9363533B2 (en) 2010-09-29 2016-06-07 Electronics And Telecommunications Research Institute Method and apparatus for video-encoding/decoding using filter information prediction
US8849053B2 (en) 2011-01-14 2014-09-30 Sony Corporation Parametric loop filter
US8917950B2 (en) 2011-01-18 2014-12-23 Sony Corporation Simplifying parametric loop filters
US8964852B2 (en) 2011-02-23 2015-02-24 Qualcomm Incorporated Multi-metric filtering
JP2014099672A (ja) * 2011-03-09 2014-05-29 Sharp Corp 復号装置、符号化装置、および、データ構造
GB2488830B (en) 2011-03-10 2015-07-29 Canon Kk Method and device for encoding image data and method and device for decoding image data
US20120230423A1 (en) 2011-03-10 2012-09-13 Esenlik Semih Line memory reduction for video coding and decoding
US9292940B2 (en) 2011-04-28 2016-03-22 Koninklijke Philips N.V. Method and apparatus for generating an image coding signal
CN103597827B (zh) 2011-06-10 2018-08-07 寰发股份有限公司 可伸缩视频编码方法及其装置
JP2013118605A (ja) 2011-06-28 2013-06-13 Sony Corp 画像処理装置と画像処理方法
CN102857749B (zh) 2011-07-01 2016-04-13 华为技术有限公司 一种视频图像的像素分类方法和装置
US9277228B2 (en) 2011-07-18 2016-03-01 Qualcomm Incorporated Adaptation parameter sets for video coding
EP2735144B1 (en) 2011-07-21 2020-01-08 BlackBerry Limited Adaptive filtering based on pattern information
US11496760B2 (en) 2011-07-22 2022-11-08 Qualcomm Incorporated Slice header prediction for depth maps in three-dimensional video codecs
US9357235B2 (en) * 2011-10-13 2016-05-31 Qualcomm Incorporated Sample adaptive offset merged with adaptive loop filter in video coding
US9462298B2 (en) * 2011-10-21 2016-10-04 Qualcomm Incorporated Loop filtering around slice boundaries or tile boundaries in video coding
US20130113880A1 (en) 2011-11-08 2013-05-09 Jie Zhao High Efficiency Video Coding (HEVC) Adaptive Loop Filter
US9451252B2 (en) 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
EP2822276B1 (en) 2012-02-29 2018-11-07 LG Electronics Inc. Inter-layer prediction method and apparatus using same
US9584805B2 (en) 2012-06-08 2017-02-28 Qualcomm Incorporated Prediction mode information downsampling in enhanced layer coding
KR102079803B1 (ko) 2012-06-12 2020-04-07 엘지전자 주식회사 영상 디코딩 방법 및 이를 이용하는 장치
EP2901689A1 (en) 2012-09-27 2015-08-05 Dolby Laboratories Licensing Corporation Inter-layer reference picture processing for coding standard scalability
WO2014072571A1 (en) 2012-10-01 2014-05-15 Nokia Corporation Method and apparatus for scalable video coding
US20140092953A1 (en) 2012-10-02 2014-04-03 Sharp Laboratories Of America, Inc. Method for signaling a step-wise temporal sub-layer access sample
US9674519B2 (en) 2012-11-09 2017-06-06 Qualcomm Incorporated MPEG frame compatible video coding
EP3058736B1 (en) 2013-10-14 2019-02-27 Microsoft Technology Licensing, LLC Encoder-side options for intra block copy prediction mode for video and image coding
US9589206B2 (en) 2013-12-05 2017-03-07 Hochschule Pforzheim Optimizing an image filter
US20150365703A1 (en) 2014-06-13 2015-12-17 Atul Puri System and method for highly content adaptive quality restoration filtering for video coding
KR102276854B1 (ko) * 2014-07-31 2021-07-13 삼성전자주식회사 인루프 필터 파라미터 예측을 사용하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
US10057574B2 (en) 2015-02-11 2018-08-21 Qualcomm Incorporated Coding tree unit (CTU) level adaptive loop filter (ALF)
EP3313078B1 (en) 2015-06-18 2020-12-23 LG Electronics Inc. Image properties-based adaptive filtering method and device in image coding system
WO2017030270A1 (ko) * 2015-08-17 2017-02-23 엘지전자(주) 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
US11064195B2 (en) 2016-02-15 2021-07-13 Qualcomm Incorporated Merging filters for multiple classes of blocks for video coding
CN114979648B (zh) 2016-05-27 2024-02-13 松下电器(美国)知识产权公司 编码方法、解码方法、及编码和解码方法
WO2018122092A1 (en) 2016-12-30 2018-07-05 Telefonaktiebolaget Lm Ericsson (Publ) Methods, apparatus, and computer programs for decoding media

Also Published As

Publication number Publication date
JP2019508971A (ja) 2019-03-28
CN113891076A (zh) 2022-01-04
KR20180113529A (ko) 2018-10-16
EP3417613A1 (en) 2018-12-26
JP2019505144A (ja) 2019-02-21
US20220337825A1 (en) 2022-10-20
CN108605128B (zh) 2021-10-08
TWI755376B (zh) 2022-02-21
TWI761332B (zh) 2022-04-21
JP2019505143A (ja) 2019-02-21
ES2863275T3 (es) 2021-10-11
EP3417613B1 (en) 2021-03-17
CA3012590A1 (en) 2017-08-24
EP3417614B1 (en) 2021-03-24
US20170238020A1 (en) 2017-08-17
JP7233218B2 (ja) 2023-03-06
TW201733353A (zh) 2017-09-16
EP3417615A1 (en) 2018-12-26
US11405611B2 (en) 2022-08-02
US20170237982A1 (en) 2017-08-17
BR112018016598A2 (pt) 2018-12-26
ES2927641T3 (es) 2022-11-08
CN108605127B (zh) 2021-04-02
HUE060035T2 (hu) 2023-01-28
CN108605127A (zh) 2018-09-28
WO2017142943A1 (en) 2017-08-24
KR20180113528A (ko) 2018-10-16
CA3011867A1 (en) 2017-08-24
KR20180113527A (ko) 2018-10-16
TW201740730A (zh) 2017-11-16
JP7071603B1 (ja) 2022-05-27
WO2017142946A1 (en) 2017-08-24
CN108605126A (zh) 2018-09-28
HUE053984T2 (hu) 2021-08-30
BR112018016560A2 (pt) 2019-01-02
JP2022084028A (ja) 2022-06-06
CN108605126B (zh) 2021-09-28
WO2017142939A1 (en) 2017-08-24
EP3417614A1 (en) 2018-12-26
CA3012051A1 (en) 2017-08-24
US11563938B2 (en) 2023-01-24
EP3417615B1 (en) 2022-09-07
BR112018016561A2 (pt) 2019-01-02
HUE053920T2 (hu) 2021-07-28
TWI782904B (zh) 2022-11-11
US20170237981A1 (en) 2017-08-17
US11064195B2 (en) 2021-07-13
CN108605128A (zh) 2018-09-28
JP6914951B2 (ja) 2021-08-04
TW201735637A (zh) 2017-10-01
JP7055745B2 (ja) 2022-04-18

Similar Documents

Publication Publication Date Title
ES2866894T3 (es) Predicción de coeficientes de filtro a partir de filtros fijos para codificación de video
CN109691102B (zh) 跨分量滤波器
ES2693643T3 (es) Exploración dependiente de modo de coeficientes de un bloque de datos de vídeo
US20170324962A1 (en) Signalling of filtering information
JP2018509074A (ja) コーディングツリーユニット(ctu)レベル適応ループフィルタ(alf)
WO2019113205A1 (en) Intra-prediction with far neighboring pixels
WO2020214900A1 (en) Methods and apparatus of video coding using prediction refinement with optical flow