ES2824828T3 - Filtro adaptativo de múltiples entradas basado en una combinación de indexación de filtro laplaciano modificado por suma y división de árbol cuaternario - Google Patents

Filtro adaptativo de múltiples entradas basado en una combinación de indexación de filtro laplaciano modificado por suma y división de árbol cuaternario Download PDF

Info

Publication number
ES2824828T3
ES2824828T3 ES11735938T ES11735938T ES2824828T3 ES 2824828 T3 ES2824828 T3 ES 2824828T3 ES 11735938 T ES11735938 T ES 11735938T ES 11735938 T ES11735938 T ES 11735938T ES 2824828 T3 ES2824828 T3 ES 2824828T3
Authority
ES
Spain
Prior art keywords
filter
activity metric
video
value
filters
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
ES11735938T
Other languages
English (en)
Inventor
In Chong
Marta Karczewicz
Wei-Jung Chien
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 ES2824828T3 publication Critical patent/ES2824828T3/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/439Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using cascaded computational arrangements for performing a single operation, e.g. filtering
    • 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
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento: generar un elemento de sintaxis de filtro para cada filtro de un primer y un segundo conjunto de filtros, en el que un primer valor para el elemento de sintaxis de filtro indica que los coeficientes de un filtro comprenden al menos un coeficiente distinto de cero y un segundo valor para el elemento de sintaxis de filtro indica que los coeficientes de un filtro no comprenden al menos un coeficiente distinto de cero; en respuesta a que el elemento de sintaxis de filtro se establece al primer valor, generar para su inclusión en un flujo de bits codificado, el elemento de sintaxis de filtro e información adicional que identifica los coeficientes del filtro; y en respuesta a que el elemento de sintaxis de filtro se establece al segundo valor, generar para su inclusión en el flujo de bits codificado, el elemento de sintaxis de filtro sin información adicional que identifica los coeficientes del filtro, en el que el elemento de sintaxis es un único bit, y en el que el elemento de sintaxis es parte de un encabezado de una serie de bloques de vídeo, aplicar un primer filtro del primer conjunto de filtros a una primera entrada en base a un valor de una primera métrica de actividad para generar un primer resultado filtrado, en el que la primera entrada comprende una imagen reconstruida posdespixelada, estando el valor de la primera métrica de actividad dentro de un primer intervalo de valores, en el que el primer intervalo de valores para la primera métrica de actividad se indexa al primer filtro y un intervalo diferente de valores para la primera métrica de actividad se indexa a un filtro diferente del primer conjunto de filtros, aplicar un segundo filtro del segundo conjunto de filtros a una segunda entrada en base a una segunda métrica de actividad para generar un segundo resultado filtrado, en el que la segunda entrada comprende una imagen predespixelada, una imagen de predicción y una imagen de error de predicción cuantificada, estando el valor de la segunda métrica de actividad dentro de un segundo intervalo de valores, en el que el segundo intervalo de valores para la segunda métrica de actividad se indexa al segundo filtro y un intervalo diferente de valores para la segunda métrica de actividad se indexa a un filtro diferente del segundo conjunto de filtros, en el que el segundo filtro es diferente al primer filtro, y en el que la primera entrada y la segunda entrada corresponden a datos de bloques de vídeo intermedios producidos durante un proceso de codificación de vídeo; en el que la primera métrica de actividad es una métrica de actividad que cuantifica una varianza de píxel dentro de una unidad codificada de la primera entrada, y en el que la segunda métrica de actividad es una métrica de actividad que cuantifica una varianza de píxel dentro de una unidad codificada de la segunda entrada; y generar una imagen filtrada en base a una combinación del primer resultado filtrado y el segundo resultado filtrado.

Description

DESCRIPCIÓN
Filtro adaptativo de múltiples entradas basado en una combinación de indexación de filtro laplaciano modificado por suma y división de árbol cuaternario
CAMPO TÉCNICO
[0001] La presente divulgación se refiere a la codificación de vídeo digital basada en bloques usada para comprimir datos de vídeo y, más en particular, a técnicas para determinar filtros para su uso en el filtrado de bloques de vídeo.
ANTECEDENTES
[0002] Las capacidades de vídeo digital se pueden incorporar a una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión directa digital, dispositivos de comunicación inalámbrica, tales como radioteléfonos, sistemas de radiodifusión inalámbrica, asistentes personales digitales (PDA), ordenadores portátiles, ordenadores de escritorio, ordenadores de tableta, cámaras digitales, dispositivos de grabación digital, dispositivos de videojuegos, consolas de videojuegos y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como MPEG-2, MPEG-4 o H.264/MPEG-4 de UIT-T, parte 10, codificación avanzada de vídeo (AVC), para transmitir y recibir vídeo digital más eficazmente. Las técnicas de compresión de vídeo realizan predicción espacial y temporal para reducir o eliminar la redundancia inherente a las secuencias de vídeo. Nuevos estándares de vídeo, tales como el estándar de codificación de vídeo de alta eficacia (HEVC) que se está desarrollando por el "Equipo de Colaboración Conjunta de Codificación de Vídeo" (JCTVC), que es una colaboración entre MPEG y UIT-T, continúan surgiendo y evolucionando. Este nuevo estándar HEVC también se denomina a veces H.265.
[0003] Las técnicas de compresión de vídeo basadas en bloques pueden realizar predicción espacial y/o predicción temporal. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial entre bloques de vídeo dentro de una unidad de vídeo codificado dada, que puede comprender una trama de vídeo, un fragmento de una trama de vídeo o similares. Por el contrario, la intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal entre bloques de vídeo de unidades codificadas sucesivas de una secuencia de vídeo. Para la intracodificación, un codificador de vídeo realiza una predicción espacial para comprimir datos en base a otros datos dentro de la misma unidad de vídeo codificado. Para la intercodificación, el codificador de vídeo realiza una estimación de movimiento y compensación de movimiento para rastrear el movimiento de los bloques de vídeo correspondientes de dos o más unidades de vídeo codificado adyacentes.
[0004] Un bloque de vídeo codificado se puede representar por información de predicción que se puede usar para crear o identificar un bloque predictivo, y un bloque residual de datos indicativos de diferencias entre el bloque que se está codificando y el bloque predictivo. En el caso de la intercodificación, se usan uno o más vectores de movimiento para identificar el bloque predictivo de datos de una unidad codificada previa o posterior, mientras que en el caso de la intracodificación, el modo de predicción se puede usar para generar el bloque predictivo en base a datos dentro de la unidad codificada asociada al bloque de vídeo que se está codificando. Tanto la intracodificación como la intercodificación pueden definir varios modos de predicción diferentes, que pueden definir diferentes tamaños de bloque y/o técnicas de predicción usadas en la codificación. También se pueden incluir tipos adicionales de elementos de sintaxis como parte de los datos de vídeo codificados para controlar o definir las técnicas o parámetros de codificación usados en el proceso de codificación.
[0005] Después de la codificación de predicción basada en bloques, el codificador de vídeo puede aplicar procesos de transformada, cuantificación y codificación por entropía para reducir adicionalmente la velocidad de transmisión de bits asociada a la comunicación de un bloque residual. Las técnicas de transformada pueden comprender procesos de transformadas de coseno discretas (DCT) o procesos conceptualmente similares, tales como transformadas de ondículas, transformadas enteras u otros tipos de transformadas. En un proceso de transformada de coseno discreta, como ejemplo, el proceso de transformada convierte un conjunto de valores de píxel en coeficientes de transformada, que pueden representar la energía de los valores de píxel en el dominio de frecuencia. La cuantificación se aplica a los coeficientes de transformada, y en general implica un proceso que limita el número de bits asociados a cualquier coeficiente de transformada dado. La codificación por entropía comprende uno o más procesos que comprimen conjuntamente una secuencia de coeficientes de transformada cuantificados.
[0006] El filtrado de bloques de vídeo se puede aplicar como parte de los bucles de codificación y descodificación, o como parte de un proceso posterior al filtrado en bloques de vídeo reconstruidos. El filtrado se usa comúnmente, por ejemplo, para reducir el efecto pixelado u otros artefactos comunes a la codificación de vídeo basada en bloques. Los coeficientes de filtro (a veces denominados derivaciones de filtro) se pueden definir o seleccionar para promover niveles deseables de filtrado de bloques de vídeo que puedan reducir el efecto pixelado y/o mejorar la calidad de vídeo de otras maneras. Un conjunto de coeficientes de filtro, por ejemplo, puede definir cómo se aplica el filtrado a lo largo de los bordes de los bloques de vídeo o de otras localizaciones dentro de los bloques de vídeo. Diferentes coeficientes de filtro pueden provocar diferentes niveles de filtrado con respecto a diferentes píxeles de los bloques de vídeo. El filtrado, por ejemplo, puede suavizar o agudizar las diferencias en la intensidad de los valores de píxeles adyacentes para ayudar a eliminar los artefactos no deseados.
[0007] La propuesta de tecnología de codificación de vídeo de Qualcomm Inc. presentada en el primer congreso del Equipo de Colaboración Conjunta de Codificación de Vídeo en Dresde, del 15 al 23 de abril de 2010, con número de documento JCTVC-A121, divulga en las secciones 2.5.1 y 2.5.2 una aplicación de un filtro en bucle adaptativo basado en árbol cuaternario que comprende un conjunto de filtros, en el que se elige un filtro del conjunto de filtros en base a una medida de actividad de laplaciano modificado por suma.
[0008] El documento EP 2,141,927 divulga filtros para codificación de vídeo. En la Figura 3, se divulga un nuevo diseño de filtro posterior que recibe entradas de una señal reconstruida, una señal de error de predicción cuantificada y, opcionalmente, de una señal descodificada. Las señales de entrada se filtran por filtros que se adaptan a las propiedades estadísticas de las respectivas señales de entrada.
[0009] El documento US 2010/0177822 divulga una predicción de filtro basada en métricas de actividad en codificación de vídeo. En otro aspecto, la selección de un filtro puede depender de la métrica de actividad.
BREVE EXPLICACIÓN
[0010] La presente divulgación describe técnicas asociadas al filtrado de datos de vídeo en un proceso de codificación de vídeo y/o descodificación de vídeo. De acuerdo con la presente divulgación, el filtrado se aplica en un codificador, y la información del filtro se codifica en el flujo de bits para posibilitar que un descodificador identifique el filtrado que se aplicó en el codificador. El descodificador recibe datos de vídeo codificados que incluyen la información del filtro, descodifica los datos de vídeo y aplica el filtrado en base a la información de filtrado. De esta manera, el descodificador aplica el mismo filtrado que se aplicó en el codificador.
[0011] De acuerdo con las técnicas de la presente divulgación, los datos de vídeo se pueden codificar en unidades denominadas unidades codificadas (CU). Las unidades codificadas se pueden dividir en unidades codificadas más pequeñas, o subunidades, usando un esquema de división de árbol cuaternario. La sintaxis que identifica el esquema de división de árbol cuaternario para una unidad codificada particular se puede transmitir desde un codificador a un descodificador. Se pueden filtrar múltiples entradas asociadas con cada subunidad durante el proceso de descodificación y reconstrucción de los datos de vídeo codificados. La sintaxis en el flujo de bits recibido por el descodificador puede identificar los filtros usados en el codificador para una subunidad particular. El filtro usado para una entrada particular se puede seleccionar en base a una indexación de filtro a métrica de actividad, donde determinados valores para una métrica de actividad se indexan a filtros específicos dentro de un conjunto de filtros. En los casos en los que la métrica de actividad se determina usando un valor del laplaciano modificado por suma, la indexación de métrica de actividad a filtro a veces se denomina indexación de laplaciano modificado por suma o simplemente indexación de laplaciano.
[0012] Se pueden aplicar diferentes tipos de filtrado en base a una métrica de actividad determinada para los datos de vídeo. La métrica de actividad puede cuantificar la actividad asociada a uno o más bloques de píxeles dentro de los datos de vídeo. La métrica de actividad puede comprender una métrica de varianza indicativa de la varianza de píxel dentro de un conjunto de píxeles. Por ejemplo, la métrica de actividad puede incluir un valor de una función del laplaciano modificado por suma, como se explica con mayor detalle a continuación. De acuerdo con las técnicas de la presente divulgación, una unidad de filtro, tal como un filtro en bucle adaptativo, se puede configurar para usar múltiples filtros para múltiples entradas en base a la indexación de filtro laplaciano modificado por suma. Como se describirá con más detalle a continuación, las múltiples entradas descritas en la presente divulgación se refieren en general a datos de bloques de vídeo intermedios o datos de imagen que se producen durante los procesos de codificación y descodificación. Las múltiples entradas pueden incluir, por ejemplo, un bloque o imagen reconstruido (RI), un bloque o imagen reconstruido predespixelado (pRI), un bloque o imagen de predicción (PI) y/o una imagen de error (EI) de predicción cuantificada. Además, como se explica con mayor detalle a continuación, se pueden aplicar las técnicas de filtrado de la presente divulgación a las unidades codificadas de diversos tamaños usando un esquema de división de árbol cuaternario. Al utilizar múltiples filtros con indexación de laplaciano a filtro para múltiples entradas para unidades codificadas divididas usando un esquema de división de árbol cuaternario, se podría mejorar el rendimiento de codificación de vídeo, medido por una o ambas de la tasa de compresión y la calidad de vídeo reconstruido.
[0013] Un enfoque de múltiples entradas y múltiples filtros, como se contempla en la presente divulgación, puede dar como resultado un gran número de filtros y, por lo tanto, un gran número de coeficientes de filtro que necesitan transferirse desde un codificador a un descodificador. Sin embargo, para algunos filtros, todos los coeficientes pueden ser cero. Por ejemplo, en un escenario de 4 entradas, un codificador puede determinar que la mejor imagen se obtiene usando solo tres de las cuatro entradas. En el descodificador, se puede conseguir la reconstrucción de una imagen en base a solo tres de las cuatro entradas aplicando un filtro de todo ceros a la cuarta entrada. En consecuencia, el uso de un filtro con todos los coeficientes iguales a cero se puede producir con más frecuencia en los esquemas de filtrado de múltiples entradas que en los esquemas de filtrado de una única entrada. Sin embargo, la transmisión de un filtro de todo ceros puede requerir una gran cantidad de bits. Para reducir la cantidad de bits codificados necesarios para transferir los coeficientes de filtro desde el codificador al descodificador, los aspectos de la presente divulgación incluyen el uso de un indicador de cero, que puede ser un elemento de sintaxis de un bit en un encabezado de una trama, fragmento, unidad codificada más grande, unidad codificada u otra serie de bloques de vídeo. Si todos los coeficientes para un filtro en particular son cero, entonces el codificador puede transmitir al descodificador un indicador de cero establecido a un primer valor. Tras recibir un indicador de cero establecido al primer valor, el descodificador puede reconstruir el filtro sin recibir realmente datos que identifiquen todos los coeficientes iguales a cero del codificador. Si los coeficientes para un filtro particular incluyen al menos un coeficiente distinto de cero, entonces el codificador puede transmitir al descodificador un indicador de cero establecido a un segundo valor. Tras recibir un indicador de cero establecido al segundo valor, el descodificador reconstruye el filtro en base a los coeficientes recibidos posteriormente desde el codificador. Por tanto, para reconstruir un filtro, un codificador solo puede necesitar transmitir coeficientes de filtro a un descodificador para aquellos casos donde al menos un coeficiente de filtro sea distinto de cero.
[0014] En un ejemplo, un procedimiento de codificación de datos de vídeo incluye aplicar un primer filtro de un conjunto de filtros a una primera entrada en base a una métrica de actividad para generar un primer resultado filtrado; aplicar un segundo filtro a una segunda entrada para generar un segundo resultado filtrado, en el que la segunda entrada es diferente a la primera entrada; y generar una imagen filtrada en base al primer resultado filtrado y el segundo resultado filtrado.
[0015] En otro ejemplo, un dispositivo de codificación incluye una unidad de filtro configurada para aplicar un primer filtro de un conjunto de filtros a una primera entrada en base a una métrica de actividad para generar un primer resultado filtrado y aplicar un segundo filtro a una segunda entrada para generar un segundo resultado filtrado, en el que la segunda entrada es diferente a la primera entrada; y una memoria configurada para almacenar una imagen filtrada en base al primer resultado filtrado y el segundo resultado filtrado.
[0016] En otro ejemplo, un aparato incluye medios para aplicar un primer filtro de un conjunto de filtros a una primera entrada en base a una métrica de actividad para generar un primer resultado filtrado; medios para aplicar un segundo filtro a una segunda entrada para generar un segundo resultado filtrado, en el que la segunda entrada es diferente a la primera entrada; y medios para generar una imagen filtrada en base al primer resultado filtrado y el segundo resultado filtrado.
[0017] Las técnicas descritas en esta divulgación pueden implementarse en hardware, software, firmware o en cualquier combinación de los mismos. Si se implementa en hardware, un aparato puede realizarse como un circuito integrado, un procesador, lógica discreta o cualquier combinación de los mismos. Si se implementa en software, el software puede ejecutarse en uno o más procesadores, tales como un microprocesador, un circuito integrado específico de la aplicación (ASIC), una matriz de puertas programables in situ (FPGA) o un procesador de señales digitales (DSP). El software que ejecuta las técnicas se puede almacenar inicialmente en un medio legible por ordenador y cargar y ejecutar en el procesador.
[0018] En consecuencia, la presente divulgación también contempla un medio de almacenamiento legible por ordenador no transitorio que almacena de manera tangible una o más instrucciones, que cuando se ejecutan por uno o más procesadores hacen que el uno o más procesadores apliquen un primer filtro de un conjunto de filtros a una primera entrada en base a una métrica de actividad para generar un primer resultado filtrado; apliquen un segundo filtro a una segunda entrada para generar un segundo resultado filtrado, en el que la segunda entrada es diferente a la primera entrada; y generen una imagen filtrada en base al primer resultado filtrado y el segundo resultado filtrado.
[0019] El objetivo de la presente solicitud se divulga en la materia objeto de las reivindicaciones independientes. Otras modificaciones y desarrollos ventajosos se incluyen en las reivindicaciones dependientes.
BREVE DESCRIPCIÓN DE LAS FIGURAS
[0020]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo ejemplar.
Las FIGS. 2A y 2B son diagramas conceptuales que ilustran un ejemplo de división de árbol cuaternario aplicada a una unidad de codificación más grande (LCU).
La FIG. 3 es un diagrama de bloques que ilustra un codificador de vídeo ejemplar consecuente con la presente divulgación.
La FIG. 4 es un diagrama de bloques que ilustra un descodificador de vídeo ejemplar consecuente con la presente divulgación.
La FIG. 5 es un diagrama conceptual que ilustra intervalos de valores para una métrica de actividad.
La FIG. 6 es un diagrama de bloques que ilustra una unidad de filtro ejemplar consecuente con la presente divulgación.
La FIG. 7 es un diagrama de flujo que ilustra una técnica de codificación consecuente con la presente divulgación.
La FIG. 8 es un diagrama de flujo que ilustra una técnica de descodificación consecuente con la presente divulgación.
La FIG. 9 es un diagrama de flujo que ilustra una técnica de codificación consecuente con la presente divulgación.
La FIG. 10 es un diagrama de flujo que ilustra una técnica de descodificación consecuente con la presente divulgación.
DESCRIPCIÓN DETALLADA
[0021] La presente divulgación describe técnicas asociadas al filtrado de datos de vídeo en un proceso de codificación de vídeo y/o descodificación de vídeo. De acuerdo con la presente divulgación, el filtrado se aplica en un codificador, y la información del filtro se codifica en el flujo de bits para posibilitar que un descodificador identifique el filtrado que se aplicó en el codificador. El descodificador recibe datos de vídeo codificados que incluyen la información del filtro, descodifica los datos de vídeo y aplica el filtrado en base a la información de filtrado. De esta manera, el descodificador aplica el mismo filtrado que se aplicó en el codificador.
[0022] De acuerdo con las técnicas de la presente divulgación, los datos de vídeo se pueden codificar en unidades denominadas unidades codificadas (CU). Las unidades codificadas se pueden dividir en unidades codificadas más pequeñas, o subunidades, usando un esquema de división de árbol cuaternario. La sintaxis que identifica el esquema de división de árbol cuaternario para una unidad codificada particular se puede transmitir desde un codificador a un descodificador. Se pueden filtrar múltiples entradas asociadas con cada subunidad durante el proceso de descodificación y reconstrucción de los datos de vídeo codificados. La sintaxis en el flujo de bits recibido por el descodificador puede identificar los filtros usados en el codificador para una subunidad particular. El filtro usado para una entrada particular se puede seleccionar en base a una indexación de filtro a métrica de actividad, donde determinados valores para una métrica de actividad se indexan a filtros específicos dentro de un conjunto de filtros. En los casos en los que la métrica de actividad se determina usando un valor del laplaciano modificado por suma, la indexación de métrica de actividad a filtro a veces se denomina indexación de laplaciano modificado por suma o simplemente indexación de laplaciano.
[0023] Se pueden aplicar diferentes tipos de filtrado en base a una métrica de actividad determinada para los datos de vídeo. La métrica de actividad puede cuantificar la actividad asociada a uno o más bloques de píxeles dentro de los datos de vídeo. La métrica de actividad puede comprender una métrica de varianza indicativa de la varianza de píxel dentro de un conjunto de píxeles. Por ejemplo, la métrica de actividad puede incluir un valor de una función del laplaciano modificado por suma, como se explica con mayor detalle a continuación. De acuerdo con las técnicas de la presente divulgación, una unidad de filtro, tal como un filtro en bucle adaptativo, se puede configurar para usar múltiples filtros para múltiples entradas en base a la indexación de filtro laplaciano modificado por suma. Como se describirá con más detalle a continuación, las múltiples entradas descritas en la presente divulgación se refieren en general a datos de bloques de vídeo intermedios o datos de imagen que se producen durante los procesos de codificación y descodificación. Las múltiples entradas pueden incluir, por ejemplo, un bloque o imagen reconstruido (RI), un bloque o imagen reconstruido predespixelado (pRI), un bloque o imagen de predicción (PI) y/o una imagen de error (EI) de predicción cuantificada. Además, como se explica con mayor detalle a continuación, se pueden aplicar las técnicas de filtrado de la presente divulgación a las unidades codificadas de diversos tamaños usando un esquema de división de árbol cuaternario. Al utilizar múltiples filtros con indexación de laplaciano a filtro para múltiples entradas para unidades codificadas divididas usando un esquema de división de árbol cuaternario, se podría mejorar el rendimiento de codificación de vídeo, medido por una o ambas de la tasa de compresión y la calidad de vídeo reconstruido.
[0024] Un enfoque de múltiples entradas y múltiples filtros, como se contempla en la presente divulgación, puede dar como resultado un gran número de filtros y, por lo tanto, un gran número de coeficientes de filtro que necesitan transferirse desde un codificador a un descodificador. Sin embargo, para algunos filtros, todos los coeficientes pueden ser cero. Por ejemplo, en un escenario de 4 entradas, un codificador puede determinar que la mejor imagen se obtiene usando solo tres de las cuatro entradas. En el descodificador, se puede conseguir la reconstrucción de una imagen en base a solo tres de las cuatro entradas aplicando un filtro de todo ceros a la cuarta entrada. En consecuencia, el uso de un filtro con todos los coeficientes iguales a cero se puede producir con más frecuencia en los esquemas de filtrado de múltiples entradas que en los esquemas de filtrado de una única entrada. Sin embargo, la transmisión de un filtro de todo ceros puede requerir una gran cantidad de bits. Por ejemplo, en el caso de un filtro de 9x9 donde cada coeficiente de filtro se transmite usando 5 bits, transmitir todos los coeficientes del filtro desde el codificador al descodificador puede necesitar más de 400 bits.
[0025] Para reducir la cantidad de bits codificados necesarios para transferir los coeficientes de filtro desde el codificador al descodificador, los aspectos de la presente divulgación incluyen el uso de un indicador de cero, que puede ser un elemento de sintaxis de un bit en un encabezado de una trama, fragmento, unidad codificada más grande, unidad codificada u otra serie de bloques de vídeo. Si todos los coeficientes para un filtro en particular son cero, entonces el codificador puede transmitir al descodificador un indicador de cero establecido a un primer valor.
Tras recibir un indicador de cero establecido al primer valor, el descodificador puede reconstruir el filtro sin recibir realmente datos que identifiquen todos los coeficientes iguales a cero del codificador. Si los coeficientes para un filtro particular incluyen al menos un coeficiente distinto de cero, entonces el codificador puede transmitir al descodificador un indicador de cero establecido a un segundo valor. Tras recibir un indicador de cero establecido al segundo valor, el descodificador reconstruye el filtro en base a los coeficientes recibidos posteriormente desde el codificador. Por tanto, para reconstruir un filtro, un codificador solo puede necesitar transmitir coeficientes de filtro a un descodificador para aquellos casos donde al menos un coeficiente de filtro sea distinto de cero.
[0026] El indicador de cero transmitido por el codificador puede, por ejemplo, incluirse en el encabezado de una serie de bloques de vídeo, tal como en un encabezado de fragmento, un encabezado de grupo de imágenes, un encabezado de secuencia u otro encabezado. Aunque la presente divulgación, con fines explicativos, en general analizará el indicador de cero incluido en un encabezado, el indicador de cero se puede incluir de forma alternativa en un pie u otra estructura de datos donde se pueda incluir la sintaxis. Un encabezado puede incluir un indicador de cero por filtro por entrada. Como ejemplo, se supone que fm(l, n) es igual a un coeficiente de filtro para el n-ésimo coeficiente, del l-ésimo filtro de la m-ésima entrada. Suponiendo cuatro entradas (es decir, m = 0 a 3) y cuatro filtros por entrada (es decir, l = 0 a 3), una unidad codificada podría incluir un total de 16 indicadores de cero, uno para cada uno de los 16 filtros. Si zero_flagm(l) = 1, lo que significa que todos los coeficientes para el l-ésimo filtro de la m-ésima entrada son iguales a cero, entonces no es necesario enviar ningún coeficiente desde el codificador al descodificador para ese filtro. Si zero_flagm(l) = 0, lo que significa que al menos un coeficiente del l-ésimo filtro de la m-ésima entrada no es igual a cero, entonces se transmiten datos adicionales que identifican los coeficientes para el l-ésimo filtro de la mésima entrada desde el codificador al descodificador. Como se describirá con más detalle a continuación, los datos adicionales pueden incluir valores reales para algunos o todos los coeficientes de filtro o pueden incluir información tal como información de diferencia que permite al descodificador reconstruir los filtros en base a una combinación de los datos adicionales y otra información ya conocida por el descodificador.
[0027] Aunque las técnicas de la presente divulgación en general se describirán con referencia al filtrado en bucle, las técnicas se pueden aplicar al filtrado en bucle, filtrado posterior al bucle y otros esquemas de filtrado tales como el filtrado conmutado. El filtrado en bucle se refiere al filtrado en el que los datos filtrados son parte de los bucles de codificación y descodificación de modo que los datos filtrados se usan para la intra o intercodificación predictiva. El filtrado posterior al bucle se refiere al filtrado que se aplica a los datos de vídeo reconstruidos después del bucle de codificación. Con el filtrado posterior al bucle, los datos no filtrados se usan para la intra o intercodificación predictiva. Las técnicas de la presente divulgación no se limitan al filtrado en bucle o al filtrado posterior, y se pueden aplicar a una amplia gama de filtrados aplicados durante la codificación de vídeo.
[0028] En la presente divulgación, el término "codificación" se refiere a la codificación o la descodificación. De forma similar, el término "codificador" se refiere en general a cualquier codificador de vídeo, descodificador de vídeo o codificador/descodificador combinado (códec). En consecuencia, el término "codificador" se usa en el presente documento para referirse a un dispositivo o aparato informático especializado que realiza la codificación de vídeo o la descodificación de vídeo.
[0029] Adicionalmente, en la presente divulgación, el término "filtro" se refiere en general a un conjunto de coeficientes de filtro. Por ejemplo, un filtro de 3x3 se define por un conjunto de 9 coeficientes de filtro, un filtro de 5x5 se define por un conjunto de 25 coeficientes de filtro, y así sucesivamente. Por lo tanto, codificar un filtro en general se refiere a codificar información en el flujo de bits que permitirá a un descodificador determinar o reconstruir el conjunto de coeficientes de filtro. Si bien la codificación de un filtro puede incluir la codificación directa de un conjunto completo de coeficientes de filtro, también puede incluir la codificación directa de solo un conjunto parcial de coeficientes de filtro o la codificación de ningún coeficiente de filtro en absoluto, sino en cambio la codificación de información que permite a un descodificador reconstruir los coeficientes de filtro en base a otra información conocida u obtenible por el decodificador. Por ejemplo, un codificador puede codificar información que describe cómo modificar un conjunto de coeficientes de filtro existentes para crear un nuevo conjunto de coeficientes de filtro.
[0030] El término "conjunto de filtros" se refiere en general a un grupo de más de un filtro. Por ejemplo, un conjunto de 2 filtros de 3x3 podría incluir un primer conjunto de 9 coeficientes de filtro y un segundo conjunto de 9 coeficientes de filtro. De acuerdo con las técnicas descritas en la presente divulgación, para una serie de bloques de vídeo, tales como una trama, fragmento o unidad de codificación más grande, la información que identifica los conjuntos de filtros se transmite desde el codificador al descodificador en un encabezado para la serie de los bloques de vídeo. Cada filtro del conjunto de filtros puede tener un indicador de cero correspondiente en el encabezado para indicar si el filtro contiene todos los coeficientes iguales a cero o contiene al menos un coeficiente distinto de cero.
[0031] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo 110 ejemplar que puede implementar las técnicas de la presente divulgación. Como se muestra en la FIG. 1, el sistema 110 incluye un dispositivo de origen 112 que transmite datos de vídeo codificado a un dispositivo de destino 116 por medio de un canal de comunicación 115. El dispositivo de origen 112 y el dispositivo de destino 116 pueden comprender cualquiera de una amplia gama de dispositivos. En algunos casos, el dispositivo de origen 112 y el dispositivo de destino 116 pueden comprender auriculares de dispositivos de comunicación inalámbrica, tales como los llamados radioteléfonos móviles o satelitales. Sin embargo, las técnicas de la presente divulgación que se aplican de más en general al filtrado de datos de vídeo, no se limitan necesariamente a aplicaciones o configuraciones inalámbricas, y se pueden aplicar a dispositivos no inalámbricos, incluyendo las capacidades de codificación y/o descodificación de vídeo.
[0032] En el ejemplo de la FIG. 1, el dispositivo de origen 112 incluye una fuente de vídeo 120, un codificador de vídeo 122, un modulador/desmodulador (módem) 123 y un transmisor 124. El dispositivo de destino 116 incluye un receptor 126, un módem 127, un descodificador de vídeo 128 y un dispositivo de visualización 130. De acuerdo con la presente divulgación, el codificador de vídeo 122 del dispositivo de origen 112 se puede configurar para seleccionar uno o más conjuntos de coeficientes de filtro para múltiples entradas en un proceso de filtrado de bloques de vídeo y a continuación codificar el uno o más conjuntos seleccionados de coeficientes de filtro. Se pueden seleccionar filtros específicos del uno o más conjuntos de coeficientes de filtro en base a una métrica de actividad para una o más entradas, y los coeficientes de filtro se pueden usar para filtrar la una o más entradas. Las técnicas de filtrado de la presente divulgación en general son compatibles con cualquier técnica para codificar o señalizar coeficientes de filtro desde un codificador a un descodificador.
[0033] De acuerdo con las técnicas de la presente divulgación, el codificador de vídeo 122 puede transmitir a un descodificador de vídeo 128 uno o más conjuntos de coeficientes de filtro para una trama o fragmento. Para la trama o fragmento, el codificador de vídeo 122, por ejemplo, puede transmitir un conjunto de filtros que se van a usar con todas las entradas, o puede transmitir múltiples conjuntos de filtros que se van a usar con múltiples entradas (un conjunto por entrada, por ejemplo). Cada bloque de vídeo o unidad codificada dentro de esa trama o fragmento puede contener a continuación una sintaxis adicional para identificar qué filtro o filtros del conjunto de filtros se va(n) a usar para cada entrada de ese bloque de vídeo, o qué filtro o filtros del conjunto de filtros que se va(n) a usar se puede(n) determinar en base a una métrica de actividad asociada a una o más de las entradas.
[0034] Más específicamente, el codificador de vídeo 122 del dispositivo de origen 112 puede seleccionar uno o más conjuntos de filtros para una trama o fragmento, aplicar filtros del/de los conjunto(s) a entradas asociadas con las unidades codificadas del fragmento o la trama durante el proceso de codificación, y a continuación codificar los conjuntos de filtros (es decir, conjuntos de coeficientes de filtro) para su comunicación al descodificador de vídeo 128 del dispositivo de destino 116. El codificador de vídeo 122 puede determinar una métrica de actividad asociada a las entradas de las unidades codificadas para seleccionar qué filtro(s) del/de los conjunto(s) de filtros debe usar con esa unidad codificada particular. En el lado del descodificador, el descodificador de vídeo 128 del dispositivo de destino 116 también puede determinar la métrica de actividad para una o más entradas asociadas con la unidad codificada para que el descodificador de vídeo 128 pueda determinar qué filtro(s) del/de los conjunto(s) de filtros aplicar a los datos de píxeles, o en algunos casos, el descodificador de vídeo 128 puede determinar los coeficientes de filtro directamente a partir de la información de filtro recibida en la sintaxis de flujo de bits. El descodificador de vídeo 128 puede descodificar los coeficientes de filtro en base a descodificación directa o descodificación predictiva dependiendo de cómo se codificaron los coeficientes de filtro, que se pueden señalizar como parte de la sintaxis de flujo de bits. Adicionalmente, el flujo de bits puede incluir un indicador de cero para cada filtro para indicar si un filtro tiene coeficientes de filtro distintos de cero. Si el indicador de cero indica que el filtro no tiene ningún coeficiente distinto de cero, entonces el descodificador 128 puede reconstruir el filtro de todos los coeficientes iguales a cero sin recibir otra sintaxis del dispositivo de origen 112. El sistema 110 ilustrado de la FIG. 1 es simplemente ejemplar. Las técnicas de filtrado de la presente divulgación se pueden realizar por cualquier dispositivo de codificación o descodificación. El dispositivo de origen 112 y el dispositivo de destino 116 son simplemente ejemplos de dispositivos de codificación que pueden admitir dichas técnicas.
[0035] El codificador de vídeo 122 del dispositivo de origen 112 puede codificar datos de vídeo recibidos desde la fuente de vídeo 120 usando las técnicas de la presente divulgación. La fuente de vídeo 120 puede comprender un dispositivo de captación de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo captado previamente o una transmisión de vídeo desde un proveedor de contenido de vídeo. Como otra alternativa, la fuente de vídeo 120 puede generar datos basados en gráficos de ordenador como fuente de vídeo, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si la fuente de vídeo 120 es una cámara de vídeo, el dispositivo de origen 112 y el dispositivo de destino 116 pueden formar los llamados teléfonos con cámara o videoteléfonos. En cada caso, el vídeo capado, precaptado o generado por ordenador se puede codificar por el codificador de vídeo 122.
[0036] Una vez que los datos de vídeo se codifican por el codificador de vídeo 122, la información de vídeo codificada se puede modular a continuación por el módem 123 de acuerdo con un estándar de comunicación, por ejemplo, tal como el acceso múltiple por división de código (CDMA) u otro estándar o técnica de comunicación, y transmitir al dispositivo de destino 116 por medio del transmisor 124. El módem 123 puede incluir diversos mezcladores, filtros, amplificadores u otros componentes diseñados para la modulación de señales. El transmisor 124 puede incluir circuitos diseñados para transmitir datos, incluyendo amplificadores, filtros y una o más antenas.
[0037] El receptor 126 del dispositivo de destino 116 recibe información sobre el canal 115, y el módem 127 desmodula la información. El proceso de descodificación de vídeo realizado por el descodificador de vídeo 128 puede incluir filtrado, por ejemplo, como parte de la descodificación en bucle o como una etapa de filtrado posterior que sigue al bucle de descodificación. De cualquier manera, el conjunto de filtros aplicados por el descodificador de vídeo 128 para un fragmento o trama particular se puede descodificar usando las técnicas de la presente divulgación. Si, por ejemplo, un indicador de cero indica que un filtro incluye coeficientes distintos de cero y se usa la codificación predictiva para los coeficientes de filtro, se pueden aprovechar las similitudes entre diferentes coeficientes de filtro para reducir la cantidad de información transmitida por el canal 115. En particular, un filtro (es decir, un conjunto de coeficientes de filtro) se puede codificar de forma predictiva como valores de diferencia en relación con otro conjunto de coeficientes de filtro asociados a un filtro diferente. El filtro diferente, por ejemplo, se puede asociar con un fragmento o trama diferente. En dicho caso, el descodificador de vídeo 128 podría recibir un flujo de bits codificado que comprende bloques de vídeo y filtrar información que identifica la trama o fragmento diferente con el que el filtro diferente es el filtro asociado. La información del filtro también incluye valores de diferencia que definen el filtro actual en relación con el filtro de la unidad codificada diferente. En particular, los valores de diferencia pueden comprender valores de diferencia de coeficientes de filtro que definen coeficientes de filtro para el filtro actual en relación con los coeficientes de filtro de un filtro diferente usado para una unidad codificada diferente.
[0038] El descodificador de vídeo 128 descodifica los bloques de vídeo, genera los coeficientes de filtro y filtra los bloques de vídeo descodificados en base a los coeficientes de filtro generados. Los bloques de vídeo descodificados y filtrados se pueden ensamblar en tramas de vídeo para formar datos de vídeo descodificados. El dispositivo de visualización 128 muestra los datos de vídeo descodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0039] El canal de comunicación 115 puede comprender cualquier medio de comunicación inalámbrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física, o cualquier combinación de medios inalámbricos y cableados. El canal de comunicación 115 puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global tal como Internet. El canal de comunicación 115 representa en general cualquier medio de comunicación adecuado o una colección de diferentes medios de comunicación, para transmitir datos de vídeo desde el dispositivo de origen 112 al dispositivo de destino 116.
[0040] El codificador de vídeo 122 y el descodificador de vídeo 128 pueden funcionar de acuerdo con un estándar de compresión de vídeo, tal como el estándar H.264 de UIT-T, denominado de forma alternativa MPEG-4, parte 10, Codificación Avanzada de Vídeo (AVC), que se usará en partes de la presente divulgación con propósitos de explicación. Sin embargo, muchas de las técnicas de la presente divulgación se pueden aplicar fácilmente a cualquiera de una variedad de otros estándares de codificación de vídeo, incluyendo el estándar HEVC surgido recientemente. En general, cualquier estándar que permite el filtrado en el codificador y descodificador se puede beneficiar de diversos aspectos de la enseñanza de la presente divulgación.
[0041] Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de vídeo 122 y el descodificador de vídeo 128 se pueden integrar cada uno con un codificador y un descodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y software, para manejar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si fuera aplicable, las unidades MUX-DEMUX pueden estar conformes con el protocolo multiplexor H.223 de UIT u otros protocolos tales como el protocolo de datagramas de usuario (UDP).
[0042] El codificador de vídeo 122 y el descodificador de vídeo 128 se pueden implementar cada uno como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno del codificador de vídeo 122 y el descodificador de vídeo 128 se pueden incluir en uno o más codificadores o descodificadores, pudiendo cualquiera de los mismos estar integrado como parte de un codificador/descodificador combinado (CÓDEC) en un dispositivo móvil, dispositivo de abonado, dispositivo de radiodifusión, servidor respectivo o similares.
[0043] En algunos casos, los dispositivos 112, 116 pueden funcionar de una manera sustancialmente simétrica. Por ejemplo, cada uno de los dispositivos 112, 116 puede incluir componentes de codificación y descodificación de vídeo. Por consiguiente, el sistema 110 pueda admitir la transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 112, 116, por ejemplo, para transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo o videotelefonía.
[0044] Durante el proceso de codificación, el codificador de vídeo 122 puede ejecutar una serie de técnicas o etapas de codificación. En general, un codificador de vídeo 122 funciona sobre bloques de vídeo dentro de tramas de vídeo individuales para codificar los datos de vídeo. En un ejemplo, un bloque de vídeo puede corresponder a un macrobloque o una división de un macrobloque. Los macrobloques son un tipo de bloque de vídeo definido por el estándar H.264 de UIT y otros estándares. Los macrobloques típicamente se refieren a bloques de datos de 16x16, aunque el término también se usa a veces para referirse genéricamente a cualquier bloque de vídeo de tamaño NxN. El estándar H.264 de UIT-T admite la intrapredicción en diversos tamaños de bloque, tales como 16x16, 8x8 o 4x4 para componentes de luma y 8x8 para componentes de croma, así como la interpredicción en diversos tamaños de bloque, tales como 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 y 4x4 para componentes de luma y tamaños ajustados a escala correspondientes para componentes de croma. En la presente divulgación, "NxN" se refiere a las dimensiones de píxel del bloque en lo que respecta a las dimensiones vertical y horizontal, por ejemplo 16x16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical y 16 píxeles en una dirección horizontal. Asimismo, un bloque de NxN tiene, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero positivo. Los píxeles de un bloque se pueden disponer en filas y columnas.
[0045] El estándar HEVC de reciente surgimiento define nuevos términos para bloques de vídeo. En particular, los bloques de vídeo (o divisiones de los mismos) se pueden denominar "unidades codificadas" (o CU). Con el estándar HEVC, las unidades codificadas más grandes (LCU) se pueden dividir en CU más pequeñas de acuerdo con un esquema de división de árbol cuaternario, y las diferentes CU que se definen en el esquema se pueden dividir además en las llamadas unidades de predicción (PU). Las LCU, las CU y las PU son todas bloques de vídeo en el sentido de la presente divulgación. También se pueden usar otros tipos de bloques de vídeo, consecuentes con el estándar HEVC u otros estándares de codificación de vídeo. Por tanto, la frase "bloques de vídeo" se refiere a cualquier tamaño de bloque de vídeo. Se pueden incluir CU separadas para componentes de luma y tamaños ajustados a escala para componentes de croma para un píxel dado, aunque también se podrían usar otros espacios de color.
[0046] Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con un estándar de codificación especificado. Cada trama de vídeo puede incluir una pluralidad de fragmentos. Cada fragmento puede incluir una pluralidad de bloques de vídeo, que se pueden disponer en divisiones, también denominadas subbloques. De acuerdo con el esquema de división de árbol cuaternario mencionado anteriormente y descrito con más detalle a continuación, una primera CU de N/2xN/2 puede comprender un subbloque de una LCU de NxN, una segunda CU de N/4xN/4 también puede comprender un subbloque de la primera CU. Una PU de N/8xN/8 puede comprender un subbloque de la segunda CU. De forma similar, como otro ejemplo, los tamaños de bloque que son menores de 16x16 se pueden denominar divisiones de un bloque de vídeo de 16x16 o subbloques del bloque de vídeo de 16x16. Asimismo, para un bloque de NxN, los tamaños de bloque menores a NxN se pueden denominar divisiones o subbloques del bloque de NxN. Los bloques de vídeo pueden comprender bloques de datos de píxeles en el dominio de píxel, o bloques de coeficientes de transformada en el dominio de transformada, por ejemplo, tras la aplicación de una transformada, tal como una transformada discreta del coseno (DCT), una transformada de números enteros, una transformada de ondículas o una transformada conceptualmente similar a los datos de bloques de vídeo residuales que representan diferencias de píxeles entre los bloques de vídeo codificados y los bloques de vídeo predictivos. En algunos casos, un bloque de vídeo puede comprender bloques de coeficientes de transformada cuantificados en el dominio de transformada.
[0047] Los datos de sintaxis dentro de un flujo de bits pueden definir una LCU para una trama o un fragmento, que es una unidad de codificación más grande en términos del número de píxeles para esa trama o fragmento. En general, una LCU o CU tiene un propósito similar a un macrobloque codificado de acuerdo con H.264, excepto que las LCU y las CU no tienen una distinción de tamaño específica. En cambio, un tamaño de LCU se puede definir de trama en trama o de fragmento en fragmento, y una LCU se puede separar en CU. En general, las referencias en la presente divulgación a una CU se pueden referir a una unidad codificada más grande de una imagen o a una sub-CU de una LCU. Una LCU se puede separar en sub-CU, y cada sub-CU se puede separar en sub-CU. Los datos de sintaxis para un flujo de bits pueden definir un número máximo de veces que se puede separar una LCU, denominado profundidad de CU. En consecuencia, un flujo de bits también puede definir una unidad de codificación más pequeña (SCU). La presente divulgación también usa los términos "bloque" y "bloque de vídeo" para referirse a cualquiera de una LCU, CU, PU, SCU o TU.
[0048] Como se presenta anteriormente, una LCU se puede asociar a una estructura de datos de árbol cuaternario. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU, donde un nodo raíz corresponde a la LCU. Si una CU se separa en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, de los que cada uno corresponde a una de las sub-CU. Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar datos de sintaxis para la CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de separación, que indica si la CU correspondiente al nodo está separada en sub-CU. Los elementos de sintaxis para una CU se pueden definir de manera recursiva y pueden depender de si la CU está separada en sub­ CU.
[0049] Una CU que no está separada puede incluir una o más unidades de predicción (PU). En general, una PU representa la totalidad o una parte de la CU correspondiente e incluye datos para recuperar una muestra de referencia para la PU. Por ejemplo, cuando la PU se codifica en intramodo, la PU puede incluir datos que describen un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU se codifica en intermodo, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento pueden describir, por ejemplo, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, una precisión de un cuarto de píxel o una precisión de un octavo de píxel), una trama de referencia a la que apunta el vector de movimiento y/o una lista de referencia (por ejemplo, lista 0 o lista 1) para el vector de movimiento. Los datos para la CU que definen la(s) PU también pueden describir, por ejemplo, una división de la CU en una o más PU. Los modos de división pueden diferir entre si la CU está sin codificar, codificada en modo de intrapredicción o codificada en modo de interpredicción.
[0050] Una CU que tiene una o más PU también puede incluir una o más unidades de transformada (TU). Tras la predicción usando una PU, un codificador de vídeo puede calcular un valor residual para la parte de la CU correspondiente a la PU. El valor residual puede transformarse, cuantificarse y escanearse. Una TU no está necesariamente limitada al tamaño de una PU. Por tanto, las TU pueden ser más grandes o más pequeñas que las PU correspondientes para la misma CU. En algunos ejemplos, el tamaño máximo de una TU puede ser el tamaño de la CU correspondiente. Las TU pueden comprender las estructuras de datos que incluyen los coeficientes de transformada residuales asociados a una CU dada.
[0051] Las FIGS. 2A y 2B son diagramas conceptuales que ilustran un árbol cuaternario 250 de ejemplo y una unidad de codificación más grande 272 correspondiente. La FIG. 2A representa un árbol cuaternario 250 de ejemplo, que incluye nodos dispuestos de forma jerárquica. Cada nodo en un árbol cuaternario, tal como el árbol cuaternario 250, puede ser un nodo hoja sin hijos, o tener cuatro nodos hijos. En el ejemplo de la FIG. 2A, el árbol cuaternario 250 incluye el nodo raíz 252. El nodo raíz 252 tiene cuatro nodos hijos, incluyendo los nodos hoja 256A-256C (nodos hoja 256) y el nodo 254. Como el nodo 254 no es un nodo hoja, el nodo 254 incluye cuatro nodos hijos, que en este ejemplo son los nodos hoja 258A-258D (nodos hoja 258).
[0052] El árbol cuaternario 250 puede incluir datos que describen características de una unidad de codificación más grande correspondiente, tal como la LCU 272 en este ejemplo. Por ejemplo, el árbol cuaternario 250, por su estructura, puede describir la separación de la LCU en sub-CU. Supóngase que la LCU 272 tiene un tamaño 2Nx2N. La LCU 272, en este ejemplo, tiene cuatro sub-CU 276A-276C (sub-CU 276) y 274, cada una de tamaño NxN. La sub-CU 274 se separa además en cuatro sub-CU 278A-278D (sub-CU 278), cada una de tamaño N/2xN/2. La estructura de árbol cuaternario 250 corresponde a la separación de la LCU 272, en este ejemplo. Es decir, el nodo raíz 252 corresponde a la LCU 272, los nodos hoja 256 corresponden a las sub-CU 276, el nodo 254 corresponde a las sub-CU 274 y los nodos hoja 258 corresponden a la sub-CU 278.
[0053] Los datos para los nodos del árbol cuaternario 250 pueden describir si la CU correspondiente al nodo está separada. Si la CU está separada, pueden estar presentes cuatro nodos adicionales en el árbol cuaternario 250. En algunos ejemplos, un nodo de un árbol cuaternario se puede implementar de manera similar al siguiente pseudocódigo:
quadtree_node {
boolean split_flag(1);
// signaling data
if (split flag) {
quadtree_node child 1;
quadtree_node child2;
quadtree_node child3;
quadtree_node child4;
} }
El valor del indicador de separación puede ser un valor de un bit representativo de si la CU correspondiente al nodo actual está separada. Si la CU no está separada, el valor del indicador de separación puede ser '0', mientras que si la CU está separada, el valor de split_flag (indicador de separación) puede ser '1'. Con respecto al ejemplo del árbol cuaternario 250, una matriz de valores de indicador de separación puede ser 101000000.
[0054] En algunos ejemplos, cada una de las sub-CU 276 y las sub-CU 278 se puede codificar con intrapredicción usando el mismo modo de intrapredicción. En consecuencia, el codificador de vídeo 122 puede proporcionar una indicación del modo de intrapredicción en el nodo raíz 252. Además, determinados tamaños de sub-CU pueden tener múltiples transformadas posibles para un modo de intrapredicción particular. De acuerdo con las técnicas de la presente divulgación, el codificador de vídeo 122 puede proporcionar una indicación de la transformada a usar para dichas sub-CU en el nodo raíz 252. Por ejemplo, las sub-CU de tamaño N/2xN/2 pueden tener múltiples transformadas posibles disponibles. El codificador de vídeo 122 puede señalizar la transformada a usar en el nodo raíz 252. En consecuencia, el descodificador de vídeo 128 puede determinar la transformada a aplicar a las sub-CU 278 en base al modo de intrapredicción señalizado en el nodo raíz 252 y la transformada señalizada en el nodo raíz 252.
[0055] Como tal, el codificador de vídeo 122 no necesita transformadas de señal para aplicar a las sub-CU 276 y las sub-CU 278 en los nodos hoja 256 y los nodos hoja 258, sino que simplemente puede señalizar un modo de intrapredicción y, en algunos ejemplos, una transformada a aplicar a determinados tamaños de sub-CU, en el nodo raíz 252, de acuerdo con las técnicas de la presente divulgación. De esta manera, estas técnicas pueden reducir el coste general de señalización de las funciones de transformada para cada sub-CU de una LCU, tal como la LCU 272.
[0056] En algunos ejemplos, los modos de intrapredicción para las sub-CU 276 y/o las sub-CU 278 pueden ser diferentes a los modos de intrapredicción para la LCU 272. El codificador de vídeo 122 y el descodificador de vídeo 128 se pueden configurar con funciones que asignan un modo de intrapredicción señalizado en el nodo raíz 252 a un modo de intrapredicción disponible para las sub-CU 276 y/o las sub-CU 278. La función puede proporcionar una asignación de varios a uno de los modos de intrapredicción disponibles para la LCU 272 a los modos de intrapredicción para las sub-CU 276 y/o las sub-CU 278.
[0057] Un fragmento se puede dividir en bloques de vídeo (o LCU) y cada bloque de vídeo se puede dividir de acuerdo con la estructura de árbol cuaternario descrita en relación con las FIGS. 2A-B. Adicionalmente, como se muestra en la FIG. 2C, los subbloques de árbol cuaternario indicados por "ACTIVADO" se pueden filtrar por los filtros de bucle descritos en el presente documento, mientras que los subbloques de árbol cuaternario indicados por "DESACTIVADO" no se pueden filtrar. La decisión de si filtrar o no un bloque o subbloque dado se puede determinar en el codificador comparando el resultado filtrado y el resultado no filtrado en relación con el bloque original que se está codificando. La FIG. 2D es un árbol de decisión que representa decisiones de división que dan como resultado la división de árbol cuaternario que se muestra en la FIG. 2C.
[0058] En particular, la FIG. 2C puede representar un bloque de vídeo relativamente grande que se divide de acuerdo con un esquema de división de árbol cuaternario en bloques de vídeo más pequeños de tamaños variados. Cada bloque de vídeo está marcado (activado o desactivado) en la FIG. 2C, para ilustrar si se debe aplicar o evitar el filtrado para ese bloque de vídeo. El codificador de vídeo 122 puede definir este mapa de filtro comparando versiones filtradas y no filtradas de cada bloque de vídeo con el bloque de vídeo original que se está codificando.
[0059] De nuevo, la FIG. 2D es un árbol de decisión correspondiente a las decisiones de división que dan como resultado la división de árbol cuaternario mostrada en la FIG. 2C. En la FIG. 2D, cada círculo puede corresponder a una CU. Si el círculo incluye un indicador "1", a continuación esa CU se divide además en cuatro CU más, pero si el círculo incluye un indicador "0", esa CU no se divide más. Cada círculo (por ejemplo, correspondiente a las CU) también incluye un triángulo asociado. Si el indicador en el triángulo para una CU dada se establece a 1, entonces se "activará" el filtrado para esa CU, pero si el indicador en el triángulo para una CU dada se establece a 0, entonces se desactivará el filtrado. De esta manera, las FIGS. 2C y 2D se pueden ver individual o conjuntamente como un mapa de filtro que se puede generar en un codificador y comunicar a un descodificador al menos una vez por fragmento de datos de vídeo codificados para comunicar el nivel de división de árbol cuaternario para un bloque de vídeo dado (por ejemplo, una LCU) si aplicar o no el filtrado a cada bloque de vídeo dividido (por ejemplo, cada CU dentro de la LCU).
[0060] Los bloques de vídeo más pequeños pueden proporcionar una mejor resolución y se pueden usar para localizaciones de una trama de vídeo que incluyen altos niveles de detalle. Los bloques de vídeo más grandes pueden proporcionar una mayor eficacia de codificación y se pueden usar para localizaciones de una trama de vídeo que incluye un bajo nivel de detalle. Un fragmento se puede considerar una pluralidad de bloques y/o subbloques de vídeo. Cada fragmento puede ser una serie independientemente descodificable de bloques de vídeo de una trama de vídeo. De forma alternativa, las propias tramas pueden ser series descodificables de bloques de vídeo, u otras partes de una trama se pueden definir como series descodificables de bloques de vídeo. El término "series de bloques de vídeo" se puede referir a cualquier parte independientemente descodificable de una trama de vídeo, tal como una trama completa, un fragmento de una trama, un grupo de imágenes (GOP), denominado también secuencia, u otra unidad independientemente descodificable definida de acuerdo con las técnicas de codificación aplicables. Los aspectos de la presente invención se pueden describir en referencia a tramas o fragmentos, pero dichas referencias son simplemente ejemplares. Se debe entender que en general se puede usar cualquier serie de bloques de vídeo en lugar de una trama o un fragmento.
[0061] Los datos de sintaxis se pueden definir por unidad codificada de modo que cada unidad codificada incluya datos de sintaxis asociados. La información del filtro descrita en el presente documento puede ser parte de dicha sintaxis para una unidad codificada, pero es más probable que sea parte de la sintaxis para una serie de bloques de vídeo, tal como una trama, un fragmento, un GOP, o una secuencia de tramas de vídeo, en lugar de para una unidad codificada. Los datos de sintaxis pueden indicar el conjunto o conjuntos de filtros que se van a usar con las unidades codificadas del fragmento o trama. La sintaxis puede describir adicionalmente otras características de los filtros (por ejemplo, tipos de filtros) que se usaron para filtrar las unidades codificadas del fragmento o trama. El tipo de filtro, por ejemplo, puede ser lineal, bilineal, bidimensional, bicúbico o en general puede definir cualquier forma de soporte de filtro. A veces, el codificador y el descodificador pueden suponer el tipo de filtro, en cuyo caso el tipo de filtro no se incluye en el flujo de bits, pero en otros casos, el tipo de filtro se puede codificar junto con la información de coeficientes de filtro como se describe en el presente documento. Los datos de sintaxis también pueden señalizar al descodificador cómo se codificaron los filtros (por ejemplo, cómo se codificaron los coeficientes de filtro), así como los intervalos de la métrica de actividad para los que se deben usar diferentes filtros.
[0062] En algunos casos, para cada filtro en un conjunto de filtros, los datos de sintaxis pueden incluir un indicador de cero que indica si el filtro tiene algún coeficiente distinto de cero. Si el indicador de cero se establece a un primer valor, entonces el descodificador puede reconstruir un filtro de todo ceros sin recibir otra información del codificador. Si el indicador de cero se establece a un segundo valor, entonces el descodificador puede recibir sintaxis adicional para reconstruir el filtro. El indicador de cero puede ser, por ejemplo, un único bit donde cero indica que un filtro contiene solo coeficientes de filtro iguales a cero y un uno indica que el filtro contiene al menos un coeficiente de filtro distinto de cero.
[0063] En el caso de un indicador de cero que indica que un filtro contiene al menos un coeficiente de filtro distinto de cero, la sintaxis adicional puede, por ejemplo, describir otras características de los filtros (por ejemplo, los tipos de filtro) que se usaron para filtrar las unidades codificadas del fragmento o trama, así como incluir información que permita al descodificador reconstruir los coeficientes de los filtros. El tipo de filtro, por ejemplo, puede ser lineal, bilineal, bidimensional, bicúbico o en general puede definir cualquier forma de soporte de filtro. A veces, el codificador y el descodificador pueden suponer el tipo de filtro, en cuyo caso el tipo de filtro no se incluye en el flujo de bits, pero en otros casos, el tipo de filtro se puede codificar junto con la información de coeficientes de filtro como se describe en el presente documento. Los datos de sintaxis también pueden señalizar al descodificador cómo se codificaron los filtros (por ejemplo, cómo se codificaron los coeficientes de filtro), así como los intervalos de la métrica de actividad para los que se deben usar diferentes filtros.
[0064] El codificador de vídeo 122 puede realizar una codificación predictiva en la que un bloque de vídeo que se codifica se compara con una trama predictiva (u otra unidad codificada) para identificar un bloque predictivo. Las diferencias entre el bloque de vídeo actual que se está codificando y el bloque predictivo se codifican como un bloque residual, y la sintaxis de predicción se usa para identificar el bloque predictivo. El bloque residual se puede transformar y cuantificar. Las técnicas de transformada pueden comprender un proceso DCT o un proceso conceptualmente similar, transformadas de enteros, transformadas de ondículas u otros tipos de transformadas. En un proceso DCT, como ejemplo, el proceso de transformada convierte un conjunto de valores de píxel en coeficientes de transformada, que pueden representar la energía de los valores de píxel en el dominio de frecuencia. La cuantificación típicamente se aplica a los coeficientes de transformada, y en general implica un proceso que limita el número de bits asociados a cualquier coeficiente de transformada dado.
[0065] T ras la transformada y la cuantificación, la codificación por entropía se puede realizar en los bloques de vídeo residuales cuantificados y transformados. Los elementos de sintaxis, tal como la información del filtro y los vectores de predicción definidos durante la codificación, también se pueden incluir en el flujo de bits codificado por entropía para cada unidad codificada. En general, la codificación por entropía comprende uno o más procesos que comprimen conjuntamente una secuencia de coeficientes de transformada cuantificados y/u otra información de sintaxis. Las técnicas de exploración, tales como las técnicas de exploración en zigzag, se realizan en los coeficientes de transformada cuantificados, por ejemplo, como parte del proceso de codificación por entropía, para definir uno o más vectores unidimensionales seriados de coeficientes a partir de bloques de vídeo bidimensionales. También se pueden usar otras técnicas de exploración, incluyendo otros órdenes de exploración o exploraciones adaptativas, y posiblemente señalizadas en el flujo de bits codificado. En cualquier caso, los coeficientes explorados a continuación se codifican por entropía junto con cualquier información de sintaxis, por ejemplo, por medio de la codificación de longitud variable adaptativa al contenido (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC) u otro proceso de codificación por entropía.
[0066] Como parte del proceso de codificación, los bloques de vídeo codificados se pueden descodificar para generar los datos de vídeo usados para la posterior codificación basada en la predicción de los bloques de vídeo posteriores. En esta fase, se puede emplear el filtrado para mejorar la calidad de vídeo y, por ejemplo, eliminar los artefactos de efecto pixelado del vídeo descodificado. Los datos filtrados se pueden usar para la predicción de otros bloques de vídeo, en cuyo caso el filtrado se denomina filtrado "en bucle". De forma alternativa, la predicción de otros bloques de vídeo se puede basar en datos sin filtrar, caso en el que el filtrado se denomina "filtrado posterior".
[0067] De trama en trama, de fragmento en fragmento o de LCU en LCU, el codificador puede seleccionar uno o más conjuntos de filtros, y de unidad codificada en unidad codificada, puede seleccionar uno o más filtros del/de los conjunto(s). En algunos casos, los filtros también se pueden seleccionar de píxel en píxel o de sub-CU en sub-CU, tal como en bloques de 4x4. Tanto la selección del conjunto de filtros como la selección del filtro del conjunto que se aplicará se pueden realizar de una manera que promueva la calidad de vídeo. Dichos conjuntos de filtros se pueden seleccionar de conjuntos predefinidos de filtros, o se pueden definir de forma adaptativa para promover la calidad de vídeo. Como ejemplo, el codificador de vídeo 122 puede seleccionar o definir varios conjuntos de filtros para una trama o fragmento dado de modo que se usen diferentes filtros para diferentes píxeles de las unidades codificadas de esa trama o fragmento. En particular, para cada entrada asociada con una unidad codificada, se pueden definir varios conjuntos de coeficientes de filtro, y la métrica de actividad asociada a los píxeles de la unidad codificada se puede usar para determinar qué filtro del conjunto de filtros se debe usar con dichos píxeles. En algunos casos, el codificador de vídeo 122 puede aplicar varios conjuntos de coeficientes de filtro y seleccionar uno o más conjuntos que producen el vídeo de mejor calidad en términos de cantidad de distorsión entre un bloque codificado y un bloque original, y/o los más altos niveles de compresión. En cualquier caso, una vez seleccionado, el conjunto de coeficientes de filtro aplicados por el codificador de vídeo 122 para cada unidad codificada se puede codificar y comunicar al descodificador de vídeo 128 del dispositivo de destino 118 de modo que el descodificador de vídeo 128 pueda aplicar el mismo filtrado que se aplicó durante el proceso de codificación para cada unidad codificada dada.
[0068] Como se analiza en la presente divulgación, se puede usar un indicador de cero para reducir el número de bits necesarios para reconstruir filtros que contienen todos los coeficientes iguales a cero. Cuando se usa una métrica de actividad para determinar qué filtro se debe usar con una entrada particular para una unidad codificada, la selección del filtro para esa unidad codificada particular no necesariamente necesita comunicarse al descodificador de vídeo 128. En cambio, el descodificador de vídeo 128 también puede calcular la métrica de actividad para la unidad codificada, y en base a la información del filtro proporcionada previamente por el codificador de vídeo 122, hacer coincidir la métrica de actividad con un filtro particular.
[0069] La FIG. 3 es un diagrama de bloques que ilustra un codificador de vídeo 350 consecuente con la presente divulgación. El codificador de vídeo 350 puede corresponder al codificador de vídeo 122 del dispositivo 120 o a un codificador de vídeo de un dispositivo diferente. Como se muestra en la FIG. 3, el codificador de vídeo 350 incluye una unidad de predicción 332, los sumadores 348 y 351 y una memoria 334. El codificador de vídeo 350 también incluye una unidad de transformada 338 y una unidad de cuantificación 340, así como una unidad de cuantificación inversa 342 y una unidad de transformada inversa 344. El codificador de vídeo 350 también incluye un filtro de eliminación de efecto pixelado 347 y una unidad de filtro adaptativo 349. El codificador de vídeo 350 también incluye una unidad de codificación por entropía 346. La unidad de filtro 349 del codificador de vídeo 350 puede realizar operaciones de filtrado y también puede incluir una unidad de selección de filtro (FSU) 353 para identificar un filtro o conjunto de filtros óptimo o preferente que se va a usar para la descodificación. La unidad de filtro 349 también puede generar información del filtro que identifique los filtros seleccionados de modo que los filtros seleccionados se puedan comunicar eficazmente como información del filtro a otro dispositivo que se va a usar durante una operación de descodificación.
[0070] Durante el proceso de codificación, el codificador de vídeo 350 recibe un bloque de vídeo, tal como una LCU, que se va a codificar, y la unidad de predicción 332 realiza técnicas de codificación predictiva en el bloque de vídeo. Usando el esquema de división de árbol cuaternario analizado anteriormente, la unidad de predicción 332 puede dividir el bloque de vídeo y realizar técnicas de codificación predictiva en las unidades codificadas de diferentes tamaños. Para la intercodificación, la unidad de predicción 332 compara el bloque de vídeo que se va a codificar, incluyendo los subbloques del bloque de vídeo, con diversos bloques en una o más tramas o fragmentos de referencia de vídeo para definir un bloque predictivo. Para la intracodificación, la unidad de predicción 332 genera un bloque predictivo en base a datos contiguos dentro de la misma unidad de codificación. La unidad de predicción 332 emite el bloque de predicción y el sumador 348 resta el bloque de predicción del bloque de vídeo que se está codificando para generar un bloque residual.
[0071] Para la intercodificación, la unidad de predicción 332 puede comprender las unidades de estimación de movimiento y compensación de movimiento que identifican a un vector de movimiento que apunta a un bloque de predicción y genera el bloque de predicción en base al vector de movimiento. Típicamente, la estimación de movimiento se considera el proceso de generar el vector de movimiento, que estima el movimiento. Por ejemplo, el vector de movimiento puede indicar el desplazamiento de un bloque predictivo dentro de una trama predictiva en relación con el bloque actual que se esté codificando dentro de la trama actual. La compensación de movimiento se considera típicamente el proceso de extraer o generar el bloque predictivo en base al vector de movimiento determinado por la estimación de movimiento. Para la intracodificación, la unidad de predicción 332 genera un bloque predictivo en base a datos contiguos dentro de la misma unidad de codificación. Uno o más modos de intrapredicción pueden definir cómo se puede definir un bloque de intrapredicción.
[0072] Después de que la unidad de predicción 332 emite el bloque de predicción y el sumador 48 resta el bloque de predicción del bloque de vídeo que se está codificando para generar un bloque residual, la unidad de transformada 38 aplica una transformada al bloque residual. La transformada puede comprender una transformada de coseno discreta (DCT) o una transformada conceptualmente similar tal como la definida por un estándar de codificación tal como el estándar HEVC. También se podrían usar transformadas de ondículas, transformadas de números enteros, transformadas de subbandas u otros tipos de transformadas. En cualquier caso, la unidad de transformada 338 aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual de un dominio de píxel en un dominio de frecuencia.
[0073] La unidad de cuantificación 340 a continuación cuantifica los coeficientes de transformada residuales para reducir adicionalmente la velocidad de transmisión de bits. La unidad de cuantificación 340, por ejemplo, puede limitar el número de bits usados para codificar cada uno de los coeficientes. Después de la cuantificación, la unidad de codificación por entropía 346 explora el bloque de coeficientes cuantificados de una representación bidimensional a uno o más vectores unidimensionales seriados. El orden de exploración se puede preprogramar para que se produzca en un orden definido (tal como exploración en zigzag, exploración horizontal, exploración vertical, combinaciones u otro orden predefinido), o posiblemente adaptativo definido en base a estadísticas de codificación previas.
[0074] Tras este proceso de exploración, la unidad de codificación por entropía 346 codifica los coeficientes de transformada cuantificados (junto con cualquier elemento de sintaxis) de acuerdo con una metodología de codificación por entropía, tal como CAVLC o CABAC, para comprimir adicionalmente los datos. Los elementos de sintaxis incluidos en el flujo de bits codificado por entropía pueden incluir la sintaxis de predicción de la unidad de predicción 332, tal como vectores de movimiento para intercodificación o modos de predicción para intracodificación. Los elementos de sintaxis incluidos en el flujo de bits codificado por entropía también pueden incluir información del filtro de la unidad de filtro 349, que se puede codificar de la manera descrita en el presente documento.
[0075] CAVLC es un tipo de técnica de codificación por entropía admitida por el estándar H.264/MPEG4 de UIT, AVC, que se puede aplicar de forma vectorializada por la unidad de codificación por entropía 346. CAVLC usa tablas de codificación de longitud variable (VLC) de una manera que comprime eficazmente las "ejecuciones" seriadas de coeficientes de transformada y/o elementos de sintaxis. CABAC es otro tipo de técnica de codificación por entropía admitida por el estándar H.264/MPEG4 de UIT, AVC, que se puede aplicar de forma vectorializada por la unidad de codificación por entropía 346. CABAC implica varias fases, incluyendo binarización, selección del modelo de contexto y codificación aritmética binaria. En este caso, la unidad de codificación por entropía 346 codifica los coeficientes de transformada y los elementos de sintaxis de acuerdo con CABAC. Al igual que el estándar H.264/MPEG4 de IUT, AVC, el estándar HEVC de reciente surgimiento también puede admitir tanto la codificación por entropía CAVLC como CABAC. Además, también existen muchos otros tipos de técnicas de codificación por entropía, y en el futuro probablemente surgirán nuevas técnicas de codificación por entropía. La presente divulgación no se limita a ninguna técnica específica de codificación por entropía.
[0076] Tras la codificación por entropía realizada por la unidad de codificación por entropía 346, el vídeo codificado se puede transmitir a otro dispositivo o archivarse para su transmisión o recuperación posterior. De nuevo, el vídeo codificado puede comprender los vectores codificados por entropía y diversas sintaxis, que se pueden usar por el descodificador para configurar apropiadamente el proceso de descodificación. La unidad de cuantificación inversa 342 y la unidad de transformada inversa 344 aplican la cuantificación inversa y la transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel. El sumador 351 añade el bloque residual reconstruido al bloque de predicción producido por la unidad de predicción 332 para producir un bloque de vídeo reconstruido predespixelado, a veces denominado imagen reconstruida predespixelada. El filtro de eliminación de efecto pixelado 347 puede aplicar filtrado al bloque de vídeo reconstruido predespixelado para mejorar la calidad de vídeo al eliminar el efecto pixelado u otros artefactos. La salida del filtro de eliminación de efecto pixelado 347 se puede denominar bloque de vídeo posdespixelado, bloque de vídeo reconstruido o imagen reconstruida.
[0077] La unidad de filtro 349 se puede configurar para recibir múltiples entradas. En el ejemplo de la FIG. 3, la unidad de filtro 349 recibe como entrada la imagen reconstruida (RI) posdespixelada, la imagen reconstruida predespixelada (pRI), la imagen de predicción (PI) y el bloque residual reconstruido (EI). La unidad de filtro 349 puede usar cualquiera de estas entradas individualmente o bien en combinación para producir una imagen reconstruida para almacenar en la memoria 334. Adicionalmente, como se analizará con más detalle a continuación, en base una métrica de actividad, se pueden seleccionar uno o más filtros que se van a aplicar a la(s) entrada(s). En un ejemplo, la salida de la unidad de filtro 349 puede ser un filtro adicional aplicado a RI. En otro ejemplo, la salida de la unidad de filtro 349 puede ser un filtro adicional aplicado a pRI. En otros ejemplos, sin embargo, la salida de la unidad de filtro 349 se puede basar en múltiples entradas. Por ejemplo, la unidad de filtro 349 puede aplicar un primer filtro a pRI y a continuación usar la versión filtrada de pRI junto con las versiones filtradas de EI y PI para crear una imagen reconstruida. En los casos donde la salida de la unidad de filtro 349 es el producto de un filtro adicional que se aplica a una única entrada, la unidad de filtro 349 de hecho puede aplicar filtros a las otras entradas, pero esos filtros pueden tener todos los coeficientes cero. De forma similar, si la salida de la unidad de filtro 349 es el producto de aplicar tres filtros a tres entradas, la unidad de filtro 349 de hecho puede aplicar un filtro a la cuarta entrada, pero ese filtro podría tener todos los coeficientes cero. Como se analizará con más detalle a continuación, las técnicas en las que la unidad de filtro 349 aplica la misma secuencia de filtros a múltiples entradas para todas las unidades codificadas que se van a filtrar pueden reducir la complejidad de la implementación de la unidad de filtro 349 en un dispositivo. La aplicación de filtros que tienen todos los coeficientes iguales a cero puede aumentar el número de formas posibles en las que la unidad de filtro 349 puede procesar múltiples entradas y, por tanto, puede mejorar potencialmente la calidad de la codificación.
[0078] El filtrado por la unidad de filtro 349 puede mejorar la compresión al generar bloques de vídeo predictivos que coinciden más estrechamente con los bloques de vídeo que se están codificando que los bloques de vídeo predictivos no filtrados. Después del filtrado, el bloque de vídeo reconstruido se puede usar por la unidad de predicción 332 como un bloque de referencia para intercodificar un bloque en una trama de vídeo posterior u otra unidad codificada. Aunque la unidad de filtro 349 se muestra "en bucle", las técnicas de la presente divulgación también se podrían usar con filtros posteriores, en cuyo caso los datos no filtrados (en lugar de los datos filtrados) se usarían con propósitos de predicción de datos en unidades codificadas posteriores.
[0079] Para un fragmento o trama, la unidad de filtro 349 puede seleccionar conjuntos de filtros para cada entrada de una manera que promueva la calidad de vídeo. Por ejemplo, la unidad de filtro 349 puede seleccionar conjuntos de filtros de conjuntos de coeficientes predefinidos, o puede definir filtros de forma adaptativa para promover la calidad de vídeo o una compresión mejorada. Uno o más de los filtros para cada conjunto pueden ser filtros que tienen todos coeficientes iguales a cero. La unidad de filtro 349 puede seleccionar o definir uno o más conjuntos de filtros para una unidad codificada dada, de modo que se use(n) el/los mismo(s) conjunto(s) de filtros para píxeles de diferentes bloques de vídeo de esa unidad codificada. Para una trama, fragmento o LCU particular, la unidad de filtro 349 puede aplicar varios conjuntos de filtros a múltiples entradas, y la FSU 353 puede seleccionar el conjunto que produce el vídeo de mejor calidad o los niveles más altos de compresión. De forma alternativa, la FSU 353 puede entrenar un nuevo filtro analizando las autocorrelaciones y las correlaciones cruzadas entre múltiples entradas y una imagen original. Se puede determinar un nuevo conjunto de filtros, por ejemplo, resolviendo ecuaciones de Wienter-Hopt basadas en autocorrelaciones y correlaciones cruzadas. Independientemente de si se entrena un nuevo conjunto de filtros o si se selecciona un conjunto de filtros existente, la unidad de filtro 349 genera una sintaxis para su inclusión en el flujo de bits que posibilita que un descodificador también identifique el conjunto o conjuntos de filtros que se van a usar para la trama o fragmento particular.
[0080] De acuerdo con la presente divulgación, por cada píxel de una unidad codificada dentro de trama o fragmento, la unidad de filtro 349 puede seleccionar qué filtro del conjunto de filtros se va a usar en base a la métrica de actividad que cuantifica la actividad asociada con uno o más conjuntos de píxeles dentro de la unidad codificada. De esta manera, la FSU 353 puede determinar conjuntos de filtros para una unidad codificada de mayor nivel, tal como una trama o fragmento, mientras que la unidad de filtro 349 determina qué filtro(s) del/de los conjunto(s) se va(n) a usar para un píxel particular de una unidad codificada de menor nivel en base a la actividad asociada a los píxeles de esa unidad codificada de menor nivel. La actividad se puede indicar en términos de varianza de valor de píxel dentro de una unidad codificada. Una mayor varianza en los valores de píxel en la unidad codificada puede indicar niveles mayores de actividad de píxel, mientras que una menor varianza en los valores de píxel puede indicar niveles menores de actividad de píxel. Diferentes filtros (es decir, diferentes coeficientes de filtro) pueden dar como resultado un mejor filtrado (por ejemplo, mayor calidad de imagen) dependiendo del nivel de varianza de píxel, es decir, la actividad. La varianza de píxel se puede cuantificar por una métrica de actividad, que puede comprender un valor del laplaciano modificado por suma como se analiza con mayor detalle a continuación. Sin embargo, también se pueden usar otros tipos de métricas de actividad.
[0081] En lugar de un único filtro para cada entrada, se puede usar un conjunto de M filtros para cada entrada. Dependiendo de las preferencias de diseño, M puede ser, por ejemplo, tan pequeño como 2 o tan grande como 16, o incluso mayor. Una gran cantidad de filtros por entrada puede mejorar la calidad de vídeo, pero también puede incrementar la sobrecarga asociada con los conjuntos de señalización de filtros desde el codificador al descodificador. El conjunto de M filtros se puede determinar por la FSU 353 como se describe anteriormente y transmitirse al descodificador para cada trama o fragmento. Se puede usar un mapa de segmentación para indicar cómo está segmentada una unidad codificada y si se va a filtrar o no una subunidad particular de la unidad codificada. El mapa de segmentación, por ejemplo, puede incluir para una unidad codificada una matriz de indicadores separados como se describe anteriormente, así como un bit adicional que señaliza si se va a filtrar cada subunidad codificada. Para cada entrada asociada a un píxel de una unidad codificada que se va a filtrar, se puede elegir un filtro específico del conjunto de filtros en base a la métrica de actividad. La métrica de actividad se puede calcular usando un laplaciano t- {
modificado por suma por pí,xel (**/.) como sigue:
K I.
var(/,y)= y ] ^ |2 /í( /-k , / - / ) - R{í k -1, / / ) - R(i k -1,./ /)
Ic— K / — I. *
|2if(í /<-,/ / ) - R(i k , j ¡ - 1) - R(i + />,/ / 1 )|
Como ejemplo, se puede usar un grupo de píxeles circundantes de 7x7 (K, L=3) para calcular el valor del laplaciano modificado por suma. El filtro particular del conjunto de M filtros que se va a usar para un intervalo particular de valores del laplaciano modificado por suma también se puede enviar al descodificador con el conjunto de M filtros. Los coeficientes de filtro se pueden codificar usando la predicción de los coeficientes transmitidos para tramas anteriores u otras técnicas. Se pueden usar filtros de diversas formas y tamaños, incluyendo, por ejemplo, filtros de 1x1, 3x3, 5x5, 7x7 y 9x9 con soporte en forma de rombo o soporte en forma de cuadrado.
[0082] La indexación de los valores del laplaciano modificado por suma para las entradas a los filtros se puede implementar de múltiples maneras. Por ejemplo, en algunas implementaciones cada entrada podría tener un conjunto de filtros único, mientras que en algunas implementaciones las entradas comparten un conjunto de filtros común. Adicionalmente, en algunas implementaciones, se podría usar un valor del laplaciano modificado por suma para cada entrada para identificar un filtro particular para cada entrada. Sin embargo, en otras implementaciones, se podría usar un valor del laplaciano modificado por suma para una única entrada para identificar filtros para todas las entradas. Aún en otras implementaciones, se podría usar un valor del laplaciano modificado por suma para una primera entrada para identificar un filtro para una segunda entrada diferente.
[0083] De acuerdo con la presente divulgación, la unidad de filtro 349 realiza técnicas de codificación con respecto a la información del filtro que puede reducir la cantidad de datos necesarios para codificar y transmitir la información del filtro desde el codificador 350 a otro dispositivo. De nuevo, para cada trama o fragmento, la unidad de filtro 349 puede definir o seleccionar uno o más conjuntos de coeficientes de filtro que se van a aplicar a los píxeles de las unidades codificadas para esa trama o fragmento. La unidad de filtro 349 aplica los coeficientes de filtro para filtrar bloques de vídeo de tramas de vídeo reconstruidas almacenadas en la memoria 334, que se pueden usar para codificación predictiva consecuente con el filtrado en bucle. La unidad de filtro 349 puede codificar los coeficientes de filtro como información del filtro, que se reenvía a la unidad de codificación por entropía 346 para su inclusión en el flujo de bits codificado.
[0084] La información del filtro puede incluir un indicador de cero para cada filtro para reducir el número de bits codificados necesarios para transferir los coeficientes de filtro desde el codificador de vídeo 350 a un descodificador. El indicador de cero puede ser un elemento de sintaxis de un bit en un encabezado de una trama, fragmento, unidad codificada más grande, unidad codificada u otra serie de bloques de vídeo. Si todos los coeficientes para un filtro particular son iguales a cero, entonces el codificador de vídeo 350 puede transmitir al descodificador un indicador de cero establecido a un primer valor. Tras recibir un indicador de cero establecido al primer valor, el descodificador puede reconstruir el filtro sin recibir realmente datos que identifiquen todos los coeficientes iguales a cero del codificador. Si los coeficientes para un filtro particular incluyen al menos un coeficiente distinto de cero, entonces el codificador de vídeo 350 puede transmitir al descodificador un indicador de cero establecido a un segundo valor. T ras recibir un indicador de cero establecido al segundo valor, el descodificador reconstruye el filtro en base a los coeficientes recibidos posteriormente desde el codificador. Por tanto, para reconstruir todos los coeficientes para los filtros de un conjunto de filtros, el codificador de vídeo 350 puede necesitar transmitir solo los coeficientes de filtro a un descodificador para aquellos casos donde al menos un coeficiente de filtro sea distinto de cero.
[0085] Adicionalmente, para filtros que no contienen coeficientes distintos de cero, las técnicas de la presente divulgación también pueden aprovechar el hecho de que algunos de los coeficientes de filtro definidos o seleccionados por la FSU 353 pueden ser muy similares a otros coeficientes de filtro aplicados con respecto a los píxeles de las unidades de codificación de otra trama o fragmento. Se puede aplicar el mismo tipo de filtro para diferentes tramas o fragmentos (por ejemplo, el mismo soporte de filtro), pero los filtros pueden ser diferentes en términos de valores de coeficientes de filtro asociados a los diferentes índices del soporte de filtro. En consecuencia, para reducir la cantidad de datos necesarios para transmitir dichos coeficientes de filtro, la unidad de filtro 349 puede codificar de forma predictiva uno o más coeficientes de filtro que se van a usar para el filtrado en base a los coeficientes de filtro de otra unidad codificada, aprovechando cualquier similitud entre los coeficientes de filtro. Sin embargo, en algunos casos, puede ser más deseable codificar los coeficientes de filtro directamente, por ejemplo, sin usar ninguna predicción. Se pueden usar diversas técnicas, tales como las técnicas que aprovechan el uso de una métrica de actividad para definir cuándo codificar los coeficientes de filtro usando técnicas de codificación predictiva y cuándo codificar los coeficientes de filtro directamente sin ninguna codificación predictiva, para comunicar eficazmente los coeficientes de filtro a un descodificador. Adicionalmente, también se puede imponer la simetría de modo que se pueda usar un subconjunto de coeficientes (por ejemplo, 5, -2, 10) conocidos por el descodificador para definir el conjunto completo de coeficientes (por ejemplo, 5, -2, 10, 10, -2, 5). Se puede imponer la simetría en los contextos de codificación tanto directa como predictiva.
[0086] La FIG. 4 es un diagrama de bloques que ilustra un ejemplo de un descodificador de vídeo 460, que descodifica una secuencia de vídeo que se codifica de la manera descrita en el presente documento. La secuencia de vídeo recibida puede comprender un conjunto codificado de tramas de imágenes, un conjunto de fragmentos de trama, un grupo de imágenes (GOP) codificado comúnmente o una amplia variedad de tipos de series de bloques de vídeo que incluyen bloques de vídeo codificado y sintaxis para definir cómo descodificar dichos bloques de vídeo.
[0087] El descodificador de vídeo 460 incluye una unidad de descodificación por entropía 452, que realiza la función de descodificación recíproca de la codificación realizada por la unidad de codificación por entropía 346 de la FIG. 3. En particular, la unidad de descodificación por entropía 452 puede realizar la descodificación CAVLC o CABAC, o cualquier otro tipo de descodificación por entropía usada por el codificador de vídeo 350. Los bloques de vídeo descodificados por entropía en un formato seriado unidimensional se pueden explorar de forma inversa para convertir uno o más vectores unidimensionales de coeficientes de nuevo a un formato de bloque bidimensional. El número y tamaño de los vectores, así como el orden de exploración definido para los bloques de vídeo pueden definir cómo se reconstruye el bloque bidimensional. La sintaxis de predicción descodificada por entropía se puede enviar desde la unidad de descodificación por entropía 452 a la unidad de predicción 454, y la información del filtro descodificada por entropía se puede enviar desde la unidad de descodificación por entropía 452 a la unidad de filtro 459.
[0088] El descodificador de vídeo 460 también incluye una unidad de predicción 454, una unidad de cuantificación inversa 456, una unidad de transformada inversa 458, una memoria y un sumador 464. Además, el descodificador de vídeo 460 también incluye un filtro de eliminación de efecto pixelado 457 que filtra la salida del sumador 464. Consecuente con la presente divulgación, la unidad de filtro 459 puede recibir información del filtro descodificada por entropía que incluye uno o más filtros que se van aplicar a una o más entradas. Aunque no se muestra en la FIG. 4, el filtro de eliminación de efecto pixelado 457 también puede recibir información del filtro descodificada por entropía que incluye uno o más filtros que se van a aplicar.
[0089] Los filtros aplicados por la unidad de filtro 459 se pueden definir por conjuntos de coeficientes de filtro. La unidad de filtro 459 se puede configurar para generar los conjuntos de coeficientes de filtro en base a la información del filtro recibida desde la unidad de descodificación por entropía 452. Para cada filtro en un conjunto de filtros, la información del filtro puede incluir un indicador de cero, que puede ser un elemento de sintaxis de un bit en un encabezado de una serie de bloques de vídeo, por ejemplo, un encabezado de LCU, un encabezado de trama, un encabezado de fragmento, un encabezado de GOP, un encabezado de secuencia o similar. En otros ejemplos, los elementos de sintaxis que definen la información del filtro también podrían incluirse en un pie u otra estructura de datos. Si la unidad de filtro 459 recibe un indicador de cero establecido a un primer valor que indica que el filtro no contiene coeficientes distintos de cero, entonces la unidad de filtro 459 puede reconstruir el filtro sin recibir realmente datos que identifiquen todos los coeficientes iguales a cero desde el codificador. Si la unidad de filtro 459 recibe un indicador de cero de un segundo valor que indica que los coeficientes para un filtro particular incluyen al menos un coeficiente distinto de cero, la unidad de filtro 459 puede reconstruir el filtro en base a la información de filtro posterior. Por tanto, para reconstruir un filtro, un codificador solo puede necesitar transmitir coeficientes de filtro al descodificador de vídeo 460 para aquellos casos donde al menos un coeficiente de filtro sea distinto de cero.
[0090] La información del filtro puede incluir una sintaxis de señalización adicional que le señaliza al descodificador la manera de codificación usada para cualquier conjunto dado de coeficientes. En algunas implementaciones, la información del filtro, por ejemplo, puede incluir también intervalos de métrica de actividad para los que se debe usar cualquier conjunto de coeficientes dado. Tras la descodificación de los filtros, la unidad de filtro 459 puede filtrar los valores de píxel de los bloques de vídeo descodificados en base a uno o más conjuntos de coeficientes de filtro y la sintaxis de señalización que incluye los intervalos de métrica de actividad para los que se deben usar los diferentes conjuntos de coeficientes de filtro. Los intervalos de métrica de actividad se pueden definir por un conjunto de valores de actividad que definen los intervalos de métrica de actividad usados para definir el tipo de codificación usada (por ejemplo, predictiva o directa).
[0091] La unidad de filtro 459 puede recibir en el flujo de bits un conjunto de filtros para cada trama o fragmento. Para cada unidad codificada dentro de la trama o fragmento, la unidad de filtro 459 puede calcular una o más métricas de actividad asociadas con los píxeles descodificados de una unidad codificada para múltiples entradas (es decir, PI, EI, pRI y RI) para determinar qué filtro(s) del/de los conjunto(s) debe aplicar a cada entrada. Para un primer intervalo de la métrica de actividad, la unidad de filtro 459 puede aplicar un primer filtro, para un segundo intervalo de la métrica de actividad la unidad de filtro 459 puede aplicar un segundo filtro, y así sucesivamente. En algunas implementaciones, cuatro intervalos se pueden asignar a cuatro filtros diferentes, aunque se puede usar cualquier número de intervalos y filtros. El filtro en general puede asumir cualquier tipo de forma o disposición de soporte de filtro. El soporte de filtro se refiere a la forma del filtro con respecto a un píxel dado que se está filtrando, y los coeficientes de filtro pueden definir la ponderación aplicada a los valores de píxel contiguos de acuerdo con el soporte de filtro. A veces, el codificador y el descodificador pueden suponer el tipo de filtro, en cuyo caso el tipo de filtro no se incluye en el flujo de bits, pero en otros casos, el tipo de filtro se puede codificar junto con la información de coeficientes de filtro como se describe en el presente documento. Los datos de sintaxis también pueden señalizar al descodificador cómo se codificaron los filtros (por ejemplo, cómo se codificaron los coeficientes de filtro), así como los intervalos de la métrica de actividad para los que se deben usar diferentes filtros.
[0092] La unidad de predicción 454 recibe la sintaxis de predicción (tal como los vectores de movimiento) desde la unidad de descodificación por entropía 452. Usando la sintaxis de predicción, la unidad de predicción 454 genera los bloques de predicción que se usaron para codificar los bloques de vídeo. La unidad de cuantificación inversa 456 realiza la cuantificación inversa, y la unidad de transformada inversa 458 realiza transformadas inversas para cambiar los coeficientes de los bloques de vídeo residuales de nuevo al dominio de píxeles. El sumador 464 combina cada bloque de predicción con la salida del bloque residual correspondiente por la unidad de transformada inversa 458 para reconstruir el bloque de vídeo.
[0093] La unidad de filtro 459 genera los coeficientes de filtro que se van a aplicar para cada entrada de una unidad codificada, y a continuación aplica dichos coeficientes de filtro para filtrar los bloques de vídeo reconstruidos de esa unidad codificada. El filtrado, por ejemplo, puede comprender un filtrado de eliminación de efecto pixelado adicional que suaviza los bordes y/o elimina los artefactos asociados a los bloques de vídeo, un filtrado de eliminación de ruido para reducir el ruido de cuantificación o cualquier otro tipo de filtrado que pueda mejorar la calidad de la codificación. Los bloques de vídeo filtrados se acumulan en la memoria 462 para reconstruir las tramas descodificadas (u otras unidades descodificables) de información de vídeo. Las unidades descodificadas se pueden emitir desde el descodificador de vídeo 460 para su presentación a un usuario, pero también se pueden almacenar para su uso en la descodificación predictiva posterior.
[0094] En el campo de la codificación de vídeo, es común aplicar el filtrado en el codificador y descodificador para potenciar la calidad de una señal de vídeo descodificada. El filtrado se puede aplicar por medio de un filtro posterior, en cuyo caso la trama filtrada no se usa para la predicción de futuras tramas. De forma alternativa, el filtrado se puede aplicar "en bucle", en cuyo caso la trama filtrada se puede usar para predecir futuras tramas. Se puede diseñar un filtro deseable minimizando el error entre la señal original y la señal filtrada descodificada. Típicamente, dicho filtrado se ha basado en la aplicación de uno o más filtros a una imagen reconstruida. Por ejemplo, se podría aplicar un filtro de eliminación de efecto pixelado a una imagen reconstruida antes de que la imagen se almacene en la memoria, o se podrían aplicar un filtro de eliminación de efecto pixelado y un filtro adicional a una imagen reconstruida antes de que la imagen se almacene en la memoria. Las técnicas de la presente divulgación incluyen la aplicación de filtros a entradas distintas de solo una imagen reconstruida. Además, como se analizará más adelante, los filtros para esas múltiples entradas se pueden seleccionar en base a la indexación de laplaciano a filtro.
[0095] De manera similar a la cuantificación de los coeficientes de transformada, también se pueden cuantificar los coeficientes del filtro h(k,l), donde k = -K,...,K, y l = -L,...,L. K y L pueden representar valores enteros. Los coeficientes de filtro h(k,l) se pueden cuantificar como:
j{k,l)= redondeo(normFact. h(kj ))
donde normFact es un factor de normalización y redondeo es la operación de redondeo realizada para lograr la cuantificación a una profundidad de bits deseada. La cuantificación de los coeficientes de filtro se puede realizar por la unidad de filtro 349 de la FIG. 3 durante la codificación, y la descuantificación o cuantificación inversa se puede realizar en los coeficientes de filtro descodificados por la unidad de filtro 459 de la FIG. 4. El filtro h(k,l) está destinado a representar de forma genérica cualquier filtro. Por ejemplo, se podría aplicar el filtro h(k,l) a cualquiera de las múltiples entradas. En algunos casos, las múltiples entradas asociadas a un bloque de vídeo usarán diferentes filtros, en cuyo caso se pueden cuantificar y descuantificar múltiples filtros similares a h(k,l) como se describe anteriormente.
[0096] Los coeficientes de filtro cuantificados se codifican y se envían desde el dispositivo de origen asociado al codificador 350 a un dispositivo de destino asociado al descodificador 460 como parte de un flujo de bits codificado. En el ejemplo anterior, el valor de normFact normalmente es igual a 2n, aunque se podrían usar otros valores. Los valores más grandes de normFact dan lugar a una cuantificación más precisa, de modo que los coeficientes de filtro cuantificados f(k, I) proporcionan un mejor rendimiento. Sin embargo, los valores más grandes de normFact pueden producir coeficientes f(k,l)) que requieren más bits para transmitir al descodificador.
[0097] En el descodificador 460, se pueden aplicar los coeficientes de filtro descodificados f(k,l) a la entrada apropiada. Por ejemplo, si los coeficientes de filtro descodificados se van a aplicar a RI, los coeficientes de filtro se pueden aplicar a la imagen reconstruida posdespixelada RI(i,j) donde i=0,...,M y j=0,...,N como sigue:
Figure imgf000018_0001
Las variables M, N, K y L pueden representar números enteros. K y L pueden definir un bloque de píxeles que abarca dos dimensiones de -K a K y de -L a L. Los filtros aplicados a otras entradas se pueden aplicar de manera análoga.
[0098] Las técnicas de la presente divulgación pueden mejorar el rendimiento de un filtro posterior o filtro en bucle, y también pueden reducir el número de bits necesarios para transmitir los coeficientes de filtro f(k,l). En algunos casos, se transmite una cantidad de filtros posteriores o filtros en bucle diferentes al descodificador para cada serie de bloques de vídeo, por ejemplo, para cada trama, fragmento, porción de una trama, grupo de tramas (GOP) o similares. Para cada filtro, se incluye información adicional en el flujo de bits para identificar las unidades codificadas, macrobloques y/o píxeles para los que se debe aplicar un filtro dado.
[0099] Las tramas se pueden identificar por número de trama y/o tipo de trama (por ejemplo, tramas I, tramas P o tramas B). Las tramas I se refieren a intratramas que se intrapredicen. Las tramas P se refieren a tramas predictivas que tienen bloques de vídeo predichos en base a una lista de datos (por ejemplo, una trama previa). Las tramas B se refieren a tramas predictivas bidireccionales que se predicen en base a dos listas de datos (por ejemplo, un trama previa y una posterior). Los macrobloques se pueden identificar enumerando los tipos de macrobloques y/o el intervalo de valores de parámetros de cuantificación (QP) usados para reconstruir el macrobloque.
[0100] La información del filtro también puede indicar que solo los píxeles para los que el valor de una medida dada de la característica local de una imagen, denominada una métrica de actividad, está dentro del intervalo especificado, deben filtrarse con un filtro particular. Por ejemplo, para el píxel (i,j) la métrica de actividad puede comprender un valor del laplaciano modificado por suma calculado como sigue:
Figure imgf000018_0002
en el que k representa un valor de una suma de valores de píxel de -K a K y l representa un valor de una suma de -L a L para una ventana bidimensional que abarca de -K a K y -L a L, en el que i y j representan coordenadas de píxel de los datos de píxel, RI(i,j) representa un valor de píxel dado en las coordenadas i y j, y var(i,j) es la métrica de actividad. De manera similar, se puede encontrar una métrica de actividad para pRI(i,j), PI(i,j) y EI(i,j).
[0101] Los coeficientes de filtro f(k,l), para cualquier entrada, se pueden codificar usando la predicción de los coeficientes transmitidos para las unidades codificadas previas. Para cada entrada de una unidad codificada m (por ejemplo, cada trama, fragmento o GOP), el codificador puede codificar y transmitir un conjunto de M filtros: g™,en el que i=0,..., M-1. Para cada filtro, el flujo de bits también se puede codificar para identificar un rango de valores del valor de la métrica de actividad var para el que se debe usar el filtro.
[0102] Por ejemplo, la unidad de filtro 349 del codificador 350 puede indicar que el filtro: g^1 se debe usar para píxeles para los que el valor de la métrica de actividad var está dentro del intervalo [0, varo), es decir, var>0 y var<var0. Asimismo, la unidad de filtro 349 del codificador 350 puede indicar que el filtro: g™, donde i=1,.., M-2, se debe usar para píxeles para los que el valor de la métrica de actividad var está dentro del intervalo [van-i,vari). Además, la unidad de filtro 349 del codificador 350 puede indicar que el filtro: g™_1( se debe usar para píxeles para los que la métrica de actividad var cuando var>varM-2. Como se describe anteriormente, la unidad de filtro 349 puede usar un conjunto de filtros para todas las entradas o, de forma alternativa, puede usar un conjunto único de filtros para cada entrada.
[0103] Los coeficientes de filtro se pueden predecir usando coeficientes de filtro reconstruidos usados en una unidad codificada previa. Los coeficientes de filtro previos se pueden representar como: f " donde i=0,...,N-1. En este caso, se puede usar el número de la unidad codificada n para identificar uno o más filtros usados para la predicción de los filtros actuales, y se puede enviar el número n al descodificador como parte del flujo de bits codificado. Además, se puede codificar y transmitir la información al descodificador para identificar valores de la métrica de actividad var para los que se usa la codificación predictiva.
[0104] Por ejemplo, se supone que para una trama codificada actualmente m, los coeficientes: g^1 se transmiten para los valores de la métrica de actividad [var-i, v a r) Los coeficientes de filtro de la trama m se predicen a partir de los coeficientes de filtro de la trama n. Se supone que el filtro f " se usa en la trama n para los píxeles para los que la métrica de actividad está dentro de un intervalo [vars-i, vars) donde vars-i == var-i y vars > varr. En este caso, el intervalo [varr-i, varr) está contenido dentro del intervalo [vars-i, vars). Además, se puede transmitir información al descodificador indicando que la predicción de coeficientes de filtro se debe usar para valores de actividad [vart-i, varí) pero no para valores de actividad [vart, vart+i) donde Vart-i == varr-i y vart+i == varr.
[0105] La relación entre los intervalos [varr-i -1, varr), [vars-i, vars), [vart-i, varí) y [vart, vart+1) se representa en la FIG.
5. En este caso, los valores finales de los coeficientes de filtro: f™ usados para filtrar píxeles con métrica de actividad en el intervalo [vart-i, vart) son iguales a la suma de coeficientes: f " y
[0106] En consecuencia:
Figure imgf000019_0001
k = -K,...,K,l = -L,...,L. Además, los coeficientes de filtro: que se usan para píxeles con métrica de actividad [vart, vart+i) son iguales a los coeficientes de filtro: g™ Por lo tanto:
Figure imgf000019_0002
k=-K,...,K,l = -L,...,L.
[0107] La amplitud de los coeficientes de filtro g(k, l) depende de los valores k y l. Normalmente, el coeficiente con la mayor amplitud es el coeficiente g(0,0). Los otros coeficientes que se espera que tengan grandes amplitudes son los coeficientes para los que el valor de k o l es igual a 0. Este fenómeno se puede usar para reducir además la cantidad de bits necesarios para transmitir los coeficientes. Los valores de índice k y l pueden definir localizaciones dentro de un soporte de filtro conocido.
[0108] Los coeficientes: g™(fc, l), i=0,..., M-1 para cada trama m se pueden codificar usando códigos de longitud variable parametrizados tales como los códigos de Golomb o exp-Golomb definidos de acuerdo con un parámetro p. Cambiando el valor del parámetro p que define los códigos de longitud variable parametrizados, estos códigos se pueden usar para representar eficazmente un amplio intervalo de distribuciones de origen. La distribución de los coeficientes g(k,l) (es decir, su probabilidad de tener valores grandes o pequeños) depende de los valores de k y l. Por consiguiente, para incrementar la eficacia de codificación, para cada trama m, se transmite el valor del parámetro p para cada par (k,l). Se puede usar el parámetro p para la codificación de longitud variable parametrizada cuando se codifican los coeficientes: g™(fc, l), donde k = -K,...,K ,l = -L,...,L.
[0109] La FIG. 6 muestra un ejemplo de una unidad de filtro 600 configurada para implementar las técnicas de esta divulgación. La funcionalidad de la unidad de filtro 600, por ejemplo, se puede incorporar en la unidad de filtro 349 de la FIG. 3 o en la unidad de filtro 459 de la FIG. 4. La unidad de filtro 600 incluye una pluralidad de módulos de filtro 610A-C (conjuntamente "módulos de filtro 610"). Cada módulo de filtro se puede configurar para recibir una o más entradas. En este ejemplo particular, el módulo de filtro 610A recibe la entrada pRI y aplica un filtro para generar una versión filtrada de pRI, mostrada en la FIG. 6 como pRI'. El módulo de filtro 610B recibe como entrada pRI, PI y EI. Usando estas tres entradas, el módulo de filtro 2610B puede generar una salida, mostrada en la FIG. 6 como R', aplicando los tres filtros siguientes como sigue:
Figure imgf000019_0003
[0110] El módulo de filtro 610C puede generar una salida (R") aplicando los dos filtros como sigue:
Figure imgf000019_0004
[0111] Aplicando filtros de todo ceros, se pueden conseguir diferentes salidas. Por ejemplo, si el módulo de filtro 610A aplica un filtro de todo ceros a pRI, y el módulo de filtro 610B aplica filtros de todo ceros a PI y EI, entonces la salida del módulo de filtro 610B será de forma similar cero, lo que significa que la salida del módulo de filtro 610C será simplemente una versión filtrada de RI. En otra implementación, todos los filtros aplicados a las diversas entradas se pueden elegir de un conjunto de filtros en base a una métrica de actividad, tal como por medio de la indexación de laplaciano a filtro. Como se menciona previamente, la indexación de los valores del laplaciano modificado por suma para las entradas a los filtros se puede implementar de múltiples maneras. Por ejemplo, en algunas implementaciones cada entrada podría tener un conjunto de filtros único, mientras que en algunas implementaciones las entradas comparten un conjunto de filtros común. Adicionalmente, en algunas implementaciones, se podría usar un valor del laplaciano modificado por suma para cada entrada para identificar un filtro particular para cada entrada. Sin embargo, en otras implementaciones, se podría usar un valor del laplaciano modificado por suma para una única entrada para identificar filtros para todas las entradas. Aún en otras implementaciones, se podría usar un valor del laplaciano modificado por suma para una primera entrada para identificar un filtro para una segunda entrada diferente.
[0112] La FIG. 7 es un diagrama de flujo que ilustra una técnica de codificación consecuente con la presente divulgación. Como se muestra en la FIG. 3, el codificador de vídeo 350 codifica datos de píxeles de una serie de bloques de vídeo. La serie de bloques de vídeo puede comprender una trama, un fragmento, un grupo de imágenes (GOP) u otra unidad descodificable independientemente. Los datos de píxeles se pueden disponer en unidades codificadas, y el codificador de vídeo 350 puede codificar los datos de píxeles codificando las unidades codificadas de acuerdo con un estándar de codificación de vídeo tal como el estándar HEVC. Para una trama o fragmento, la FSU 353 puede identificar un conjunto de filtros que se van a usar para la trama o fragmento (710). La FSU 353 puede identificar un conjunto de filtros para todas las entradas o puede identificar un conjunto de filtros para cada entrada.
[0113] Como parte del proceso de codificación de vídeo, la unidad de predicción 332 realiza una codificación basada en predicción y determina un esquema de división basado en árbol cuaternario para una unidad codificada particular (720). Además, como parte del proceso de codificación de vídeo, la unidad de filtro 349 del codificador de vídeo 350 selecciona, en base a la indexación de laplaciano a filtro, uno o más filtros del conjunto de filtros que se van a usar para las subunidades codificadas de la unidad codificada particular de la trama, fragmento o LCU (730). El uno o más filtros se pueden aplicar a una o más entradas, como se describe anteriormente. Este filtrado se puede usar para mejorar la codificación de vídeo haciendo en general que una imagen descodificada sea más similar a una imagen original. La unidad de filtro 349 se muestra en bucle, lo que significa que los datos filtrados se usan para la codificación predictiva de bloques de vídeo posteriores. Sin embargo, la unidad de filtro 349 podría aplicar de forma alternativa un filtrado posterior, en cuyo caso los datos sin filtrar se usarían para la codificación predictiva de bloques de vídeo posteriores.
[0114] El codificador de vídeo 350 emite un flujo de bits codificado para la unidad codificada (740), que incluye datos de píxeles codificados y datos de filtro codificados. Los datos de filtro codificados pueden incluir información de señalización para identificar al conjunto de filtros que se van a usar y también pueden incluir información de señalización que identifica cómo se codificaron los filtros y los intervalos de la métrica de actividad para los que se deberían aplicar los diferentes filtros. Los datos de píxeles codificados pueden incluir, entre otros tipos de datos, un mapa de segmentación para una unidad codificada particular.
[0115] La FIG. 8 es un diagrama de flujo que ilustra una técnica de descodificación consecuente con la presente divulgación. Como se muestra en la FIG. 8, el descodificador de vídeo 460 recibe un flujo de bits codificado que incluye datos de vídeo codificados y datos de filtro codificados (810). El descodificador de vídeo 460 descodifica los datos de filtro para reconstruir uno o más conjuntos de filtros así como intervalos para una métrica de actividad para determinar cuándo se debe aplicar un filtro particular del conjunto de filtros (820). Como se analiza anteriormente, los datos de filtro pueden incluir un conjunto de filtros que se van a usar con todas las entradas o pueden incluir un conjunto de filtros para cada entrada. Como se describe anteriormente en relación con la FIG. 4, el proceso de reconstrucción puede producir una pluralidad de entradas (es decir, RI, pRI, PI y EI) para la unidad de filtro 459. El descodificador de vídeo 460 descodifica los datos de vídeo para generar bloques de datos de píxeles (830). Los datos de píxeles pueden incluir, entre otros tipos de datos, un mapa de segmentación. En particular, el descodificador de vídeo 460 puede generar datos de píxeles realizando una reconstrucción de vídeo basada en bloques consecuente con un estándar de vídeo tal como el estándar de reciente aparición HEVC o un estándar de codificación de vídeo basado en bloques similar.
[0116] En base a un mapa de segmentación para una unidad codificada, el descodificador de vídeo 460 puede determinar si una subunidad codificada de la unidad codificada se debe filtrar por la unidad de filtro 459. Si se va a filtrar una subunidad, entonces la unidad de filtro 459 puede determinar uno o más valores del laplaciano modificado por suma para la subunidad codificada y, en base a la indexación de laplaciano a filtro, identificar uno o más filtros que se van a usar con una o más entradas de la subunidad codificada (840).
[0117] La FIG. 9 es un diagrama de flujo que ilustra una técnica de codificación consecuente con la presente divulgación. Como se muestra en la FIG. 3, el codificador de vídeo 350 codifica datos de píxeles de una serie de bloques de vídeo. La serie de bloques de vídeo puede comprender una trama, un fragmento, un grupo de imágenes (GOP), una secuencia completa de datos de vídeo u otro conjunto descodificable de datos de vídeo. Los datos de píxeles se pueden disponer en unidades codificadas, y el codificador de vídeo 350 puede codificar los datos de píxeles codificando las unidades codificadas de acuerdo con un estándar de codificación de vídeo tal como el estándar HEVC. Para una trama o fragmento, la FSU 353 puede identificar un conjunto de filtros que se van a usar para la trama o fragmento (910). La FSU 353 puede identificar un conjunto de filtros para todas las entradas o puede identificar un conjunto de filtros para cada entrada. En algún caso, uno o más de los filtros pueden incluir todos los coeficientes iguales a cero.
[0118] Como parte del proceso de codificación de vídeo, la unidad de predicción 332 realiza una codificación basada en predicción y determina un esquema de división basado en árbol cuaternario para una unidad codificada particular (920). Además, como parte del proceso de codificación de vídeo, la unidad de filtro 349 del codificador de vídeo 350 selecciona, en base a la indexación de laplaciano a filtro, uno o más filtros del conjunto de filtros que se van a usar para las subunidades codificadas de la unidad codificada particular de la trama, fragmento o LCU (930). El uno o más filtros se pueden aplicar a una o más entradas, como se describe anteriormente. Este filtrado se puede usar para mejorar la codificación de vídeo haciendo en general que una imagen descodificada sea más similar a una imagen original. La unidad de filtro 349 se muestra en bucle, lo que significa que los datos filtrados se usan para la codificación predictiva de bloques de vídeo posteriores. Sin embargo, la unidad de filtro 349 podría aplicar de forma alternativa un filtrado posterior, en cuyo caso los datos sin filtrar se usarían para la codificación predictiva de bloques de vídeo posteriores.
[0119] El codificador de vídeo 350 genera un flujo de bits codificado para la unidad codificada, que incluye datos de píxeles codificados y datos de filtro codificados con uno o más indicadores de cero (940). Los datos de filtro codificados pueden incluir información de señalización, que incluye un indicador de cero, para identificar al conjunto de filtros que se van a usar y también pueden incluir información de señalización que identifica cómo se codificaron los filtros y los intervalos de la métrica de actividad para los que se deberían aplicar los diferentes filtros. Los datos de píxeles codificados pueden incluir, entre otros tipos de datos, un mapa de segmentación para una unidad codificada particular.
[0120] La FIG. 10 es un diagrama de flujo que ilustra una técnica de descodificación consecuente con la presente divulgación. Como se muestra en la FIG. 8, el descodificador de vídeo 460 recibe un flujo de bits codificado que incluye datos de vídeo codificados y datos de filtro codificados con uno o más indicadores de cero (1010). El descodificador de vídeo 460 descodifica los datos de filtro para reconstruir uno o más conjuntos de filtros así como intervalos para una métrica de actividad para determinar cuándo se debe aplicar un filtro particular del conjunto de filtros (1020). Como se analiza anteriormente, los datos de filtro pueden incluir un conjunto de filtros que se van a usar con todas las entradas o pueden incluir un conjunto de filtros para cada entrada. Como se describe anteriormente en relación con la FIG. 4, el proceso de reconstrucción puede producir una pluralidad de entradas (es decir, RI, pRI, PI y EI) para la unidad de filtro 459. El descodificador de vídeo 460 descodifica los datos de vídeo para generar bloques de datos de píxeles (1030). Los datos de píxeles pueden incluir, entre otros tipos de datos, un mapa de segmentación. En particular, el descodificador de vídeo 460 puede generar datos de píxeles realizando una reconstrucción de vídeo basada en bloques consecuente con un estándar de vídeo tal como el estándar de reciente aparición HEVC o un estándar de codificación de vídeo basado en bloques similar.
[0121] En base a un mapa de segmentación para una unidad codificada, el descodificador de vídeo 460 puede determinar si una subunidad codificada de la unidad codificada se debe filtrar por la unidad de filtro 459. Si se va a filtrar una subunidad, entonces la unidad de filtro 459 puede determinar uno o más valores del laplaciano modificado por suma para la subunidad codificada y, en base a la indexación de laplaciano a filtro, identificar uno o más filtros que se van a usar con una o más entradas de la subunidad codificada (1040).
[0122] La divulgación anterior se ha simplificado hasta cierto punto para transmitir detalles. Por ejemplo, la divulgación en general describe conjuntos de filtros que se transmiten por trama o por fragmento, pero también se pueden transmitir los conjuntos de filtros por secuencia, por grupo de imágenes, por grupo de fragmentos, por CU, por LCU u otra base de este tipo. En general, se pueden transmitir los filtros para cualquier agrupación de una o más unidades codificadas. Adicionalmente, en la implementación, puede haber numerosos filtros por entrada por unidad codificada, numerosos coeficientes por filtro y numerosos niveles diferentes de varianza con cada uno de los filtros que se están definiendo para un intervalo diferente de varianza. Por ejemplo, en algunos casos puede haber dieciséis o más filtros definidos para cada entrada de una unidad codificada y dieciséis intervalos de varianza diferentes correspondientes a cada filtro.
[0123] Cada uno de los filtros para cada entrada puede incluir muchos coeficientes. En un ejemplo, los filtros comprenden filtros bidimensionales con 81 coeficientes diferentes definidos para un soporte de filtro que se extiende en dos dimensiones. Sin embargo, el número de coeficientes de filtro que se transmiten para cada filtro puede ser menor a 81 en algunos casos. Se puede imponer la simetría de coeficientes, por ejemplo, de modo que los coeficientes de filtro en una dimensión o cuadrante puedan corresponder a valores inversos o simétricos en relación con los coeficientes en otras dimensiones o cuadrantes. La simetría de coeficientes puede permitir que 81 coeficientes diferentes se representen por menos coeficientes, en cuyo caso el codificador y el descodificador pueden suponer que los valores inversos o reflejados de los coeficientes definen otros coeficientes. Por ejemplo, los coeficientes (5, -2, 10, 10, -2, 5) se pueden codificar y transmitir como el subconjunto de coeficientes (5, -2, 10). En este caso, el descodificador puede saber que estos tres coeficientes definen el conjunto simétrico más grande de coeficientes (5, 2, 10, 10, -2, 5).
[0124] Las técnicas de la presente divulgación se pueden implementar en una amplia gama de dispositivos o aparatos, incluyendo un microteléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (es decir, un conjunto de chips). Se ha descrito cualquier componente, módulo o unidad proporcionado para enfatizar aspectos funcionales y no necesariamente requieren su realización por diferentes unidades de hardware.
[0125] En consecuencia, las técnicas descritas en el presente documento se pueden implementar en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en hardware, cualquier rasgo característico descrito como módulos, unidades o componentes se puede implementar conjuntamente en un dispositivo lógico integrado o por separado, como dispositivos lógicos discretos pero interoperativos. Si se implementan en software, las técnicas se pueden realizar, al menos en parte, por un medio legible por ordenador que comprende instrucciones que, cuando se ejecutan en un procesador, realizan uno o más de los procedimientos descritos anteriormente. El medio legible por ordenador puede comprender un medio de almacenamiento legible por ordenador y puede formar parte de un producto de programa informático, que puede incluir materiales de empaquetado. El medio de almacenamiento legible por ordenador puede comprender memoria de acceso aleatorio (RAM) tal como memoria de acceso aleatorio dinámica síncrona (SDRAM), memoria de solo lectura (ROM), memoria de acceso aleatorio no volátil (NVRAM), memoria de solo lectura programable y borrable eléctricamente (EEPROM), memoria flash, medios de almacenamiento de datos magnéticos u ópticos y similares. Las técnicas se pueden realizar adicionalmente, o de forma alternativa, al menos en parte por un medio de comunicación legible por ordenador que lleve o comunique un código en forma de instrucciones o estructuras de datos y al que se pueda acceder, leer y/o ejecutar por un ordenador.
[0126] El código se puede ejecutar por uno o más procesadores, tales 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 in situ (FPGA) u otro circuito lógico integrado o discreto equivalente. En consecuencia, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de módulos de software o módulos de hardware dedicados configurados para la codificación y la descodificación, o incorporarse en un códec de vídeo combinado. Además, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.

Claims (10)

REIVINDICACIONES
1. Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento:
generar un elemento de sintaxis de filtro para cada filtro de un primer y un segundo conjunto de filtros, en el que un primer valor para el elemento de sintaxis de filtro indica que los coeficientes de un filtro comprenden al menos un coeficiente distinto de cero y un segundo valor para el elemento de sintaxis de filtro indica que los coeficientes de un filtro no comprenden al menos un coeficiente distinto de cero;
en respuesta a que el elemento de sintaxis de filtro se establece al primer valor, generar para su inclusión en un flujo de bits codificado, el elemento de sintaxis de filtro e información adicional que identifica los coeficientes del filtro; y
en respuesta a que el elemento de sintaxis de filtro se establece al segundo valor, generar para su inclusión en el flujo de bits codificado, el elemento de sintaxis de filtro sin información adicional que identifica los coeficientes del filtro, en el que el elemento de sintaxis es un único bit, y en el que el elemento de sintaxis es parte de un encabezado de una serie de bloques de vídeo,
aplicar un primer filtro del primer conjunto de filtros a una primera entrada en base a un valor de una primera métrica de actividad para generar un primer resultado filtrado, en el que la primera entrada comprende una imagen reconstruida posdespixelada, estando el valor de la primera métrica de actividad dentro de un primer intervalo de valores, en el que el primer intervalo de valores para la primera métrica de actividad se indexa al primer filtro y un intervalo diferente de valores para la primera métrica de actividad se indexa a un filtro diferente del primer conjunto de filtros,
aplicar un segundo filtro del segundo conjunto de filtros a una segunda entrada en base a una segunda métrica de actividad para generar un segundo resultado filtrado, en el que la segunda entrada comprende una imagen predespixelada, una imagen de predicción y una imagen de error de predicción cuantificada, estando el valor de la segunda métrica de actividad dentro de un segundo intervalo de valores, en el que el segundo intervalo de valores para la segunda métrica de actividad se indexa al segundo filtro y un intervalo diferente de valores para la segunda métrica de actividad se indexa a un filtro diferente del segundo conjunto de filtros,
en el que el segundo filtro es diferente al primer filtro, y en el que la primera entrada y la segunda entrada corresponden a datos de bloques de vídeo intermedios producidos durante un proceso de codificación de vídeo;
en el que la primera métrica de actividad es una métrica de actividad que cuantifica una varianza de píxel dentro de una unidad codificada de la primera entrada, y en el que la segunda métrica de actividad es una métrica de actividad que cuantifica una varianza de píxel dentro de una unidad codificada de la segunda entrada; y
generar una imagen filtrada en base a una combinación del primer resultado filtrado y el segundo resultado filtrado.
2. Un procedimiento de descodificación de datos de vídeo, comprendiendo el procedimiento:
recibir un elemento de sintaxis para cada filtro de un primer y un segundo conjunto de filtros, en el que un primer valor para el elemento de sintaxis indica que los coeficientes de un filtro comprenden al menos un coeficiente distinto de cero y un segundo valor para el elemento de sintaxis indica que los coeficientes del filtro no comprenden al menos un coeficiente distinto de cero;
en respuesta a que el valor del elemento de sintaxis se establece al segundo valor, reconstruir el filtro con todos los coeficientes iguales a cero;
en respuesta a que el valor del elemento de sintaxis se establece al primer valor, reconstruir los coeficientes de filtro en base a la información adicional recibida desde un codificador de vídeo, en el que la información adicional recibida identifica los coeficientes de filtro, en el que el elemento de sintaxis es un único bit, y en el que el elemento de sintaxis es parte de un encabezado de una serie de bloques de vídeo.
aplicar un primer filtro del primer conjunto de filtros a una primera entrada en base a un valor de una primera métrica de actividad para generar un primer resultado filtrado, en el que la primera entrada comprende una imagen reconstruida posdespixelada, estando el valor de la primera métrica de actividad dentro de un primer intervalo de valores, en el que el primer intervalo de valores para la primera métrica de actividad se indexa al primer filtro y un intervalo diferente de valores para la primera métrica de actividad se indexa a un filtro diferente del primer conjunto de filtros,
aplicar un segundo filtro del segundo conjunto de filtros a una segunda entrada en base a una segunda métrica de actividad para generar un segundo resultado filtrado, en el que la segunda entrada comprende una imagen predespixelada, una imagen de predicción y una imagen de error de predicción cuantificada, estando el valor de la segunda métrica de actividad dentro de un segundo intervalo de valores, en el que el segundo intervalo de valores para la segunda métrica de actividad se indexa al segundo filtro y un intervalo diferente de valores para la segunda métrica de actividad se indexa a un filtro diferente del segundo conjunto de filtros,
en el que el segundo filtro es diferente al primer filtro, y en el que la primera entrada y la segunda entrada corresponden a datos de bloques de vídeo intermedios producidos durante un proceso de codificación de vídeo;
en el que la primera métrica de actividad es una métrica de actividad que cuantifica una varianza de píxel dentro de una unidad codificada de la primera entrada, y en el que la segunda métrica de actividad es una métrica de actividad que cuantifica una varianza de píxel dentro de una unidad codificada de la segunda entrada; y
generar una imagen filtrada en base a una combinación del primer resultado filtrado y el segundo resultado filtrado.
3. El procedimiento de una cualquiera de las reivindicaciones 1 a 2, en el que la primera métrica de actividad comprende un valor del laplaciano modificado por suma.
4. El procedimiento de la reivindicación 3, en el que el valor del laplaciano modificado por suma comprende var(i,j) definida de acuerdo con la siguiente ecuación:
var( i
|27?(z
Figure imgf000024_0001
en el que k representa un valor de una suma desde -K a K y 1 representa un valor de una suma desde -L a L para una ventana bidimensional que abarca de -K a K y -L a L, en el que i y j representan coordenadas de píxel de los datos de píxel, R(i,j) representa un valor de píxel dado en las coordenadas i y j, y var(/,y) es la primera métrica de actividad.
5. El procedimiento de cualquiera de las reivindicaciones 1 a 4, en el que el segundo conjunto de filtros es igual al primer conjunto de filtros.
6. El procedimiento de cualquiera de las reivindicaciones 1 a 4, en el que uno del primer filtro y el segundo filtro comprende todos los coeficientes iguales a cero.
7. Un aparato (112; 122; 349; 350; 600) para codificación de datos de vídeo, comprendiendo el aparato:
medios (349; 350) para generar un elemento de sintaxis de filtro para cada filtro de un primer y un segundo conjunto de filtros, en el que un primer valor para el elemento de sintaxis de filtro indica que los coeficientes de un filtro no comprenden al menos un coeficiente distinto de cero y un segundo valor para el elemento de sintaxis de filtro indica que los coeficientes de un filtro comprenden al menos un coeficiente distinto de cero; medios (350; 123; 124) para transmitir el elemento de sintaxis de filtro e información adicional que identifica los coeficientes del filtro a un descodificador de vídeo (460) en respuesta a que el elemento de sintaxis de filtro se establece al segundo valor;
medios (350; 123; 124) para transmitir el elemento de sintaxis de filtro sin información adicional que identifica los coeficientes del filtro al descodificador de vídeo (460) en respuesta a que el elemento de sintaxis de filtro se establece al primer valor, en el que el elemento de sintaxis es un único bit y en el que el elemento de sintaxis es parte de un encabezado de una serie de bloques de vídeo;
medios (349; 350) para aplicar un primer filtro del primer conjunto de filtros a una primera entrada en base a un valor de una primera métrica de actividad para generar un primer resultado filtrado, en el que la primera entrada comprende una imagen reconstruida posdespixelada, estando el valor de la primera métrica de actividad dentro de un primer intervalo de valores, en el que el primer intervalo de valores para la primera métrica de actividad se indexa al primer filtro y un intervalo diferente de valores para la primera métrica de actividad se indexa a un filtro diferente del primer conjunto de filtros;
medios (349; 350) para aplicar un segundo filtro del segundo conjunto de filtros a una segunda entrada en base a una segunda métrica de actividad para generar un segundo resultado filtrado, en el que el segundo filtro es diferente del primer filtro, y en el que la primera entrada y la segunda entrada corresponden a datos de bloques de vídeo intermedios producidos durante un proceso de codificación de vídeo, en el que la segunda entrada comprende una de una imagen predespixelada, una imagen de predicción y una imagen de error de predicción cuantificada, estando el valor de la segunda métrica de actividad dentro de un segundo intervalo de valores, en el que el segundo intervalo de valores para la segunda métrica de actividad se indexa al segundo filtro y un intervalo diferente de valores para la segunda métrica de actividad se indexa a un filtro diferente del segundo conjunto de filtros, en el que la primera métrica de actividad es una métrica de actividad que cuantifica una varianza de píxel dentro de una unidad codificada de la primera entrada, y en el que la segunda métrica de actividad es una métrica de actividad que cuantifica una varianza de píxel dentro de una unidad codificada de la segunda entrada; y
medios (349; 350) para generar una imagen filtrada en base a una combinación del primer resultado filtrado y el segundo resultado filtrado.
8. Un aparato (116; 128; 459; 460) para descodificar datos de vídeo, comprendiendo el aparato:
medios (126; 127; 128; 460) para recibir un elemento de sintaxis para cada filtro de un primer y un segundo conjunto de filtros, en el que un primer valor para el elemento de sintaxis indica que los coeficientes de un filtro comprenden al menos un coeficiente distinto de cero y un segundo valor para el elemento de sintaxis indica que los coeficientes del filtro no comprenden al menos un coeficiente distinto de cero;
medios (459; 460) para reconstruir el filtro con todos los coeficientes iguales a cero en respuesta a que el valor del elemento de sintaxis se establece al segundo valor;
medios (459; 460) para reconstruir los coeficientes de filtro en base a información adicional recibida desde un codificador de vídeo (122; 350) en respuesta a que el valor del elemento de sintaxis se establece al primer valor, en el que la información adicional recibida identifica los coeficientes del filtro, en el que el elemento de sintaxis es un único bit, y en el que el elemento de sintaxis es parte de un encabezado de una serie de bloques de vídeo;
medios (459; 460) para aplicar un primer filtro del primer conjunto de filtros a una primera entrada en base a un valor de una primera métrica de actividad para generar un primer resultado filtrado, en el que la primera entrada comprende una imagen reconstruida posdespixelada, estando el valor de la primera métrica de actividad dentro de un primer intervalo de valores, en el que el primer intervalo de valores para la primera métrica de actividad se indexa al primer filtro y un intervalo diferente de valores para la primera métrica de actividad se indexa a un filtro diferente del primer conjunto de filtros;
medios (459; 460) para aplicar un segundo filtro del segundo conjunto de filtros a una segunda entrada en base a una segunda métrica de actividad para generar un segundo resultado filtrado, en el que el segundo filtro es diferente del primer filtro, y en el que la primera entrada y la segunda entrada corresponden a datos de bloques de vídeo intermedios producidos durante un proceso de codificación de vídeo, en el que la segunda entrada comprende una de una imagen predespixelada, una imagen de predicción y una imagen de error de predicción cuantificada, estando el valor de la segunda métrica de actividad dentro de un segundo intervalo de valores, en el que el segundo intervalo de valores para la segunda métrica de actividad se indexa al segundo filtro y un intervalo diferente de valores para la segunda métrica de actividad se indexa a un filtro diferente del segundo conjunto de filtros, en el que la primera métrica de actividad es una métrica de actividad que cuantifica una varianza de píxel dentro de una unidad codificada de la primera entrada, y en el que la segunda métrica de actividad es una métrica de actividad que cuantifica una varianza de píxel dentro de una unidad codificada de la segunda entrada; y
medios (459; 460) para generar una imagen filtrada en base a una combinación del primer resultado filtrado y el segundo resultado filtrado.
9. El aparato de la reivindicación 7 o la reivindicación 8,
en el que los medios para aplicar el primer filtro del primer conjunto de filtros a la primera entrada en base a la primera métrica de actividad para generar el primer resultado filtrado comprenden una unidad de filtro,
en el que los medios para aplicar el segundo filtro a la segunda entrada en base a la segunda métrica de actividad para generar el segundo resultado filtrado comprenden la unidad de filtro,
en el que los medios para generar una imagen filtrada en base a una combinación del primer resultado filtrado y el segundo resultado filtrado comprenden la unidad de filtro; y
en el que la imagen filtrada se almacena en una memoria.
10. Un medio de almacenamiento no transitorio legible por ordenador que almacena una o más instrucciones que, cuando se ejecutan por uno o más procesadores, causan que el uno o más procesadores realicen el procedimiento de una cualquiera de las reivindicaciones 1 a 6.
ES11735938T 2010-09-01 2011-07-08 Filtro adaptativo de múltiples entradas basado en una combinación de indexación de filtro laplaciano modificado por suma y división de árbol cuaternario Active ES2824828T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US37925510P 2010-09-01 2010-09-01
US37925310P 2010-09-01 2010-09-01
US201161487231P 2011-05-17 2011-05-17
US13/178,399 US9247265B2 (en) 2010-09-01 2011-07-07 Multi-input adaptive filter based on combination of sum-modified Laplacian filter indexing and quadtree partitioning
PCT/US2011/043445 WO2012030433A1 (en) 2010-09-01 2011-07-08 Multi-input adaptive filter based on combination of sum-modified laplacian filter indexing and quadtree partitioning

Publications (1)

Publication Number Publication Date
ES2824828T3 true ES2824828T3 (es) 2021-05-13

Family

ID=45697236

Family Applications (1)

Application Number Title Priority Date Filing Date
ES11735938T Active ES2824828T3 (es) 2010-09-01 2011-07-08 Filtro adaptativo de múltiples entradas basado en una combinación de indexación de filtro laplaciano modificado por suma y división de árbol cuaternario

Country Status (8)

Country Link
US (1) US9247265B2 (es)
EP (2) EP2612497B1 (es)
JP (1) JP5755744B2 (es)
CN (1) CN103222263B (es)
DK (1) DK2612497T3 (es)
ES (1) ES2824828T3 (es)
HU (1) HUE050358T2 (es)
WO (1) WO2012030433A1 (es)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9819966B2 (en) 2010-09-01 2017-11-14 Qualcomm Incorporated Filter description signaling for multi-filter adaptive filtering
GB201119206D0 (en) 2011-11-07 2011-12-21 Canon Kk Method and device for providing compensation offsets for a set of reconstructed samples of an image
US9258564B2 (en) 2012-02-07 2016-02-09 Stmicroelectronics S.R.L. Visual search system architectures based on compressed or compact feature descriptors
WO2013152736A1 (en) * 2012-04-12 2013-10-17 Mediatek Singapore Pte. Ltd. Method and apparatus for block partition of chroma subsampling formats
KR102192991B1 (ko) 2014-04-23 2020-12-18 삼성전자주식회사 가변적인 디지털 필터를 포함하는 아날로그-디지털 컨버터 및 이를 포함하는 이미지 센서
US10701383B2 (en) * 2015-06-16 2020-06-30 Lg Electronics Inc. Method for encoding/decoding image and device for same
CN105049846B (zh) * 2015-08-14 2019-05-21 广东中星微电子有限公司 图像和视频编解码的方法和设备
US9883183B2 (en) * 2015-11-23 2018-01-30 Qualcomm Incorporated Determining neighborhood video attribute values for video data
US11405611B2 (en) 2016-02-15 2022-08-02 Qualcomm Incorporated Predicting filter coefficients from fixed filters for video coding
US10382766B2 (en) * 2016-05-09 2019-08-13 Qualcomm Incorporated Signalling of filtering information
US20180343449A1 (en) * 2017-05-26 2018-11-29 Ati Technologies Ulc Application specific filters for high-quality video playback
WO2019093919A1 (en) 2017-11-13 2019-05-16 Huawei Technologies Co., Ltd In-loop filter apparatus and method for video coding
US10958928B2 (en) * 2018-04-10 2021-03-23 Qualcomm Incorporated Decoder-side motion vector derivation for video coding
CN114173116A (zh) * 2021-11-26 2022-03-11 中山大学 一种基于拉普拉斯滤波器的自适应量化方法

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI103003B (fi) * 1997-06-13 1999-03-31 Nokia Corp Suodatusmenetelmä, suodatin ja kannettava päätelaite
RU2154918C1 (ru) * 1998-08-01 2000-08-20 Самсунг Электроникс Ко., Лтд. Способ и устройство для цикл-фильтрации данных изображения
US6847684B1 (en) 2000-06-01 2005-01-25 Hewlett-Packard Development Company, L.P. Zero-block encoding
US20020172431A1 (en) * 2001-03-07 2002-11-21 Atkins C. Brian Digital image appearance enhancement and compressibility improvement method and system
MXPA04002265A (es) 2002-07-11 2004-06-29 Matsushita Electric Ind Co Ltd Metodo de determinacion de resistencia de filtracion, metodo de codificacion de pelicula y metodo de decodificacion de pelicula.
US7366238B2 (en) * 2004-05-07 2008-04-29 Micronas Usa, Inc. Noise filter for video processing
KR100647295B1 (ko) * 2004-11-10 2006-11-23 삼성전자주식회사 비디오 디코더에서의 인접 정보 처리 장치 및 방법과 그방법을 수행하기 위한 프로그램이 저장된 기록 매체
EP1886502A2 (en) * 2005-04-13 2008-02-13 Universität Hannover Method and apparatus for enhanced video coding
US7680355B2 (en) * 2005-05-02 2010-03-16 Intel Corporation Detection of artifacts resulting from image signal decompression
FR2889778A1 (fr) 2005-08-12 2007-02-16 Thomson Licensing Sas Procede de codage et de decodage d'images video avec echelonnabilite spatiale
EP1841230A1 (en) * 2006-03-27 2007-10-03 Matsushita Electric Industrial Co., Ltd. Adaptive wiener filter for video coding
US20080084932A1 (en) 2006-10-06 2008-04-10 Microsoft Corporation Controlling loop filtering for interlaced video frames
US9014280B2 (en) 2006-10-13 2015-04-21 Qualcomm Incorporated Video coding with adaptive filtering for motion compensated prediction
EP4224853A1 (en) 2006-11-08 2023-08-09 InterDigital VC Holdings, Inc. Methods and apparatus for in-loop de-artifact filtering
US8942505B2 (en) * 2007-01-09 2015-01-27 Telefonaktiebolaget L M Ericsson (Publ) Adaptive filter representation
US8107571B2 (en) * 2007-03-20 2012-01-31 Microsoft Corporation Parameterized filters and signaling techniques
DE102007037857A1 (de) * 2007-08-10 2009-02-12 Micronas Gmbh Verfahren zur Reduktion von Bildartefakten
EP2048886A1 (en) 2007-10-11 2009-04-15 Panasonic Corporation Coding of adaptive interpolation filter coefficients
BRPI0907242A2 (pt) 2008-01-07 2015-07-14 Thomson Licensing Métodos e aparelho para codificação e decodificação utilizando-se filtragem paramétrica
US8638852B2 (en) * 2008-01-08 2014-01-28 Qualcomm Incorporated Video coding of filter coefficients based on horizontal and vertical symmetry
EP2141927A1 (en) * 2008-07-03 2010-01-06 Panasonic Corporation Filters for video coding
US8736751B2 (en) * 2008-08-26 2014-05-27 Empire Technology Development Llc Digital presenter for displaying image captured by camera with illumination system
US8150191B2 (en) * 2008-10-14 2012-04-03 Interra Systems Inc. Method and system for calculating blur artifacts in videos using user perception threshold
US8792564B2 (en) * 2008-10-28 2014-07-29 Sony Corporation Adaptive preprocessing method using feature-extracted video maps
US8774541B2 (en) * 2008-11-05 2014-07-08 Sony Corporation Intra prediction with adaptive interpolation filtering for image compression
US8761538B2 (en) * 2008-12-10 2014-06-24 Nvidia Corporation Measurement-based and scalable deblock filtering of image data
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
US9143803B2 (en) 2009-01-15 2015-09-22 Qualcomm Incorporated Filter prediction based on activity metrics in video coding
US8761268B2 (en) 2009-04-06 2014-06-24 Intel Corporation Selective local adaptive wiener filter for video coding and decoding
KR20110001990A (ko) * 2009-06-30 2011-01-06 삼성전자주식회사 영상 데이터의 인 루프 필터링 장치 및 방법과 이를 이용한 영상 부호화/복호화 장치
JP5233897B2 (ja) * 2009-07-31 2013-07-10 ソニー株式会社 画像処理装置および方法
EP2559238B1 (en) 2010-04-13 2015-06-03 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Adaptive image filtering method and apparatus
US20120044986A1 (en) 2010-08-17 2012-02-23 Qualcomm Incorporated Low complexity adaptive filter
US9819966B2 (en) 2010-09-01 2017-11-14 Qualcomm Incorporated Filter description signaling for multi-filter adaptive filtering
US9008180B2 (en) 2011-04-21 2015-04-14 Intellectual Discovery Co., Ltd. Method and apparatus for encoding/decoding images using a prediction method adopting in-loop filtering

Also Published As

Publication number Publication date
HUE050358T2 (hu) 2020-12-28
US9247265B2 (en) 2016-01-26
US20120051425A1 (en) 2012-03-01
CN103222263A (zh) 2013-07-24
JP2013539287A (ja) 2013-10-17
EP2612497B1 (en) 2020-08-19
EP2612497A1 (en) 2013-07-10
DK2612497T3 (da) 2020-09-14
WO2012030433A1 (en) 2012-03-08
EP3754984A1 (en) 2020-12-23
CN103222263B (zh) 2016-06-01
JP5755744B2 (ja) 2015-07-29

Similar Documents

Publication Publication Date Title
ES2824828T3 (es) Filtro adaptativo de múltiples entradas basado en una combinación de indexación de filtro laplaciano modificado por suma y división de árbol cuaternario
ES2824831T3 (es) Filtrado multimétrico
KR101529800B1 (ko) 다중-필터 적응형 필터링을 위한 필터 디스크립션 시그널링
ES2677100T3 (es) Filtrado de bucle alrededor de los límites de segmento o de límites de mosaico en la codificación de video
ES2865389T3 (es) Actualización del parámetro de rice para la codificación de nivel de coeficiente en el procedimiento de codificación de vídeo
ES2963135T3 (es) Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo basándose en un orden de exploración para el bloque en una codificación de vídeo
ES2750124T3 (es) Elementos sintácticos de señalización para coeficientes de transformada para subconjuntos de una unidad de codificación a nivel de hoja
US20110317757A1 (en) Intra prediction mode signaling for finer spatial prediction directions
KR101552029B1 (ko) 1 차원 스위칭 필터 및 1 차원 적응 필터의 조합을 사용한 비디오 필터링
KR20130105894A (ko) 비디오 데이터의 블록의 계수들의 모드 의존 스캐닝
KR20110111476A (ko) 비디오 코딩시 액티비티 메트릭들에 기초한 필터 예측
US20120044986A1 (en) Low complexity adaptive filter