MX2013009722A - Filtracion multimetrica. - Google Patents

Filtracion multimetrica.

Info

Publication number
MX2013009722A
MX2013009722A MX2013009722A MX2013009722A MX2013009722A MX 2013009722 A MX2013009722 A MX 2013009722A MX 2013009722 A MX2013009722 A MX 2013009722A MX 2013009722 A MX2013009722 A MX 2013009722A MX 2013009722 A MX2013009722 A MX 2013009722A
Authority
MX
Mexico
Prior art keywords
metric
filter
pixels
activity
group
Prior art date
Application number
MX2013009722A
Other languages
English (en)
Inventor
In Suk Chong
Marta Karczewicz
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
Publication of MX2013009722A publication Critical patent/MX2013009722A/es

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • 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
    • 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/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

Abstract

Una unidad de filtro de un codificador de video o decodificador de video puede determinar una primera métrica para un grupo de píxeles dentro de un bloque de píxeles, determinar una segunda métrica para el grupo de píxeles, determinar un filtro con base en la primera métrica y la segunda métrica, y generar una imagen filtrada mediante la aplicación del filtro al grupo de píxeles; la primera métrica y la segunda métrica pueden ser una métrica de actividad y una métrica de dirección, respectivamente, o pueden ser otras métricas tales como una métrica de borde, métrica de actividad horizontal, métrica de actividad vertical, o métrica de actividad diagonal.

Description

FILTRACIÓN MULTIMETRICA CAMPO DE LA INVENCION Esta divulgación se refiere a codificación de video digital basada en bloque utilizada para comprimir datos de video y, de manera más particular a técnicas para la filtración de bloques de video.
ANTECEDENTES DE LA INVENCION Las capacidades de video digital se pueden incorporar en un amplio rango de dispositivos, incluyendo televisiones digitales, sistemas digitales de transmisión directa, dispositivos de comunicación inalámbrica tales como equipos de telefonía de radio, sistemas de transmisión inalámbrica, asistentes digitales personales (PDAs), computadoras tipo laptop, computadoras de escritorio, computadoras de tableta, cámaras digitales, dispositivos de grabación digital, dispositivos de juego de video, consolas de juego de video, y similares. Los dispositivos de video digital implementan técnicas de compresión de video, tales como MPEG-2, MPEG-4, o ITU-T H.264/MPEG-4, Parte 10, Codificación de Video Avanzada (AVC) , para transmitir y recibir video digital de manera más eficiente. Las técnicas de compresión de video ejecutan predicción espacial y temporal para reducir o remover la redundancia inherente en secuencias de video. Nuevos estándares de video, tales como el estándar de Codificación de Video de Alta Eficiencia (HEVC) que están siendo desarrollados por el "Equipo Colaborativo Conjunto sobre Codificación de Video" (JCTVC) , el cual es una colaboración MPEG e ITU-T, continúan emergiendo y evolucionando. Este nuevo estándar HEVC en ocasiones también se refiere como H.265.
Técnicas de compresión de video basadas en bloque pueden ejecutar predicción espacial y/o predicción temporal. La intra-codificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial entre bloques de video dentro de una unidad determinada de video codificado, el cual puede comprender un cuadro de video, una porción de un cuadro de video, o similar. En contraste, la inter-codificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal entre bloques de video de unidades de codificación sucesivas de una secuencia de video. Para intra-codificación, un codificador de video ejecuta predicción espacial para comprimir datos con base en otros datos dentro de la misma unidad de video codificado. Para inter-codificación, el codificador de video ejecuta cálculo de movimiento y compensación de movimiento para rastrear el movimiento de los bloques de video correspondientes de dos o más unidades adyacentes de video codificado.
Un bloque de video codificado puede ser representado mediante información de predicción que se puede utilizar para crear o identificar un bloque predictivo, y un bloque residual de datos indicativo de las diferencias entre el bloque que está siendo codificado y el bloque predictivo. En el caso de inter-codificación, uno o más vectores de movimiento son utilizados para identificar el bloque predictivo de datos a partir de una unidad de codificación previa o posterior, mientras que en el caso de la intra-codificación, el modo de predicción puede ser utilizado para generar el bloque predictivo con base en datos dentro de la CU asociada con el bloque de video que se esté codificando. Tanto la intra-codificación como la inter-codificación pueden definir varios modos de predicción diferentes, los cuales pueden definir diferentes tamaños de bloque y/o técnicas de predicción utilizadas en la codificación. Tipos adicionales de elementos de sintaxis también se pueden incluir como parte de los datos de video codificados a fin de controlar o definir las técnicas de codificación o parámetros utilizados en el proceso de codificación.
Después de la codificación de predicción basada en bloque, el codificador de video puede aplicar procesos de codificación de transformada, cuantificación y entropía para reducir aún más la tasa de transferencia de bits asociada con la comunicación de un bloque residual. Las técnicas de transformada pueden comprender transformadas de coseno discreto (DCTs) o procesos conceptualmente similares, tales como transformadas de onda pequeña, transformadas de entero, u otros tipos de transformadas. En un proceso de transformada de coseno discreto, como un ejemplo, el proceso de transformada convierte un conjunto de valores de diferencia de pixel en coeficientes de transformada, lo cual puede representar la energía de los valores de pixel en el dominio de frecuencia. La cuantificación se aplica a los coeficientes de transformada, y generalmente involucra un proceso que limita el número de bits asociados con cualquier coeficiente de transformada determinado. La codificación por entropía comprende uno o más procesos que colectivamente comprimen una secuencia de coeficientes de transformada cuantificados .
La filtración de bloques de video se puede aplicar como parte de los bucles de codificación y decodificación, o como parte de un proceso post-filtración sobre bloques de video reconstruidos. La filtración comúnmente se utiliza, por ejemplo, para reducir los bloques u otros artefactos comunes a la codificación de video basada en bloque. Los coeficientes de filtro (en ocasiones denominados derivaciones de filtro) se pueden definir o seleccionar para promover niveles deseables de filtración de bloque de video que pueden reducir los bloques y/o mejorar la calidad del video en otras formas. Un conjunto de coeficientes de filtro, por ejemplo, puede definir la manera en que se aplica la filtración a lo largo de los bordes de los bloques de video u otras ubicaciones dentro de los bloques de video. Diferentes coeficientes de filtro pueden causar diferentes · niveles de filtración con respecto a diferentes pixeles de los bloques de video. La filtración, por ejemplo, puede suavizar o afinar las diferencias en intensidad de valores de pixel adyacentes a fin de ayudar a eliminar los artefactos no deseados.
BREVE DESCRIPCIÓN DE LA INVENCION Esta divulgación describe técnicas asociadas con la filtración, de datos de video en un proceso de codificación de video y/o decodificación de video. De acuerdo con esta divulgación, la filtración se aplica en un codificador e información de filtro es codificada en la corriente de bits para permitir que un decodificador identifique la filtración que fue aplicada en el codificador. El decodificador recibe datos de video codificados que incluyen la información de filtro, decodifica los datos de video, y aplica filtración basada en la información de filtración. De esta manera, el decodificador aplica la misma filtración que fue aplicada en el codificador. De acuerdo con las técnicas de esta divulgación, sobre una base cuadro-por-cuadro, porción-por-porción o LCU-por-LCU, un codificador puede seleccionar uno o más conjuntos de filtros, y sobre una base de unidad-codificada-por-unidad-codificada, el codificador puede determinar si aplica o no la filtración. Para las unidades codificadas (CUs) que se van a filtrar, el codificador puede ejecutar filtración sobre una base pixel-por-pixel o grupo-por-grupo, donde un grupo podría ser, por ejemplo, un bloque de pixeles 2x2 o un bloque de pixeles 4x4.
En un ejemplo, un método de codificación de video incluye determinar una primera métrica para un grupo de pixeles dentro de un bloque de pixeles; determinar una segunda métrica para el grupo de pixeles; con base en la primera métrica y la segunda métrica, determinar un filtro; y, generar una imagen filtrada mediante la aplicación del filtro al grupo de pixeles.
En otro ejemplo, un dispositivo de codificación de video incluye una unidad de filtro configurada para determinar una primera métrica para un grupo de pixeles dentro de un grupo de pixeles, determinar una segunda métrica para el grupo de pixeles, determinar un filtro con base en la primera métrica y la segunda métrica, y generar una imagen filtrada mediante la aplicación del filtro al grupo de pixeles; y, una memoria configurada para almacenar un resultado filtrado de la unidad de filtro.
En otro ejemplo, un aparato incluye medios para determinar una primer métrica para un grupo de pixeles dentro de un bloque de pixeles, medios para determinar una segunda métrica para el grupo de pixeles, medios para determinar un filtro basado en la primera métrica y la segunda métrica, y medios para generar una imagen filtrada mediante la aplicación del filtro al grupo de pixeles.
En otro ejemplo, un medio de almacenamiento legible por computadora almacena instrucciones que cuando son ejecutadas ocasionan que uno o más procesadores determinen una primera métrica para un grupo de pixeles dentro de un bloque de-pixeles, determinen una segunda métrica para el grupo de pixeles, determinen un filtro con base en la primer métrica y la segunda métrica, y generen una imagen filtrada mediante la aplicación del filtro al grupo de pixeles.
Los detalles de uno de o más ejemplos se establecen en los dibujos acompañantes y la siguiente descripción. Otras características, objetivos y ventajas serán aparentes a partir de la descripción y los dibujos, y a partir de las reivindicaciones .
BREVE DESCRIPCION DE LAS FIGURAS La figura 1 es un diagrama en bloques que ilustra un sistema de codificación y decodificación de video ejemplar.
Las figuras 2A y 2B son diagramas conceptuales que ilustran un ejemplo de la división de árbol cuádruple aplicada a una unidad de codificación más grande (LCU) .
Las figuras 2C y 2D son diagramas conceptuales que ilustran un ejemplo de un mapa de filtro para una serie de bloques de video correspondientes a la división de árbol cuádruple ejemplar de las figuras 2A y 2B.
La figura 3 es un diagrama en bloques que ilustra un codificador de video ejemplar consistente con esta divulgación.
La figura 4A es un diagrama conceptual que ilustra un mapeo de rangos para dos métricas para filtros.
La figura 4B es un diagrama conceptual que ilustra un mapeo de rangos para una métrica de actividad y una métrica de dirección para filtros.
La figura 5 es un diagrama en bloques que ilustra un decodificador de video ejemplar consistente con esta divulgación .
Las figuras 6A, 6B y 6C muestran diagramas conceptuales de un bloque de pixeles 4x4.
La figura 7 es un diagrama de flujo que ilustra técnicas de codificación consistentes con esta divulgación.
Las figuras 8A y 8B son diagramas de flujo que ilustran técnicas de codificación consistentes con esta divulgación.
Las figuras 9A y 9B son diagramas de flujo que ilustran técnicas de codificación consistentes con esta divulgación.
La figura 10 es un diagrama de flujo que ilustra técnicas de codificación consistentes con esta divulgación.
La figura 11 es un diagrama de flujo que ilustra técnicas de codificación consistentes con esta divulgación.
DESCRIPCION DETALLADA DE LA INVENCION Esta divulgación describe técnicas asociadas con la filtración de datos de video en un proceso de codificación de video y/o decodificación de video. De acuerdo con esta divulgación, la filtración se aplica en un codificador, y la información de filtro es codificada en la corriente de bits para permitir a un decodificador identificar la filtración que fue aplicada en el codificador. El decodificador recibe datos de video codificados que incluyen la información de filtro, decodifica los datos de video, y aplica filtración basada en la información de filtración. De esta manera, el decodificador aplica la misma filtración que fue aplicada en el codificador. De acuerdo con las técnicas de esta divulgación, sobre una base cuadro-por-cuadro, porción-por- porción o LCU-por-LCU, un codificador puede seleccionar uno o más conjuntos de filtros, y sobre una base de unidad-codificada-por-unidad-codificada, el codificador puede determinar si aplica o no la filtración. Para las unidades codificadas (CUs) que se van a filtrar, el codificador puede ejecutar filtración sobre una base pixel-por-pixel o grupo-por-grupo, donde un grupo podría ser, por ejemplo, un bloque de píxeles 2x2 o un bloque de píxeles 4x4.
De acuerdo con las técnicas de esta divulgación, los datos de video pueden ser codificados en unidades referidas como unidades codificadas (CUs) . Las CUs se pueden dividir en CUs más pequeñas, o sub-unidades , utilizando un esquema de división de árbol cuádruple. La sintaxis que identifica el esquema de división de árbol cuádruple para una CU particular se puede transmitir de un codificador a un decodificador . Múltiples entradas asociadas con cada sub-unidad de una CU determinada se pueden filtrar durante el proceso de decodificación y reconstrucción de los datos de video codificados. De acuerdo con las técnicas de esta divulgación, la sintaxis de descripción de filtro puede describir un conjunto de filtros, tal como la cantidad de filtros que hay en el conjunto o la forma que asumen los filtros. Sintaxis adicional en la corriente de bits recibida por el decodificador puede identificar los filtros (es decir, los coeficientes de filtro) utilizados en el codificador para una sub-unidad particular. El filtro utilizado para una entrada particular se puede seleccionar con base en dos o más métricas, en donde algunas combinaciones de valores para las dos o más métricas son indexadas a filtros específicos dentro de un conjunto de filtros. En otros casos, dos o más métricas se pueden combinar para formar una sola métrica. El mapeo de filtros a métricas también se puede señalizar en la corriente de bits.
Se pueden aplicar diferentes tipos de filtración a píxeles o bloques de píxeles con base en dos o más métricas determinadas para los datos de video. El filtro utilizado para un pixel particular se puede seleccionar con base en dos o más métricas, tal como alguna combinación de una métrica de actividad y una métrica de dirección. Una métrica de actividad, por ejemplo, puede cuantificar la actividad asociada con uno o más bloques de píxeles dentro de los datos de video. La métrica de actividad puede comprender una métrica de varianza indicativa de la varianza de pixel dentro de un conjunto de píxeles. Una métrica de actividad puede ser ya sea específica de la dirección o no específica de la dirección. Por ejemplo, una métrica de actividad no específica de la dirección puede incluir un valor del Laplaciano de suma modificada, tal como se explica con mayor detalle a continuación.
Ejemplos de métricas de actividad especificas de la dirección incluyen una métrica de actividad horizontal, una métrica de actividad vertical, una métrica de actividad de 45 grados, y una métrica de actividad de 135 grados. Una métrica de dirección, para un bloque de pixeles, puede cuantificar cualquiera de la actividad horizontal, actividad vertical o actividad diagonal de un pixel o grupo de pixeles, o una métrica de dirección puede incluir una comparación de actividad horizontal, actividad vertical y/o actividad diagonal, donde la actividad horizontal generalmente se refiere a cambios en valores de pixel en una dirección horizontal, la actividad vertical generalmente se refiere a cambios en valores de pixel en una dirección vertical, y la actividad diagonal generalmente se refiere a cambios en valores de pixel en una dirección diagonal.
De acuerdo con técnicas de esta divulgación, cuando se determina un filtro para un bloque de pixeles, se puede utilizar un subconjunto de pixeles dentro del bloque para reducir la complejidad de la codificación y decodificación. Por ejemplo, cuando se determina un filtro para un bloque de pixeles 4x4, pudiera no ser necesario utilizar todos los 16 pixeles del bloque 4x4. Adicionalmente, de acuerdo con técnicas de esta divulgación, el subconjunto de pixeles desde el cual se puede seleccionar un bloque actual que está siendo codificado de manera que las métricas son calculadas únicamente utilizando valores de píxel del bloque actual y no valores de píxel de bloques vecinos. Por ejemplo, la métrica para un píxel que está siendo evaluado se podría calcular con base en la comparación del píxel con píxeles cercanos. En algunos casos, uno o más de los píxeles cercanos para el píxel que está siendo evaluado pudieran estar en un bloque diferente del píxel que se está evaluando. Sin embargo, en otros casos uno o más de los píxeles vecinos para el píxel · pudieran estar en el mismo bloque que el píxel. De acuerdo con técnicas de esta divulgación, el subconjunto de píxeles se puede seleccionar para incluir píxeles que no tienen píxeles cercanos en bloques vecinos. De manera adicional o alternativa, el subconjunto de píxeles puede incluir píxeles que tienen píxeles cercanos en bloques vecinos, pero esos píxeles cercanos en bloques vecinos pudieran no ser utilizados cuando se determine la métrica. Al basar la determinación de una métrica particular en píxeles dentro de un bloque actual y no en píxeles de bloques vecinos, la necesidad de memorias intermedias en el codificador y/o decodificador, en algunos casos, se pudiera reducir o incluso eliminar .
En algunos casos, de acuerdo con técnicas de esta divulgación, el subconjunto de pixeles desde el interior del cual un bloque actual que está siendo codificado se puede seleccionar de manera que las métricas son calculadas únicamente utilizando valores de pixel del bloque actual y bloques vecinos a izquierda y derecha pero no valores de pixel de bloques vecinos superiores o bloques vecinos inferiores. Como resultado del orden de escaneo de rastrillo utilizado cuando se codifican bloques de video, las memorias intermedias en linea para los bloques vecinos superior e inferior tienden a necesitar que se almacenen muchos más valores de pixel que las memorias intermedias de línea para el almacenamiento de valores de pixel de bloques vecinos a izquierda y derecha.
De acuerdo con las técnicas de esta divulgación, una unidad de filtro, tal como un filtro de bucle de adaptación en interior, se puede configurar para utilizar múltiples filtros con base en el mapeo de filtro multi-métrico . Los múltiples filtros pueden ser utilizados en conjunto con una sola entrada o múltiples entradas. Tal como se describirá con mayor detalle a continuación, las múltiples entradas descritas en esta divulgación generalmente se refieren a datos de bloque de video intermedio o datos de imagen que son producidos durante los procesos de codificación y decodificación. Múltiples entradas asociadas con un bloque de video determinado pueden incluir, por ejemplo, un bloque o imagen reconstruida (RI), un bloque o imagen reconstruida pre-desbloqueada (pRI), un bloque o imagen de predicción (PI) y/o una imagen de error de predicción cuantificada (El) . En un esquema de entrada sencilla, un filtro solamente puede ser aplicado a una de las entradas anteriores, tal como RI. También, tal como se explica con mayor detalle a continuación, las técnicas de filtración de esta divulgación se pueden aplicar a CUs de varios tamaños utilizando un esquema de división de árbol cuádruple. Al utilizar múltiples filtros con mapeo de filtro multi-métrico para CUs divididas utilizando un esquema de división de árbol cuádruple, se pudiera mejorar el rendimiento de la codificación de video, tal como es medido por uno o ambos de velocidad de compresión y calidad de video reconstruido.
Para implementar las técnicas de filtración multi-métrica antes descritas, un codificador mantiene, mediante la generación, actualización, almacenamiento u otros medios, un mapeo de combinaciones de rangos para filtros. Como un ejemplo, la combinación de un primer rango para una primera métrica y un primer rango para una segunda métrica puede mapearse a un primer filtro. La combinación del primer rango para la primera métrica y un segundo rango para la segunda métrica también se puede mapear al primer filtro o se puede mapear a un segundo filtro. Si una primera métrica tiene ocho rangos y una segunda métrica tiene cuatro rangos, por ejemplo, entonces la primera y segunda métricas pueden tener treinta y dos combinaciones de rangos, y cada una de las treinta y dos combinaciones se puede mapear a un filtro. No obstante, cada combinación no necesariamente es mapeada a un filtro único. Por lo tanto, las treinta y dos combinaciones se pudieran mapear a cuatro filtros, ocho filtros, diez filtros, o algún otro número de filtros. A fin de aplicar los mismos filtros que un codificador, un decodificador también puede mantener los mismos mapeos de combinaciones de rangos para filtros.
Esta divulgación describe técnicas para señalizar desde un codificador a un decodificador, en una corriente de bits codificada, un mapeo de combinaciones de rango para filtros. El mapeo, por ejemplo, puede asociar cada combinación de rango con una identificación de filtro (ID) . Una forma simple de señalizar este mapeo es utilizar una palabra código para cada ID de filtro, y después para cada combinación de rangos, enviar la palabra código de la ID de filtro correspondiente. Sin embargo, esta técnica por lo regular es ineficiente. Técnicas de la presente divulgación pueden explotar correlaciones dentro del mapeo utilizando métodos de codificación diferencial. Combinaciones de rangos que comparten un rango común en ocasiones utilizan el mismo filtro. Como un ejemplo, la combinación de un primer rango para una primera métrica y un primer rango para una segunda métrica y la combinación del primer rango para la primera métrica y un segundo rango para la segunda métrica comparten un rango común (el primer rango de la primera métrica) . Por lo tanto, estas dos combinaciones, en algunos casos, se pudieran mapear a la misma ID de filtro. Al explotar esta correlación, las técnicas de esta divulgación pueden reducir el número de bits necesarios para señalizar el mapeo de combinaciones de rangos a IDs de filtro desde un codificador a un decodificador . Además de señalizar el mapeo de combinaciones de rango a las IDs de filtro, esta divulgación también describe técnicas para señalizar, en una corriente de bits codificada, coeficientes de filtro para filtros. Técnicas de la presente divulgación incluyen el uso de métodos de codificación diferencial para señalizar coeficientes de filtro desde un codificador a un decodificador . De esta manera, los coeficientes de filtro para un segundo filtro se pudieran comunicar a un decodificador como información de diferencia, donde la información de diferencia describe cómo modificar los coeficientes de filtro de un primer filtro en una manera que produce los coeficientes del segundo filtro. Las técnicas de codificación diferencial pueden ser más efectivas (es decir, pueden tener como resultado mayores ahorros de bits) cuando los coeficientes de filtro del primer y segundo filtros son más similares que en comparación a la situación en que los coeficientes de filtro del primer y segundo filtros son menos similares. Las técnicas de esta divulgación incluyen determinar un orden secuencial en el cual señalizar los coeficientes de filtro para filtros. Los ordenamientos determinados utilizando las técnicas descritas en esta divulgación pueden tener como resultado una codificación diferencial mejorada de los coeficientes de filtro, y por lo tanto, en algunos casos pueden tener como resultado ahorros de bits cuando se señalizan los coeficientes de filtro.
Aunque las técnicas de esta divulgación en ocasiones se pueden describir en referencia a filtración en-bucle, las técnicas se pueden aplicar a filtración en-bucle, filtración post-bucle, y otros esquemas de filtración tales como filtración conmutada. La filtración en-bucle generalmente se refiere a la filtración en la cual los datos filtrados son parte de los bucles de codificación y decodificación de manera que los datos filtrados son utilizados para intra-codificación o inter-codificación predictiva. La filtración post-bucle se refiere a la filtración que se aplica a los datos de video reconstruidos después del bucle de codificación. Con la filtración post-bucle, los datos no filtrados, en oposición a los datos filtrados, son utilizados para intra-codificación o inter-codificación predictiva. En algunas implementaciones, el tipo de filtración puede cambiar entre filtración post-bucle y filtración en-bucle, por ejemplo, sobre una base cuadro-por-cuadro, porción-por-porción u otra base de este tipo, y la decisión respecto a si se utiliza filtración post-bucle o filtración en-bucle se puede señalizar desde el codificador al decodificador para cada cuadro, porción, etcétera. Las técnicas de esta divulgación no se limitan a filtración en-bucle o filtración post-bucle, y pueden aplicar a un amplio rango de filtración aplicada durante la codificación de video.
En esta divulgación, el término "codificación" se refiere a la codificación o decodificación. De manera similar, el término "codificador" generalmente se refiere a cualquier codificador de video, decodificador de video, o codificador/decodificador combinado (códec) . Por consiguiente, el término "codificador" se utiliza aquí para hacer referencia a un dispositivo de computadora especializado o aparato que ejecuta codificación de video o decodificación de video.
Adicionalmente, en esta divulgación, el término "filtro" generalmente se refiere a un conjunto de coeficientes de filtro. Por ejemplo, un filtro 3x3 puede ser definido por un conjunto de 9 coeficientes de filtro, un filtro 5x5 puede ser definido por un conjunto de 25 coeficientes de filtro, un filtro 9x5 puede ser definido por un conjunto de 45 coeficientes de filtro, y asi sucesivamente. El término "conjunto de filtros" generalmente se refiere a un grupo de más de un filtro. Por ejemplo, un conjunto de dos filtros 3x3, podría incluir un primer conjunto de 9 coeficientes de filtro y un segundo conjunto de 9 coeficientes de filtro. De acuerdo con técnicas descritas en esta divulgación, para una serie de bloques de video, tal como un cuadro, porción o unidad de codificación más grande (LCU) , la información que identifica a los conjuntos de filtros es señalizada desde el codificador al decodificador en un encabezado para las series de bloques de video. El término "forma", en ocasiones denominada el "soporte de filtro", generalmente se refiere al número de filas de coeficientes de filtro y número de columnas de coeficientes de filtro para un filtro particular. Por ejemplo, 9x9 es un ejemplo de una primera forma, 9x5 es un ejemplo de una segunda forma, y 5x9 es un ejemplo de una tercera forma. En algunos casos, los filtros pueden asumir formas no rectangulares incluyendo formas de diamante, formas tipo diamante, formas circulares, formas tipo circulares, formas hexagonales, formas octagonales, formas transversales, formas en X, formas en T, otras formas geométricas, o numerosas formas diferentes o configuración.
La figura 1 es un diagrama en bloques que ilustra un sistema de codificación y decodificación de video ejemplar 110 que puede implementar técnicas de esta divulgación, tal como se muestra en la figura 1, el sistema 110 incluye un dispositivo fuente 112 que transmite datos de video codificados a un dispositivo destino 116 a través de un canal de comunicación 115. El dispositivo fuente 112 y el dispositivo destino 116 pueden comprender cualquiera de un amplio rango de dispositivos. En algunos casos, el dispositivo fuente 102 y el dispositivo destino 116 pueden comprender equipos de dispositivo de comunicación inalámbrica, tales como los denominados radioteléfonos celulares o satelitales. No obstante, las técnicas de esta divulgación, las cuales aplican de manera más general a la filtración de datos de video, no necesariamente están limitadas a aplicaciones o escenarios inalámbricos, y se pueden aplicar a dispositivos no inalámbricos incluyendo capacidades de codificación y/o decodificación de video.
En el ejemplo de la figura 1, el dispositivo fuente 112 incluye una fuente de video 120, un codificador de video 122, un modulador/desmodulador (módem) 123 y un transmisor 124. El dispositivo destino 116 incluye un receptor 126, un módem 127, un decodificador de video 128, y un dispositivo de despliegue 130. De acuerdo con esta divulgación, el codificador de video 122 del dispositivo fuente 112 se puede configurar para seleccionar uno o más conjuntos de coeficientes de filtro para múltiples entradas en un proceso de filtración de bloque de video y después codificar uno o más conjuntos seleccionados de coeficientes de filtro. Filtros específicos de uno o más conjuntos de coeficientes de filtro pueden ser seleccionados con base en una o más métricas para una o más entradas, y los coeficientes de filtro pueden ser utilizados para filtrar una o más entradas. Las técnicas de filtración de esta divulgación generalmente son compatibles con cualesquiera técnicas para la codificación o señalización de coeficientes de filtro en una corriente de bits codificada.
De acuerdo con las técnicas de esta divulgación, un dispositivo que incluye el codificador de video 122 puede señalizar a un dispositivo que incluye el decodificador de video 128 uno o más conjuntos de coeficientes de filtro para una serie de bloques de video, tal como un cuadro o una porción. Para las series de bloques de video, el codificador de video 122, por ejemplo, puede señalizar un conjunto de filtros que van a ser utilizados con todas las entradas, o puede señalizar múltiples conjuntos de filtros que van a ser utilizados con múltiples entradas (un conjunto por entrada, por ejemplo) . Cada bloque de video o CU dentro de las series de bloques de video entonces puede contener sintaxis adicional para identificar cuál filtro o filtros del conjunto de los filtros va a ser utilizado para cada entrada de ese bloque de video, o de acuerdo con las técnicas de esta divulgación, cuál filtro o filtros del conjunto de los filtros va a ser utilizado puede ser determinado con base en dos o más métricas asociadas con una o más de las entradas.
De manera más especifica, el codificador de video 122 del dispositivo fuente 112 puede seleccionar uno o más conjuntos de filtros para una serie de bloques de video, aplicar filtros de los conjuntos a pixeles o grupos de pixeles de entradas asociadas con CUs de las series de bloques de video durante el proceso de codificación, y después codificar los conjuntos de filtros (es decir, conjuntos de coeficientes de filtro) para comunicación al decodificador de video 128 del dispositivo destino 116. El codificador de video 122 puede determinar una o más métricas asociadas con entradas de CUs codificadas a fin de seleccionar cuáles filtros de los conjuntos de filtros utilizar con pixeles o grupos de pixeles para esa CU particular. El codificador de video 122 también puede señalizar al codificador de video 128, como parte de la corriente de bits codificada, un mapeo de combinaciones de rangos para filtros dentro de un conjunto de filtros.
En el lado del decodificador, el decodificador de video 128 puede determinar los coeficientes de filtro con base en la información de filtro recibida en la sintaxis de corriente de bits. El decodificador de video 128 puede decodificar los coeficientes de filtro con base en decodificación directa o decodificación predictiva dependiendo de la cantidad de coeficientes de filtro que hayan sido codificados, lo cual puede ser señalizado como parte de la sintaxis de la corriente de bits. De manera adicional, la corriente de bits puede incluir información de sintaxis de descripción de filtro para describir los filtros para un conjunto de filtros. Con base en la sintaxis de descripción de filtro, el decodificador 128 puede reconstruir los coeficientes de filtro con base en información adicional recibida desde el codificador 122. El sistema ilustrado 110 de la figura 1 es simplemente ejemplar. Las técnicas de filtración de esta divulgación pueden ser ejecutadas por cualesquiera dispositivos de codificación o decodificación. El dispositivo fuente 112 y el dispositivo destino 116 son simplemente ejemplos de dispositivos de codificación que pueden soportar dichas técnicas. El decodificador de video 128 también puede determinar el mapeo de combinaciones de rangos a filtros con base en la información de filtros recibida en la sintaxis de corriente de bits.
El codificador de video 122 del dispositivo fuente 112 puede codificar datos de video recibidos desde la fuente de video 120 utilizando las técnicas de esta divulgación. La fuente de video 120 puede comprender un dispositivo de captura de video, tal como una cámara de video, un archivo de video que contiene video previamente capturado, o un video alimentado desde un proveedor de contenido de video. Como una alternativa adicional, la fuente de video 120 puede generar datos basados en gráficos de computadora como el video fuente, o una combinación de video en vivo, video archivado y video generado por computadora. En algunos casos, si la fuente de video 120 es una cámara de video, el dispositivo fuente 112 y el dispositivo destino 116 pueden formar los denominados fonos de cámara o fonos de video. En cada caso, el video capturado, pre-capturado o generado por computadora puede ser codificado por el codificador de video 122.
Una vez que los datos de video son codificados por el codificador de video 122, la información de video codificada entonces puede ser modulada por el módem 123 de acuerdo con un estándar de comunicación, por ejemplo, tal como acceso múltiple por división de código (CDMA) , acceso múltiple por división de frecuencia (FDMA) , multiplexión por división de frecuencia ortogonal (OFDM) , o cualquier otro estándar o técnica de comunicación, y se puede transmitir al dispositivo destino 116 a través del transmisor 124. El módem 123 puede incluir diversos mezcladores, filtros, amplificadores u otros componentes diseñados para modulación de señal. El transmisor 124 puede incluir circuitos diseñados para transmitir datos, incluyendo amplificadores, filtros, y una o más antenas.
El receptor 126 del dispositivo destino 116 recibe información sobre el canal 115, y el módem 127 desmodula la información. El proceso de decodificación de video ejecutado por el decodificador de video 128 puede incluir filtración, por ejemplo, como parte de la decodificación en-bucle o como un paso de post-filtración siguiendo el bucle de decodificación. De cualquier forma, el conjunto de filtros aplicado por el decodificador de video 128 para una porción o cuadro particular se puede decodificar utilizando las técnicas de esta divulgación. La información de filtro decodificada puede incluir la identificación de la sintaxis de descripción de filtro en la" corriente de bits codificada. Si, por ejemplo, se utiliza codificación predictiva para los coeficientes de filtro, se pueden explotar las similitudes entre diferentes coeficientes de filtro para reducir la cantidad de información transmitida sobre el canal 115. En particular, un filtro (es decir, un conjunto de coeficientes de filtro) puede ser codificado de manera predictiva como valores de diferencia con relación a otro conjunto de los coeficientes de filtro asociados con un filtro diferente. El filtro diferente, por ejemplo, puede estar asociado con una porción o cuadro diferente. En dicho caso, el decodificador de video 128 podría recibir una corriente de bits codificada comprendiendo bloques de video e información de filtro que identifique el cuadro o porción diferente con el cual está asociado ¦ el filtro diferente. La información de filtro también incluye valores de diferencia que definen el filtro actual con relación al filtro de la CU diferente. En particular, los valores de diferencia pueden comprender valores de diferencia de coeficiente de filtro que definen coeficientes de filtro para el filtro actual con relación a los coeficientes de filtro de un filtro diferente utilizado para una CU diferente.
El decodificador de video 128 decodifica los bloques de video, genera los coeficientes de filtro, y filtra los bloques de video decodificados con base en los coeficientes de filtro generados. El decodificador de video 128 puede generar los coeficientes de filtro con base en la sintaxis de descripción de filtro recuperada desde la corriente de bits. Los bloques de video decodificados y filtrados pueden ser ensamblados en cuadros de video para formar datos de video decodificados . El dispositivo de despliegue 128 despliega los datos de video decodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de despliegue tales como tubo de rayos catódicos (CRT) , una pantalla de cristal liquido (LCD) , una pantalla de plasma, una pantalla de diodo de emisión de luz orgánica (OLED) , u otro tipo de dispositivo de despliegue.
El canal de comunicación 115 puede comprender cualquier medio de comunicación inalámbrico o cableado, tal como un espectro de radiofrecuencia (RF) o una o más lineas de transmisión física, o cualquier combinación de medios cableados e inalámbricos. El canal de comunicación 115 puede formar parte de una red basada en paquete, tal como una red de área local, una red de área amplia, o una red global tal como la Internet. El canal de comunicación 115 generalmente representa cualquier medio de comunicación conveniente, o conjunto de diferentes medios de comunicación, para transmitir datos de video desde el dispositivo fuente 112 al dispositivo destino 116. Una vez más, la figura 1 es simplemente ejemplar y las técnicas de esta divulgación pueden aplicar a escenarios de codificación de video (por ejemplo, codificación de video o decodificación de video) que no necesariamente incluye alguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, los datos podrían ser recuperados de una memoria local, puestos en corriente sobre una red, o similar.
De manera alternativa, los datos codificados pueden ser emitidos desde el codificador de video 122 a un dispositivo de almacenamiento 132. De manera similar, se puede tener acceso a los datos codificados desde el dispositivo de almacenamiento 132 por el decodificador de video 128. El dispositivo de almacenamiento 132 puede incluir cualquiera de una variedad de medios de almacenamiento de datos a los que se puede tener acceso localmente o pueden estar localmente distribuidos tal como un disco duro, discos Blu-ray, DVDs, CD-ROMs, memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital conveniente para almacenar datos de video codificados. En un ejemplo adicional, el dispositivo de almacenamiento 132 puede corresponder a un servidor de archivos u otro dispositivo de almacenamiento intermedio que puede mantener el video codificado generado por el dispositivo fuente 112. El dispositivo destino 116 puede tener acceso a los datos de video almacenados del dispositivo de almacenamiento 132 a través de video en corriente o descarga. El servidor de archivos puede ser cualquier tipo de servidor con la capacidad para almacenar datos de video codificados y transmitir esos datos de video codificados al dispositivo destino 116. Servidores de archivo ejemplares incluyen un servidor Web (por ejemplo, para un sitio Web), un servidor FTP, dispositivos de almacenamiento unidos a la red (ÑAS) , o una unidad de disco local. El dispositivo destino 14 puede tener acceso a los datos de video codificados a través de cualquier conexión de datos estándar, incluyendo una conexión de Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi) , una conexión cableada (por ejemplo, DSL, módem de cable, etcétera) , o una combinación de ambos que sea conveniente para tener acceso a datos de video codificados almacenados en un servidor de archivos. La transmisión de los datos de video codificados desde el dispositivo de almacenamiento 132 puede ser una transmisión de video en corriente, o transmisión de descarga, o una combinación de ambos.
Las técnicas de esta divulgación no necesariamente se limitan a aplicaciones o escenarios inalámbricos. Las técnicas se pueden aplicar a codificación de video en soporte de cualquiera de una variedad de aplicaciones multimedia, tal como transmisiones de televisión sobre-el-aire, transmisiones de televisión por cable, transmisiones de televisión satelital, transmisiones de video en corriente, por ejemplo, a través de la Internet, codificación de video digital para almacenamiento en un medio de almacenamiento de datos, decodificación de video digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 110 se puede configurar para soportar transmisión de video de una guia o dos guias para soportar aplicaciones tales como el video en corriente, reproducción de video, transmisión de video y/o telefonía de video.
El codificador de video 122 y el decodificador de video 128 pueden operar de acuerdo con un estándar de compresión de video tal como el estándar ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificación de Video Avanzada (AVC) , la cual se utilizará en partes de esta divulgación para propósitos de explicación. No obstante, muchas de las técnicas de esta divulgación se pueden aplicar fácilmente a cualquiera de una variedad de otros estándares de codificación de video, incluyendo el estándar HEVC recientemente emergente. Generalmente, cualquier estándar que permita la filtración en el codificador y decodificador se puede beneficiar de diversos aspectos de las enseñanzas de esta divulgación.
Aunque no se muestra en la figura 1, en algunos aspectos, el codificador de video 122 y el decodificador de video 128 pueden estar integrados con un codificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y software, para manejar la codificación tanto de audio como de video en una corriente de datos común o corrientes de datos separadas. Si aplica, las unidades MUX-DEMUX se pueden adaptar al protocolo de multiplexor ITU H.223, u otros protocolos tales como el protocolo de datagrama de usuario (UDP) .
El codificador de video 122 y el decodificador de video 128 pueden ser implementados como uno o más microprocesadores, procesadores de señal digital (DSPs) , circuitos integrados de aplicación especifica (ASICs), arreglos de puerta programable en campo (FPGAs), lógica discreta, software, hardware, microprogramación cableada o cualquier combinación de los mismos. Cada uno del codificador de video 122 y decodificador de video 128 se puede incluir en uno o más codificadores o decodificadores , cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador combinado (CODEC) en un dispositivo móvil respectivo, dispositivo de suscriptor, dispositivo de transmisión, servidor o similar.
En algunos casos, los dispositivos 112, 116 pueden operar en una manera sustancialmente simétrica. Por ejemplo, cada uno de los dispositivos 112, 116 puede incluir componentes de codificación y decodificación de video. Por lo tanto, el sistema 110 puede soportar la transmisión de video de una vía o dos vías entre los dispositivos de video 112, 116, por ejemplo para video en corriente, reproducción de video, transmisión de video o telefonía de video.
Durante el proceso de codificación, el codificador de video 122 puede ejecutar un número de técnicas o pasos de codificación. En general, el codificador de video 122 opera sobre bloques de video dentro de cuadros de video individuales a fin de codificar los datos de video. En un ejemplo, un bloque de video puede corresponder a un macrobloque o una división de un macrobloque. Los macrobloques son un tipo de bloque de video definido por el estándar ITU H.264 y otros estándares. Los macrobloques típicamente se refieren a bloques de datos 16x16, aunque el término en ocasiones también se utiliza de manera genérica para hacer referencia a cualquier bloque de video de tamaño NxN o Nx . El estándar ITU-T H.264 soporta intra-predicción en diversos tamaños de bloque, tal como 16x16, 8x8, o 4x4 para componentes de luminancia y 8x8 para componentes de crominancia, así como inter-predicción en diversos tamaños de bloque, tales como 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 y 4x4 para componentes de luminancia y tamaños escalados correspondientes para componentes de crominancia. En esta divulgación, "NxN" se refiere a las dimensiones de píxel del bloque en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles. En general, un bloque 16x16 tendrá 16 píxeles en una dirección vertical y 16 píxeles en una dirección horizontal. De igual manera, un bloque NxN generalmente tiene 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 en un bloque pueden ser acomodados en filas y columnas.
El estándar HEVC emergente define nuevos términos para bloques de video. En particular, los bloques de video (o divisiones de los mismos) se pueden referir como "unidades de codificación" (o CUs) . Con el estándar HEVC, las unidades codificadas más grandes (LCUs) se pueden dividir en CUs más pequeñas de acuerdo con un esquema de división de árbol cuádruple, y las diferentes CUs que son definidas en el esquema pueden ser divididas adicionalmente en las denominadas unidades de predicción (PUs). Las LCUs, CUs y PUs todas son bloques de video dentro del significado de esta divulgación. También se pueden utilizar otros tipos de bloque5 de video, consistentes con el estándar HEVC u otros estándares de codificación de video. Por lo tanto, la frase "bloques de video" se refiere a cualquier tamaño de video. CUs separadas pueden ser incluidas para componentes de luminancia y tamaños escalados para componentes de crominancia para un píxel determinado, aunque también se podrían utilizar otros espacios de color.
Los bloques de video pueden tener tamaños fijos o variables, y pueden diferir en tamaño de acuerdo con un estándar de codificación especificado. Cada cuadro de video puede incluir una pluralidad de porciones. Cada porción puede incluir una pluralidad de bloques de video, los cuales pueden estar acomodados en divisiones, también referidos como sub-bloques. De acuerdo con el esquema de división de árbol cuádruple referido anteriormente y descrito con mayor detalle a continuación, una primera CU N/2xN/2 puede comprender un sub-bloque de una LCU NxN, una segunda CU N/4xN/4 puede también comprender un sub-bloque de la primera CU. Una PU N/8xN/8 puede comprender un sub-bloque de la segunda CU. De manera similar, como un ejemplo adicional, los tamaños de bloque que son menores que 16x16 se pueden referir como divisiones de un bloque de video 16x16 o como sub-bloques del bloque de video 16x16. De igual manera, para un bloque NxN, los tamaños de bloque menores que NxN se pueden referir como divisiones o sub-bloques del bloque NxN. Los bloques de video pueden comprender bloques de datos de pixel en el dominio de pixel, o bloques de coeficientes de transformada en el dominio de transformada, por ejemplo, siguiendo la aplicación de una transformada tal como una transformada de coseno discreto (DCT) , una transformada de entero, una transformada de onda pequeña, o una transformada conceptualmente similar a los datos de bloque de video residuales que representan las diferencias de pixel entre bloques de video codificados y bloques de video predictivos. En algunos casos, un bloque de video puede comprender bloques de coeficientes de transformada cuantificados en el dominio de transformada.
Los datos de sintaxis dentro de una corriente de bits pueden definir una LCU para un cuadro o una porción, la cual es una unidad de codificación más grande en términos del número de pixeles para ese cuadro o porción. En general, una LCU o CU tiene un propósito similar a un macro bloque codificado de acuerdo con ,H.264, excepto que las LCUs y CUs no tienen una distinción de tamaño especifica. Por el contrario, un tamaño de LCU puede ser definido sobre una base cuadro-por-cuadro o porción-por-porción, y una LCU se puede dividir en CUs. En general, las referencias en esta divulgación a una CU se pueden referir a una LCU de una imagen o a una sub-CU de una LCU. Una LCU se puede dividir en sub-CUs, y cada sub-CU se puede dividir en sub-CUs. Los datos de sintaxis para una corriente de bits pueden definir un número máximo de veces que una LCU puede ser dividida, referido como profundidad de CU. Por consiguiente, una corriente de bits también¦ puede definir una unidad de codificación más pequeña (SCU) . Esta divulgación también utiliza los términos "bloque" y "bloque de video" para hacer referencia a cualquiera de una LCU, CU, PU, SCU o TU.
Tal como se mencionó anteriormente, una LCU puede estar asociada con una estructura de datos de árbol cuádruple. En general, una estructura de datos de árbol cuádruple incluye un nodo por CU, donde un nodo raíz corresponde a la LCU. Si una CU es dividida en cuatro sub-CUs, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CUs. Cada nodo de la estructura de datos de árbol cuádruple puede proporcionar datos de sintaxis para la CU correspondiente. Por ejemplo, un nodo en el árbol cuádruple puede incluir un indicador de división, indicando si la CU correspondiente al nodo está dividida en sub-CUs. Los elementos de sintaxis para una CU pueden ser definidos de manera recursiva, y pueden depender de si la CU está dividida en sub-CUs.
Una CU que no está dividida puede incluir una ' o más unidades de predicción (PUs) . En general, una PU representa toda o una porción de la CU correspondiente, e incluye datos para la recuperación de una muestra de referencia para la PU. Por ejemplo, cuando la PU es codificada intra-modo, la PU puede incluir datos que describen un modo de intra-predicción para la PU. Como otro ejemplo, cuando la PU es codificada en inter-modo, 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, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, una precisión de un cuarto de pixel o una precisión de un octavo de pixel) , un cuadro de referencia al cual señaliza 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 PU también pueden describir, por ejemplo, dividir la CU en una o más PUs. Los modos de división pueden diferir entre el hecho de si la CU está sin codificar, codificada en modo intra-predicción o codificada en modo inter-predicción.
Una CU que tiene una o más PUs también puede incluir una o más unidades de transformada (TUs). Las TUs comprenden la estructura de datos que incluye coeficientes de transformada residuales, los cuales típicamente son cuantificados . En particular, después de la predicción utilizando una PU, un codificador de video puede calcular valores residuales para la porción de la CU correspondiente a la PU. Los valores residuales pueden ser transformados, cuantificados , escaneados y almacenados en una TU, los cuales pueden tener tamaños variables correspondientes al tamaño de la transformada que se realizó. Por consiguiente, una TU no necesariamente está limitada al tamaño de una PU . Por lo tanto, las TUs pueden ser más grandes o más pequeñas que las PUs 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. Una vez más, las TUs pueden comprender las estructuras de datos que incluyen los coeficientes de transformada residuales asociados con una CU determinada.
Las figuras 2A y 2B son diagramas conceptuales que ilustran un árbol cuádruple ejemplar 250 y una LCU correspondiente 272. La figura 2A muestra un árbol cuádruple ejemplar 250, el cual incluye nodos acomodados en una forma jerárquica. Cada nodo en un árbol cuádruple, tal como el árbol cuádruple 250, puede ser un nodo hoja sin ramificaciones, o puede tener cuatro nodos ramificados. En el ejemplo de la figura 2A, el árbol cuádruple 250 incluye el nodo raiz 252. El nodo raíz 252 tiene cuatro nodos ramificados, incluyendo los nodos hoja 256A-256C (nodos hoja 256) y el nodo 254. Debido a que el nodo 254 no es un nodo hoja, el nodo 254 incluye cuatro nodos ramificados, los cuales en este ejemplo, son los nodos hoja 258A-258D (nodos hoja 258) .
El árbol cuádruple 250 puede incluir datos que describen características de una LCU correspondiente, tal como la LCU 272 en este ejemplo. Por ejemplo, el árbol cuádruple 250, por su estructura, puede describir la división de la LCU en sub- CUs. Asumir que la LCU 272 tiene un tamaño de 2Nx2N. La LCU 272, en este ejemplo, tiene cuatro sub-CUs 276A-276C (sub-CUs 276) y 274, cada una con un tamaño de Nx . La sub-CU 274 además está dividida en cuatro sub-CUs 278A-278D (sub-CUs 278), cada una con un tamaño de N/2xN/2. La estructura de árbol cuádruple 250 corresponde a la divisió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-CUs 276, el nodo 254 corresponde a la sub-CUs 274, y los nodos hoja 258 corresponden a las sub-CUs 278.
Datos para los nodos de árbol cuádruple 250 pueden describir si la CU correspondiente al nodo está dividida. Si la CU está dividida, cuatro nodos adicionales pueden estar presentes en el árbol cuádruple 250. En algunos ejemplos, un nodo de un árbol cuádruple se puede implementar similar al siguiente pseudocódigo : árbol cuádruple_nodo { boolcan dividir_indicador (1) ; // datos señalización si (dividir_indicador ) { árbol cuádruple_nodo hijol; árbol cuádruple_nodo hi o2; árbol cuádruple_nodo hijo3; árbol cuádruple_nodo hijo4; } } El valor dividir_indicador puede ser un valor de un bit representativo de si la CU correspondiente al nodo actual está dividida. Si la CU no está dividida, el valor de dividir_indicador puede ser "0", mientras que si la CU está dividida, el valor de dividir_indicador puede ser "1". Con respecto al ejemplo de árbol cuádruple 250, un arreglo de valores de dividir indicador puede ser 101000000.
En algunos ejemplos, cada una de las sub-CUs 276 y sub-CUs 278 puede ser codificada por intra-predicción utilizando el mismo modo de intra-predicción. Por consiguiente, el codificador de video 122 puede proporcionar una indicación del modo de intra-predicción en el nodo raiz 252. Además, algunos tamaños de la sub-CUs pueden tener múltiples transformadas posibles para un modo de intra-predicción particular. El codificador de video 122 puede proporcionar una indicación de la transformada a utilizar para dichas sub-CUs en el nodo raiz 252. Por ejemplo, las sub-CUs de tamaño N/2xN/2 pueden tener múltiples transformadas posibles disponibles. El codificador de video 122 puede señalizar la transformada a utilizar en el nodo raiz 252. Por consiguiente, el decodificador de video 128 puede determinar la transformada a aplicar a las sub-CUs 278 con base en el modo de intra-predicción señalizado en el nodo raíz 252 y la transformada señalizada en el nodo raíz 252.
Como tal, el codificador de video 122 no necesita señalizar transformadas a aplicar a las sub-CUs 276 y sub-CUs 278 en nodos hoja 256 y nodos hoja 258, sino que por el contrario simplemente puede señalizar un modo de intra-predicción y, en algunos ejemplos, una transformada a aplicar a ciertos tamaños de sub-CUs, en el nodo raíz 252, de acuerdo con las técnicas de esta divulgación. De esta manera, estas técnicas pueden reducir el costo general de la señalización de funciones de transformada para cada sub-CU de una LCU, tal como la LCU 272.
En algunos ejemplos, los modos de intra-predicción para las sub-CUs 276 y/o sub-CUs 278 pueden ser diferentes que los modos de intra-predicción para la LCU 272. El codificador de video 122 y el decodificador de video 130 se pueden configurar con funciones que mapean un modo de intra-pr.edicción señalizado en un nodo raíz 252 a un modo de intra-predicción disponible para las sub-CUs 276 y/o sub-CUs 278. La función puede proporcionar un mapeo muchos-a-uno de modos de intra-predicción disponibles para la LCU 272 a modos de intra-predicción para las sub-CUs 276 y/o sub-CUs 278.
Una porción se puede dividir en bloques de video (o LCUs) y cada bloque de video se puede dividir de acuerdo con la estructura de árbol cuádruple descrita en relación a las figuras 2A-B. De manera adicional, tal como se muestra en la figura 2C, los sub-bloques de árbol cuádruple indicados por "ENCENDIDO" pueden ser filtrados por filtros de bucle aquí descritos, mientras que los sub-bloques de. árbol cuádruple indicados por "APAGADO" pueden no ser filtrados. La decisión respecto a si se filtra o no un bloque o sub-bloque determinado se puede tomar en el codificador mediante la comparación del resultado filtrado y el resultado no filtrado con relación al bloque original que se está codificando. La figura 2D es un árbol de decisión que representa las decisiones de división que tienen como resultado la división del árbol cuádruple mostrada en la figura 2C. La filtración real aplicada a cualesquiera pixeles para bloques de "ENCENDIDO", se puede determinar con base en las métricas aquí analizadas.
En particular, la figura 2C puede representar un bloque de video relativamente grande que es dividido de acuerdo con un esquema de división de árbol cuádruple en bloques de video más pequeños de diversos tamaños. Cada bloque de video es etiquetado (encendido o apagado) en la figura 2C, para ilustrar si la filtración se debiera aplicar o evitar para ese bloque de video. El codificador de video puede definir este mapa de filtro mediante la comparación de las versiones filtrada y no filtrada de cada bloque de video con el bloque de video original que se está codificando.
Una vez más, la figura 2D es un árbol de decisión correspondiente a las decisiones de división que tienen como resultado la división de árbol cuádruple que se muestra en la figura 2C. En la figura 2D, cada circulo puede corresponder a una CU. Si el circulo incluye un indicador "1", entonces esa CU es dividida adicionalmente en cuatro más CUs, pero si el circulo incluye un indicador "0", .entonces esa CU no es dividida adicionalmente. Cada circulo (por ejemplo, correspondiente a las CUs) también incluye un diamante asociado. Si el indicador en el diamante para una CU determinada se establece a 1, entonces la filtración es "ENCENDIDA" para esa CU, pero si el indicador en el diamante para una CU determinada se establece a 0, entonces la filtración es apagada. De esta manera, las figuras 2C y 2D de manera individual o colectiva pueden ser vistas como un mapa de filtro que puede ser generado en un codificador y comunicado a un decodificador al menos una vez por porción de datos de video codificados a fin de comunicar el nivel de división de árbol cuádruple para un bloque de video determinado (por ejemplo, una LCU) ya sea que se aplique o no filtración a cada bloque de video dividido (por ejemplo, cada CU dentro de la LCU) .
Bloques de video más pequeños pueden proporcionar una mejor resolución, y pueden ser utilizados para ubicaciones de un cuadro de video que incluyen altos niveles de detalle. Bloques de video más grandes pueden proporcionar mayor eficiencia de la codificación, y se pueden utilizar para ubicaciones de un cuadro de video que incluyen un nivel bajo de detalle. Una porción puede ser considerada como una pluralidad de bloques de video y/o sub-bloques. Cada porción puede ser una serie de bloques de video independientemente decodificables de un cuadro de video. Alternativamente, los cuadros por si mismos pueden ser series decodificables de bloques de video, u otras porciones de un cuadro pueden ser definidas como series decodificables de bloques de video. El término "series de bloques de video" se puede referir a cualquier porción independientemente decodificable de un cuadro de video tal como un cuadro completo, una porción de un cuadro, un grupo de imágenes (GOP) también referida como una secuencia, u otra unidad independientemente decodificable definida de acuerdo con técnicas de codificación aplicables. Aspectos de esta divulgación pudieran ser descritos en referencia a cuadros o porciones, pero dichas referencias son simplemente ejemplares. Se debiera entender que generalmente se puede utilizar cualquier serie de bloques de video en lugar de un cuadro o una porción.
Los datos de sintaxis pueden ser definidos sobre una base por-unidad-codificada de manera que cada CU incluye datos de sintaxis asociados. La información de filtro aquí descrita puede ser parte de dicha sintaxis para una CU, pero pudiera probablemente ser más parte de la sintaxis' para una serie de bloques de video, tal como un cuadro, una porción, un GOP, LCU, o una secuencia de cuadros de video, en lugar de ser para una CU. Los datos de sintaxis pueden indicar el conjunto o conjuntos de filtros que se van a utilizar con CUs de la porción o cuadro. Adicionalmente, no toda la información de filtro necesariamente tiene que ser incluida en el encabezado de una serie común de bloques de video. Por ejemplo, sintaxis de descripción de filtro pudiera ser transmitida en un encabezado de cuadro, mientras que otra información de filtro es señalizada en un encabezado para una LCU.
El codificador de video 122 puede ejecutar codificación predictiva en la cual un bloque de video que está siendo codificado es comparado con un cuadro predictivo (u otra CU) a fin de identificar un bloque predictivo. Las diferencias entre el bloque de video actual que está siendo codificado y el bloque predictivo son codificadas como un bloque residual, y la sintaxis de predicción es utilizada para identificar el bloque predictivo. El bloque residual puede ser transformado y cuantificado. Técnicas de transformada pueden comprender un proceso DCT o proceso conceptualmente similar, transformadas de entero, transformadas de onda pequeña, u otros tipos de transformadas. En un proceso DCT, como un ejemplo, el proceso de transformada convierte un conjunto de valores de pixel en coeficientes de transformada, los cuales pueden representar la energía de los valores de pixel en el dominio de frecuencia. La cuantificación típicamente es aplicada a los coeficientes de transformada, y generalmente involucra un proceso que limita el número de bits asociados con cualquier coeficiente de transformada determinado.
Siguiendo la transformada y cuantificación, la codificación por entropía puede ser ejecutada sobre los bloques de video residuales cuantificados y transformados. Elementos de sintaxis, tal como la información de filtro y vectores de predicción definidos durante la codificación, también pueden ser incluidos en la corriente de bits codificada por entropía para cada CU. En general, la codificación por entropía comprende uno o más procesos que colectivamente comprimen una secuencia de coeficientes de transformada cuantificados y/u otra información de sintaxis. Técnicas de escaneo, tal como técnicas de escaneo de zigzag, son ejecutadas sobre los coeficientes de transformada cuantificados, por ejemplo, como parte del proceso de codificación por entropía, a fin de definir uno o más vectores serializados de una dimensión de coeficientes a partir de bloques de video bidimensionales . Otras técnicas de escaneo, incluyendo otros órdenes de escaneo o escaneos adaptivos, también pueden ser utilizadas, y posiblemente señalizadas en la corriente de bits codificada. En cualquier caso, los coeficientes escaneados son entonces codificados por entropía junto con cualquier información de sintaxis, por ejemplo, a través de codificación de longitud variable adaptable al contenido (CAVLC) , codificación aritmética binaria adaptable al contexto (CABAC) , u otro proceso de codificación por entropía.
Como parte del proceso de codificación, los bloques de video codificados pueden ser decodificados a fin de generar los datos de video utilizados para codificación posterior basada en predicción de bloques de video posteriores. En esta etapa, la filtración se puede ejecutar a fin de mejorar la calidad del video y, por ejemplo, retirar los artefactos de bloques del video decodificado . Los datos filtrados pueden ser utilizados para predicción de otros bloques de video, en cuyo caso la filtración se refiere como filtración xen bucle". Alternativamente, la predicción de otros bloques de video se puede basar en datos no filtrados, en cuyo caso la filtración se refiere como "post filtración".
Sobre una base cuadro-por-cuadro, porción-por-porción o LCU-por-LCU, el codificador de video 122 puede seleccionar uno o más conjuntos de filtros, y sobre una base de unidad-codificada-por-unidad-codificada, el codificador puede determinar si aplica o no la filtración. Para la CUs que se van a filtrar, el codificador puede ejecutar filtración sobre una base pixel-por-pixel o grupo-por-grupo, donde un grupo podría ser, por ejemplo, un bloque de pixeles 2x2 o un bloque de pixeles 4x4. Estas selecciones se pueden realizar en una manera que promueve la calidad del video. Dichos conjuntos de filtros pueden ser seleccionados a partir de conjuntos de filtros predefinidos, o pueden ser definidos de manera adaptable para promover la calidad del video. Como un ejemplo, el codificador de video 122 puede seleccionar o definir varios conjuntos de filtros para un cuadro o porción determinada de manera que diferentes filtros son utilizados para diferentes pixeles o grupos de pixeles de CUs de ese cuadro o porción. En particular, para cada entrada asociada con una CU, se pueden definir varios conjuntos de coeficientes de filtro, y las dos o más métricas asociadas con los pixeles de la CU se pueden utilizar para determinar cuál filtro del conjunto de filtros utilizar con dichos pixeles o grupos de pixeles.
En algunos casos, el codificador de video 122 puede aplicar varios conjuntos de coeficientes de filtro y seleccionar uno o más conjuntos que producen el video de mejor calidad en términos de cantidad de distorsión entre un bloque codificado y un bloque original, y/o los niveles más altos de compresión. En cualquier caso, una vez seleccionado, el conjunto de coeficientes de filtro aplicado por el codificador de video 122 para cada CU se puede codificar y comunicar al decodificador de video 128 del dispositivo destino 118 de manera que el decodificador de video 128 puede aplicar la misma filtración que fue aplicada durante el proceso de codificación para cada CU determinada.
Cuando se utilizan dos o más métricas para determinar cuál filtro utilizar con una entrada particular para una CU, la selección del filtro para esa CU particular no necesariamente necesita ser comunicada al decodificador de video 128. Por el contrario, el decodificador de video 128 también puede calcular dos o más métricas, y con base en la información de filtro previamente proporcionada por el codificador de video 122, emparejar la combinación de dos o más métricas con un filtro particular.
La figura 3 es un diagrama en bloques que ilustra un codificador de video 350 consistente con esta divulgación. El codificador de video 350 puede corresponder al codificador de video 122 del dispositivo 120, o un codificador de video de un dispositivo diferente. Tal como se muestra en la figura 3, el codificador de video 350 ' incluye un módulo de predicción 332, sumadores 348 y 351, y una memoria 334. El codificador de video 350 también incluye una unidad de transformada 338 y una unidad de cuantificación 340, asi como una unidad de cuantificación inversa 342 y una unidad de transformada inversa 344. El codificador de video 350 también incluye un filtro de desbloqueo 347 y una unidad de filtro adaptable 349. El codificador de video 350 también incluye una unidad de codificación por entropía 346. La unidad de filtro 349 del codificador de video 350 puede ejecutar operaciones de filtración y también puede incluir una unidad de selección de filtro (FSU) 353 para identificar un filtro deseable o preferido o conjunto de filtros que van a ser utilizados para la decodificación. La unidad de filtro 349 también puede generar información de filtro que identifica los filtros seleccionados de manera que los filtros seleccionados pueden ser comunicados de manera eficiente como información de filtro a otro dispositivo que va a ser utilizado durante una operación de decodificación.
Durante el proceso de codificación, el codificador de video 350 recibe un bloque de video, tal como una LCU, que va a ser codificado, y el módulo de predicción 332 ejecuta técnicas de codificación predictiva sobre el bloque de video.
Utilizando el esquema de división de árbol cuádruple antes analizado, el módulo de predicción 332 puede dividir el bloque de video y ejecutar técnicas de codificación predictiva sobre CUs de diferentes tamaños. Para inter-codificación, el módulo de predicción 332 compara el bloque de video que se va a codificar, incluyendo sub-bloques del bloque de video, con varios bloques en uno o más cuadros o porciones de referencia de video a fin de definir un bloque predictivo. Para intra-codificación, el módulo de predicción 332 genera un bloque predictivo con base en datos vecinos dentro de la misma CU. El módulo de predicción 332 emite el bloque de predicción y el sumador 348 sustrae el bloque de predicción del bloque de video que se está codificando a fin de generar un bloque residual.
Para inter-codificación, el módulo de predicción 332 puede comprender unidades de cálculo de movimiento y compensación de movimiento que identifican un vector de movimiento que señala a un bloque de predicción y genera el bloque de predicción con base en el vector de movimiento. Típicamente, el cálculo de movimiento es considerado el proceso de generar el vector de movimiento, el cual calcula el movimiento. Por ejemplo, el vector de movimiento puede indicar el desplazamiento de un bloque predictivo dentro de un cuadro predictivo con relación al bloque actual que está siendo codificado dentro del cuadro actual. La compensación de movimiento típicamente es considerada el proceso de extracción o generación del bloque predictivo con base en el vector de movimiento determinado por el cálculo de movimiento. Para intra-codificación, el módulo de predicción 332 genera un bloque predictivo con base en los datos vecinos dentro de la misma CU. Uno o más modos de intra-predicción pueden definir la manera en que se puede definir un bloque de intra-predicción .
Después que el módulo de predicción 332 emite el bloque de predicción y el sumador 348 sustrae el bloque de predicción del bloque de video que está siendo codificado a fin de generar un bloque residual, la unidad de transformada 338 aplica una transformada al bloque residual. La transformada puede comprender una transformada de coseno discreto (DCT) o una transformada conceptualmente similar tal como aquélla definida por un estándar de codificación tal como el estándar HEVC. También se podrían utilizar transformadas de onda pequeña, transformadas de entero, transformadas de sub-banda 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 residual. La transformada puede convertir la información residual de un dominio de píxel a un dominio de frecuencia. La unidad de cuantificación 340 entonces cuantifica los coeficientes de transformada residual para reducir adicionalmente la tasa de transferencia de bits. La unidad de cuantificación 340 , por ejemplo, puede limitar el número de bits utilizados para codificar cada uno de los coeficientes. Después de la cuantificación, la unidad de codificación por entropía 346 escanea el bloque de coeficiente cuantificado a partir de una representación bidimensional a uno o más vectores de una dimensión serializados . El orden de escaneo puede ser previamente programado para ocurrir en un orden definido (tal como escaneo en zigzag, escaneo horizontal, escaneo vertical, combinaciones, u otro orden predefinido) , o posiblemente definido de manera adaptiva con base en estadísticas de codificación previas.
Siguiendo este proceso de escaneo, la unidad de codificación por entropía 346 codifica los coeficientes de transformada cuantificados (junto con cualesquiera elementos 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 la corriente de bits codificada por entropía pueden incluir sintaxis de predicción del módulo de predicción 332 , tal como vectores de movimiento para inter-codificación o modos de predicción para intra-codificación. Elementos de sintaxis incluidos en la corriente de bits codificada por entropía también pueden incluir información de filtro de la unidad de filtro 349, la cual puede ser codificada en la manera aquí descrita.
CAVLC es un tipo de técnica de codificación por entropía soportada por el estándar ITU H.264/MPEG4, AVC, que puede ser aplicada sobre una base sectorizada por la unidad de codificación por entropía 346. CAVLC utiliza tablas de codificación de longitud variable (VLC) en una manera que comprime de manera efectiva "corridas" serializadas de coeficientes de transformada y/o elementos de sintaxis. CABAC es otro tipo de técnica de codificación por entropía soportada por el estándar ITU H.264/MPEG4 AVC, que puede ser aplicado sobre una base sectorizada por la unidad de codificación por entropía 346. CABAC involucra varias etapas, incluyendo la 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 elementos de sintaxis de acuerdo con CABAC. Al igual que el estándar ITU H.264/MPEG4 AVC, el estándar HEVC emergente también puede soportar codificación por entropía tanto CAVLC como CABAC. Además, también existen muchos otros tipos de técnicas de codificación por entropía, y probablemente en el futuro surgirán -nuevas técnicas de codificación por entropía. Esta divulgación no queda limitada a alguna técnica de codificación por entropía específica.
Siguiendo la codificación por entropía por la unidad de codificación por entropía 346, el video codificado puede ser transmitido a otro dispositivo o archivado para posterior transmisión o recuperación. Una vez más, el video codificado puede comprender los vectores codificados por entropía y diversa sintaxis, la cual puede ser utilizada por el decodificador para configurar de manera apropiada el proceso de decodificació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 agrega el bloque residual reconstruido al bloque de predicción producido por el módulo de predicción 332 para producir un bloque de video reconstruido pre-desbloqueado , en algunas ocasiones referido como una imagen reconstruida pre-desbloqueada . El filtro de desbloqueo 347 puede aplicar filtración al bloque de video reconstruido pre-desbloqueado para mejorar la calidad del video retirando los bloques u otros artefactos. La salida del filtro de desbloqueo 347 se puede referir como un bloque de video post-desbloqueado, bloque de video reconstruido o imagen reconstruida.
La unidad de filtro 349 se puede configurar para recibir una sola entrada o múltiples entradas. En el ejemplo de la figura 3, la unidad de filtro 349 recibe como entrada la imagen reconstruida post-desbloqueada (RI), la imagen reconstruida pre-desbloqueada (pRI), la imagen de predicción (PI), y el bloque residual reconstruido (El). La unidad de filtro 349 puede utilizar cualquiera de estas entradas ya sea individualmente o en combinación para producir una imagen reconstruida para almacenar en la memoria 334. De manera adicional, tal como se analizará con mayor detalle a continuación, con base en dos o más métricas, se pueden seleccionar uno o más filtros para que se apliquen a las entradas. 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 . No obstante, en otros ejemplos 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 después utilizar la versión filtrada de pRI en conjunto con las versiones filtradas de El y PI para crear una imagen reconstruida. En casos donde la salida de la unidad de filtro 349 es el producto de un filtro adicional que -está siendo aplicado a una sola entrada, la unidad de filtro 349 de hecho puede aplicar filtros a las otras entradas, pero esos filtros pudieran tener todos coeficientes cero. De manera 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 pudiera tener todos los coeficientes cero.
La unidad de filtro 349 también se puede configurar para recibir una entrada sencilla. Por ejemplo, aunque la figura 3 muestra PI, El, pRI y RI siendo ingresados en la unidad de filtro 349, en algunas implementaciones RI pudiera ser la única entrada recibida por la unidad de filtro 349. En dicha implementación, la unidad de filtro 349 pudiera aplicar un filtro a RI de manera que una versión filtrada de RI es más similar a la imagen original que la versión no filtrada de RI . En otras implementaciones, la unidad de filtro 349 y el filtro de desbloqueo 347 se pueden combinar en una sola unidad de filtración que aplica filtración a pRI . Las técnicas de esta divulgación, las cuales generalmente se refieren a mapeo de filtro basado en multi-métrica, son compatibles con esquemas de filtración de entrada sencilla y entrada múltiple que utilizan múltiples filtros.
La filtración por la unidad de filtro 349 puede mejorar la compresión generando bloques de video predictivos que coinciden de manera más cercana con bloques de video que están siendo codificados que los bloques de video predictivos no filtrados. Después de la filtración, el bloque de video reconstruido puede ser utilizado por el módulo de predicción 332 como un bloque de referencia para inter-codificar un bloque en un cuadro de video posterior u otra CU. Aunque la unidad de filtro 349 se muestra "en-bucle", las técnicas de esta divulgación también podrían ser utilizadas con postfiltros, en cuyo caso datos no filtrados (en lugar de datos filtrados) serian utilizados para propósitos de predecir datos en CUs posteriores.
Para una serie de bloques de video, tal como una porción o cuadro, la unidad de filtro 349 puede seleccionar conjuntos de filtros para cada entrada en una manera que promueve la calidad de video. Por ejemplo, la unidad de filtro 349 puede seleccionar conjuntos de filtros de conjuntos de coeficientes pre-definidos , o pueden definir de manera adaptiva filtros a fin de promover la calidad de video o compresión mejorada. La unidad de filtro 349 puede seleccionar o definir uno o más conjuntos de filtros para una CU determinada de manera que los mismos conjuntos de filtros son utilizados para pixeles de diferentes bloques de video de esa CU. Para un cuadro, porción 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 la mejor calidad de video o los niveles más altos de compresión. Alternativamente, la FSU 353 puede preparar un nuevo filtro analizando las auto-correlaciones y las correlaciones cruzadas entre múltiples entradas y una imagen original. Un nuevo conjunto de filtros puede ser determinado, por ejemplo, resolviendo las ecuaciones Wienter-Hopt basadas en la auto-correlación y la correlación cruzada. Sin considerar si un nuevo conjunto de filtros es preparado o si un conjunto existente de filtros es seleccionado, la unidad de filtro 349 genera sintaxis para inclusión en la corriente de bits que permite a un decodificador identificar también el conjunto o conjuntos de filtros que se van a utilizar para el cuadro o porción particular.
De acuerdo con esta divulgación, para cada pixel de una CU dentro de la serie de bloques de video, la unidad de filtro 349 puede seleccionar cuál filtro del conjunto de filtros va a ser utilizado con base en dos o más métricas que cuantifican propiedades asociadas con uno o más conjuntos de pixeles dentro de la CU. De esta manera, la FSU 353 puede determinar conjuntos de filtros para una unidad codificada de nivel superior tal como un cuadro o porción, mientras que la unidad de filtro 349 determina cuáles filtros de los conjuntos van a ser utilizados para un pixel particular de una unidad codificada de nivel inferior con base en dos o más métricas asociadas con los pixeles de esa unidad codificada de nivel inferior.
Un conjunto de M filtros puede ser utilizado para cada entrada. Dependiendo de las preferencias de diseño, M puede ser, por ejemplo, tan poco como 2 o tan grande como 16, o incluso superior. Un número grande de filtros por unidad puede mejorar la calidad del video, pero también puede incrementar la sobrecarga asociada con la señalización de conjuntos de filtros desde un codificador a un decodificador . El conjunto de M filtros puede ser determinado por la FSU 353 como se describió anteriormente y señalizado al decodificador para cada cuadro o porción. Se puede utilizar un mapa de segmentación para indicar la manera en que una CU es segmentada y si una sub-unidad particular de la CU va o no a ser filtrada. El mapa de segmentación, por ejemplo, puede incluir para una CU un arreglo de indicadores de división tal como se describió antes asi como un bit adicional que señalice si cada sub-CU va a ser filtrada. Para cada entrada asociada con un pixel de una CU que va a ser filtrada, se puede elegir un filtro especifico del conjunto de filtros con base en dos o más métricas. Combinaciones de valores para dos o más métricas se pueden indexar a filtros particulares desde el conjunto de M filtros.
La figura 4A es un diagrama conceptual que ilustra rangos de valores para dos métricas indexadas a filtros de un conjunto de filtros. El ejemplo particular de la figura 4A muestra ocho filtros (es decir, filtro 1, filtro 2... filtro 8), pero se puede utilizar de manera similar una cantidad mayor o menor de filtros. La figura 4A muestra dos métricas que pudieran ser utilizadas para seleccionar un filtro de acuerdo con las técnicas de esta divulgación. Las dos métricas, por ejemplo, pueden cuantificar propiedades de los datos de pixel relacionadas con actividad no especifica de la dirección (por ejemplo, un valor del Laplaciano de suma modificada) y dirección, actividad específica de la dirección y detección de borde, una métrica de dirección y una métrica de borde, una métrica de actividad horizontal y una métrica de actividad vertical, u otras dos métricas de este tipo. En algunos casos, se pudieran utilizar tres o más métricas, en cuyo caso el diagrama conceptual de la figura 4A incluiría una tercera dimensión para mapear rangos de las métricas a filtros del conjunto de filtros.
En el ejemplo de la figura 4A, una primer métrica (Métrica 1) tiene cuatro rangos (Rango 1-1, 1-2, 1-3 y 1-4), y una segunda métrica (Métrica 2) también tiene cuatro rangos (Rango 2-1, 2-2, 2-3, y 2-4). Por lo tanto, el ejemplo de la figura 4A tiene dieciséis combinaciones de rangos para la Métrica 1 y la Métrica 2. Tal como se puede observar a partir de la figura 4A, no obstante, cada combinación no necesariamente está asociada con un filtro único. La combinación de Rango 1-1 y Rango 2-1, asi como las combinaciones 1-1 y 2-2, y 1-1 y 2-3, por ejemplo, son todas mapeadas al Filtro 1, en el ejemplo de la figura 4A. En contraste, el Filtro 4 solamente es mapeado a una combinación (1-1 y 2-4) . Aunque los rangos de la figura 4A se muestran como siendo relativamente iguales, los tamaños de rangos pueden variar. Por ejemplo, en algunas implementaciones, el Rango 1-1 puede abarcar un mayor rango de valores que el Rango 1-2. De manera adicional, aunque la figura 4A muestra la Métrica 1 y la Métrica 2 como teniendo el mismo número de rangos, el número de rangos para una primer métrica y el número de rangos para una segunda métrica no necesariamente necesitan ser iguales. Si, por ejemplo, la Métrica 1 es una métrica de varianza y la Métrica 2 es una métrica de dirección, la Métrica 1 pudiera utilizar ocho rangos mientras que la Métrica 2 utiliza tres rangos.
En algunos ejemplos, los rangos de la Métrica 1 y la Métrica 2 pueden representar un espectro continuo de valores. Por ejemplo, si la Métrica 1 es un valor del Laplaciano de suma modificada, el Rango 1-2 puede corresponder a más actividad que el Rango 1-1 pero menos actividad que el Rango 1-3, y el Rango 1-4 puede corresponder a más actividad que el Rango 1-3. Dentro de un rango, la cantidad de actividad determinada para un píxel particular o grupo de pixeles puede incrementar de manera similar a lo largo del eje de la Métrica 1. En otros ejemplos, los rangos de la Métrica 1 y Métrica 2 pueden no representar rangos reales sino que por el contrario pueden representar determinaciones discretas. Por ejemplo, si la Métrica 2 es una métrica de dirección, el Rango 1-1 puede corresponder a una determinación de no dirección, el Rango 2-2 puede corresponder a una determinación de dirección horizontal, el Rango 2-3 puede corresponder a una determinación de la dirección vertical, y el Rango 2-4 puede representar una determinación de dirección diagonal. Tal como se describirá con mayor detalle a continuación, no dirección, dirección horizontal, dirección vertical y dirección diagonal pueden ser determinaciones discretas y, por lo tanto, los rangos para la Métrica 2 pudieran no representar un espectro continuo de valores en la misma manera que lo hacen los rangos de la Métrica 1.
La figura 4B es un diagrama conceptual que ilustra rangos de valores para una métrica de actividad y una métrica de dirección. En el ejemplo de la figura 4B, la métrica de dirección incluye tres determinaciones discretas (No Dirección, Horizontal y Vertical) . Técnicas para determinar no dirección, horizontal y vertical asi como técnicas para determinar actividad se explicarán con mayor detalle a continuación. El ejemplo particular de la figura 4B muestra seis filtros (es decir, Filtro 1, Filtro 2... Filtro 6), pero de manera similar se puede utilizar una cantidad mayor o menor de filtros. Tal como se puede observar en al figura 4B, las dos métricas (actividad y dirección) crean 15 combinaciones, identificadas como las combinaciones 421 a 435. En algunos casos, no obstante, combinaciones adicionales no explícitamente mostradas en la figura 4B también pueden ser utilizadas. Por ejemplo, una combinación correspondiente a no actividad puede ser una 16ava combinación gue también tiene un filtro correspondiente.
La unidad de filtro 349 puede almacenar un mapeo de filtros a combinaciones de rangos de dos o más métricas, tal como los mapeos ejemplares de las figuras 4A y 4B, y utilizar el mapeo para determinar cuál filtro de un conjunto de filtros aplicar a un píxel o grupo de pixeles particular en una CU. El mapeo de filtros a combinaciones de rangos de dos o más métricas puede ser determinado, por ejemplo, por la unidad de filtro 349 como parte del proceso de selección de filtro antes descrito. Sin considerar cómo se determine el mapeo, la unidad de filtro 349 puede generar información que permita a un decodificador reconstruir el mapeo. Esta información puede ser incluida en la corriente de bits codificada para señalizar el mapeo de combinaciones de rangos a filtros. El mapeo de combinaciones a rangos señalizados puede mapear combinaciones de rangos para filtrar identificaciones IDs. Los coeficientes reales para un filtro particular pudieran ser señalizados por separado.
A fin de generar esta información, la unidad de filtro 349 primero determina una orden de transmisión para las combinaciones. El orden de transmisión generalmente se refiere al orden en el cual el filtro será señalizado para combinaciones de rangos. Utilizando la figura 4A como un ejemplo, la unidad de filtro 349 pudiera utilizar un orden de transmisión de izquierda-a-derecha, arriba-a-abajo donde el filtro para la combinación 401 es señalizado primero, el filtro para la combinación 402 es señalizado en segundo y las combinaciones restantes son señalizadas en el orden de 403 => 404 => 405 => 406 => 407 => 408 => 409 => 410 => 411 => 412 => 413 => 414 => 415 => 416. La unidad de filtro 349 también podría utilizar un orden de transmisión de arriba-a-abajo, en zigzag donde los filtros para combinaciones son señalizados en el orden de 401 => 402 => 403 => 404 => 408 => 407 => 406 => 405 => 409 => 410 => 411 => 412 => 416 => 415 => 414 => 413. La unidad de filtro 349 también podría utilizar un orden de transmisión de arriba-a-aba o, izquierda-a-derecha donde los filtros para las combinaciones son señalizados en el orden de 401 => 405 => 409 => 413 => 402 => 406 => 410=> 414 => 403 => 407 => 411 => 415 => 404 => 408 => 412 => 416. La unidad de filtro 349 también podría utilizar un orden de transmisión de izquierda-a-derecha en zigzag donde los filtros para combinaciones son señalizados en el orden de 401 => 405 => 409 => 413 => 414 => 410 => 406=> 402 => 403 => 407 => 411 => 415 => 416 => 412 => 408 => 404. Haciendo referencia a la figura 4B, la unidad de filtro 349 puede utilizar un orden de transmisión de izquierda-a-derecha, abajo-a-arriba de manera que el orden de transmisión es 421 => 422 => 423 => 424 =>425 => 426 => 427 => 428 => 429 => 430 => 431 => 432 => 433 => 434 => 435. Tal como se puede imaginar, estos son solo unos pocos de los muchos órdenes de transmisión que son posibles.
De acuerdo con una técnica de esta divulgación, la unidad de filtro 349 puede utilizar una serie de palabras código para señalizar el mapeo a un decodificador . Por ejemplo, la unidad de filtro 349 puede generar una primera palabra código para indicar si una combinación actual que está siendo decodificada se mapea al mismo filtro que la combinación más recientemente decodificada que comparte el mismo rango para la primera métrica. Si una combinación actual que está siendo decodificada se mapea al mismo filtro que la combinación más recientemente decodificada que comparte el mismo rango para la segunda métrica, entonces la unidad de filtro 349 puede generar una segunda palabra código en lugar de la primera palabra código. Si una combinación actual que está siendo decodificada no se mapea al mismo filtro que cualquiera de estas combinaciones más recientemente decodificada's, entonces la unidad de filtro 349 puede generar una tercera palabra código, en lugar de la primera palabra código o segunda palabra código, que indica el filtro correspondiente a la combinación actual que está siendo decodificada. La primera y segunda palabras código del ejemplo actual pueden ser relativamente cortas en comparación con la tercera palabra código. Por ejemplo, la primera palabra código y la segunda palabra código pudieran tener, cada una, dos bits (por ejemplo, 00 y 01, respectivamente), mientras que la tercera palabra código tiene más bits (un primer bit de 1, más bits adicionales) . En este contexto particular, una combinación actual que está siendo decodificada o una combinación previa que está siendo decodificada se refiere a la porción de los procesos de codificación y decodificación donde el mapeo de filtros a combinaciones de rango está siendo señalizado por un codificador o construido por un decodificador, y no necesariamente a una transmisión o decodificación de la combinación en si misma.
Ejemplos de las técnicas antes descritas serán proporcionados ahora con referencia a la figura 4A y una orden de transmisión de arriba-a-abajo, izquierda-a-derecha. Si, por ejemplo, la combinación 407 es la combinación que actualmente está siendo decodificada, entonces la combinación 406 es la combinación más recientemente decodificada que comparte el mismo rango para la Métrica 1, y la combinación 403 es la combinación más recientemente decodificada que comparte el mismo rango para la Métrica 2. Si la combinación 407 se mapea al mismo filtro (filtro 7 en la figura 4A) que la combinación más recientemente decodificada que comparte el mismo rango para una segunda métrica (es decir, Rango 2-3 para la Métrica 2), entonces la unidad de filtro 349 puede transmitir una segunda palabra código (por ejemplo, 01) para indicar que la combinación actual que está siendo decodificada (combinación 407) se mapea al mismo filtro que la combinación más recientemente decodificada que comparte el mismo rango para una segunda métrica (combinación 403) .
Si, por ejemplo, la combinación 410 es la combinación actual que está siendo decodificada, entonces la combinación 409 es la combinación más recientemente decodificada que comparte el mismo rango para la Métrica 1, y la combinación 406 es la combinación más recientemente decodificada que comparte el mismo rango para la Métrica 2. Si la combinación 410 se mapea al mismo filtro (Filtro 2 en la figura 4A) que la combinación más recientemente decodificada que comparte el mismo rango para una primera métrica (es decir, Rango 1-2 para la Métrica 1), entonces la unidad de filtro 349 puede transmitir una primera palabra código (por ejemplo, 00) para indicar que la combinación actual que está siendo decodificada (combinación 410) se mapea al mismo filtro (Filtro 2) que la combinación más recientemente decodificada que comparte el mismo rango para una primera métrica (combinación 409) .
Si, por ejemplo, la combinación 411 es la combinación actual que está siendo decodificada, entonces la combinación 410 es la combinación más recientemente decodificada que comparte el mismo rango para la Métrica 1, y la combinación 407 es la combinación más recientemente decodificada que comparte el mismo rango para la Métrica 2. Si la combinación 411 no se mapea al mismo filtro que cualquiera de la combinación 410 o combinación 407, entonces la unidad de filtro 349 puede transmitir una tercera palabra código (por ejemplo 1 + bits adicionales) para indicar que la combinación actual que está siendo decodificada (combinación 411) se mapea a un filtro diferente (Filtro 3) que la combinación más recientemente decodificada que comparte el mismo rango para la Métrica 1 y la combinación más recientemente decodificada que comparte el mismo rango para la Métrica 2.
Para esas combinaciones actuales donde una combinación que comparte el mismo rango para la Métrica 1 o una combinación que comparte el mismo rango para la Métrica 2 no han sido decodificadas todavía, entonces esas opciones pueden ya sea ser consideradas como no disponibles o pueden ser reemplazadas por una combinación diferente. Si, por ejemplo, la combinación 409 es la combinación actual que se va a decodificar, entonces la combinación 405 es la combinación más recientemente decodificada que comparte el mismo rango para la Métrica 2, pero ninguna combinación que comparte un rango para la Métrica 1 ha sido decodificada todavía. En dichos casos, la combinación más recientemente decodificada que comparte un rango para la Métrica 1 se puede asumir que no se mapea al mismo filtro que la combinación actual que está siendo decodificada. Por lo tanto, en este caso, la primera palabra código no será utilizada para la combinación 409. De manera alternativa, la combinación que comparte un rango para la Métrica 1 puede ser reemplazada por otra combinación, tal como la combinación más recientemente decodificada o una combinación diferente previamente decodificada. En dicho caso, la combinación más recientemente decodificada antes que la combinación 409 sería la combinación 408. Por lo tanto, si la combinación 408 se mapea al mismo filtro que la combinación 409, entonces la unidad de filtro 349 puede generar la primera palabra código. Se pueden utilizar técnicas análogas para esas combinaciones donde una combinación previa que comparte el rango común para la Métrica 1 no ha sido decodificada todavía.
Para la primera combinación en un orden de transmisión (por ejemplo, combinación 401 en el ejemplo de la figura 4A) , donde ni una combinación que comparte el mismo rango para la Métrica 1 o una combinación que comparte el mismo rango para la Métrica 2 han sido decodificadas , la unidad de filtro 349 puede generar una palabra código indicando el filtro que mapea a la primera combinación. El filtro puede ser señalizado, por ejemplo, utilizando la tercera palabra código o puede ser señalizado utilizando una técnica diferente, en cuyo caso las técnicas descritas en esta divulgación pudieran comenzar con la segunda combinación en un orden de transmisión o una combinación posterior.
De acuerdo con otra técnica de esta divulgación, la unidad de filtro 349 puede utilizar una serie de palabras código para señalizar el mapeo a un decodificador . En algunas implementaciones , la unidad de filtro 349 puede generar una primera palabra código para indicar si una combinación actual que está siendo decodificada se mapea al mismo filtro que la combinación más recientemente decodificada que comparte el mismo rango para la primera métrica. Si una combinación actual que está siendo decodificada no se mapea al mismo filtro que la combinación más recientemente decodificada que comparte ese rango para la primera métrica, la unidad de filtro 349 puede generar una segunda palabra código, en lugar de la primera palabra código, gue indica el filtro que se mapea a la combinación actual que está siendo decodificada. En este ejemplo, la primera palabra código puede ser relativamente corta en comparación con la segunda palabra código. Por ejemplo, la primera palabra código pudiera ser de un bit (por ejemplo, 0), mientras que la segunda palabra código es de más bits (por ejemplo, un primer bit de 1, más bits adicionales). A diferencia de la técnica previa donde una palabra código corta pudiera ser generada en caso que una combinación actual se mapee al mismo filtro que una combinación previamente decodificada que comparte el mismo rango para cualquiera de la Métrica 1 o la Métrica 2, esta técnica incluye solamente generar una palabra código corta si la combinación actual se mapea al mismo filtro que una combinación previamente decodificada que comparte el mismo rango para la Métrica 1. Por lo tanto, incluso si la combinación actual se mapea al mismo filtro que una combinación previamente decodificada que comparte el mismo rango para la Métrica 2, la unidad de filtro 349 todavía genera una segunda palabra código (por ejemplo, 1 + bits adicionales) . Aunque esta divulgación está utilizando la Métrica 1 para propósitos de explicación, las mismas técnicas también se pueden aplicar utilizando solamente la Métrica 2.
De acuerdo con otra técnica todavía de esta divulgación, la unidad de filtro 349 puede utilizar una serie diferente de palabras código para señalizar el mapeo a un decodificador . Por ejemplo, la unidad de filtro 349 puede generar una primera palabra código para indicar si una combinación actual que está siendo decodificada se mapea al mismo filtro que la combinación más recientemente decodificada, sin considerar cuál rango, en caso de haberlo, tiene en común la combinación actual con la combinación previamente decodificada. Si la combinación actual que está siendo decodificada no se mapea al mismo filtro que la combinación más recientemente decodificada, la unidad de filtro 349 puede generar una segunda palabra código que identifica el filtro que se mapea a la combinación actual. En esta implementación particular, la primera palabra código puede ser. relativamente corta en comparación con la segunda palabra código. Por ejemplo, la primera palabra código pudiera ser un bit (por ejemplo 0) , mientras que la segunda palabra código es de más bits (por ejemplo, un primer bit de 1, más bits adicionales) .
Una vez más, utilizando el ejemplo de la figura 4A y un orden de transmisión de arriba-a-aba o, izquierda-a-derecha, la combinación 401 seria la combinación más recientemente decodificada si la combinación 402 está siendo actualmente decodificada, la combinación 402 seria la combinación más recientemente decodificada si la combinación 403 es la combinación actual, y asi sucesivamente, la combinación 404 seria la combinación más recientemente decodificada si la combinación 405 es la combinación actual que está siendo decodificada. Por lo tanto, la unidad de filtro 349 puede generar la primera palabra código si la combinación 402 se mapea al mismo filtro que la combinación 401, si la combinación 403 se mapea al mismo filtro que la combinación 402, etcétera. De otra manera, la unidad de filtro 349 puede generar la segunda palabra código que identifica el filtro que se mapea a la combinación actual.
De acuerdo con otra técnica todavía de esta divulgación, la unidad de filtro 349 puede utilizar dos palabras código para señalizar el mapeo de los filtros a combinaciones. Una primera palabra código, tal como un "0", puede ser utilizada para señalizar que una combinación actual utiliza el mismo filtro que una combinación previa. Una segunda palabra código, tal como "1", se puede utilizar para señalizar que una combinación actual tiene un filtro diferente que la combinación previa. No obstante, la segunda palabra código no necesita identificar un nuevo filtro. Por el contrario, el nuevo filtro puede ser determinado con base en el orden de transmisión para las clases y el orden en el cual son transmitidos los coeficientes de filtro. Al utilizar el orden de transmisión de izquierda-a-derecha, inferior-a-superior descrito anteriormente para la figura 4B como un ejemplo, las palabras código pudieran ser transmitidas por consiguiente: 421 (0) => 422 (0) => 423 (1) => 424 (0) =>425 (0) => 426 (0) => 427 (0) => 428 (1) => 429 (0) => 430 (0) => 431 (0) => 432 (1) => 433 (0) => 434 (0) => 435 (0), con el número en paréntesis representando la palabra código para esa combinación. En este ejemplo, las combinaciones 421-422 serian mapeadas a un primer filtro, las combinaciones 423-427 a un segundo filtro, las combinaciones 428-431 a un tercer filtro, y las combinaciones 432-435 a un cuarto filtro. Los coeficientes para el primer filtro, segundo filtro, tercer filtro y cuarto filtro pueden corresponder al orden en el cual los conjuntos de coeficientes de filtro son señalizados, donde el primer conjunto de coeficientes de filtro señalizados corresponden al primer filtro, el segundo conjunto de coeficientes de filtro señalizados corresponde al segundo filtro, y asi sucesivamente. La determinación de un orden para transmitir conjuntos de coeficientes de filtro se analiza con mayor detalle a continuación.
Las diversas técnicas descritas en esta divulgación para señalizar un mapeo de filtros a combinaciones de rangos no son alternativas mutuamente exclusivas, sino que más bien se pueden utilizar en conjunto entre si. Por ejemplo, en algunas implementaciones , algunas combinaciones pudieran ser señalizadas utilizando una primera técnica mientras que otras combinaciones son señalizadas utilizando una segunda técnica. Como un ejemplo, donde una de una combinación que comparte el mismo rango para la Métrica 1 o una combinación que comparte el mismo rango para la Métrica 2 no han sido decodificadas todavía (por ejemplo, combinaciones 402, 403, 404, 405, 409 y 413), entonces la unidad de filtro 349 puede utilizar una primera técnica. Donde tanto una combinación que comparte el mismo rango para la Métrica 1 y una combinación que comparte el mismo rango para la Métrica 2 han sido decodificadas (por ejemplo, las combinaciones 406, 407, 408, 410, 411, 412, 414, 415 y 416), entonces se pudiera utilizar una segunda técnica. De manera adicional, las palabras código utilizadas para cualquiera de la primera, segunda y tercera palabras código antes descritas pueden ser cualquiera de palabras código de longitud fija, palabras código de longitud variable o palabras código de longitud variable de contexto adaptivo.
Además de generar información que permite a un decodificador reconstruir el mapeo de filtros a combinaciones de rangos, la unidad de filtro 349 también genera información que permite a un decodificador reconstruir los filtros en si mismos. La reconstrucción de los filtros incluye reconstruir los coeficientes de filtro de los filtros. Tal como se describirá con mayor detalle a continuación, la unidad de filtro 349 puede utilizar técnicas de codificación diferencial para señalizar los coeficientes de filtro. Para utilizar la técnica de codificación diferencial, la unidad de filtro 349 determina un orden en el cual señalizar los conjuntos de coeficientes de filtro.
Como parte de la determinación del orden, la unidad de filtro 349 determina una identificación de combinación (ID) que representa un valor secuencial para cada combinación de rangos. Utilizando la figura 4A como un ejemplo, las combinaciones pudieran ser IDs de combinación asignadas que representan valores secuenciales en un orden de izquierda-a-derecha, arriba-a-abajo, en cuyo caso la combinación 401 tendría asignado el primer valor secuencial, la combinación 402 tendría asignado el segundo valor secuencial y las combinaciones restantes tendrían asignados valores secuenciales en el orden de 403 => 404 =>.405 => 406 => 407 => 408 => 409 => 410 => 411 => 412 => 413 => 414 => 415 => 416. La unidad de filtro 349 también podría asignar las IDs de combinación utilizando un orden de arriba-a-abajo, en zigzag donde las combinaciones tendrían asignadas IDs de combinación con valores secuenciales que están en un orden de 401 => 402 => 403 => 404 => 408 => 407 => 406 => 405 => 409 => 410 => 411 => 412 => 416 => 415 => 414 => 413. La unidad de filtro 349 también podría asignar IDs de combinación utilizando un orden de arriba-a-abajo, izquierda-a-derecha donde las combinaciones son IDs de combinación asignadas con valores secuenciales que están en un orden de 401 => 405 => 409 => 413 => 402 => 406 => 410=> 414 => 403 => 407 => 411 => 415 => 404 => 408 => 412 => 416. La unidad de filtro 349 también podría utilizar un orden de izquierda-a-derecha, en zigzag donde las combinaciones son IDs de combinación asignadas con valores secuenciales en un orden de 401 => 405 => 409 => 413 => 414 => 410 => 406=> 402 => 403 => 407 => 411 => 415 => 416 => 412 => 408 => 404. Tal como se puede imaginar, estos son solo unos pocos de los muchos órdenes que podrían ser utilizados. Además, cualquiera de los órdenes descritos pudiera ser del más bajo al más alto o del más alto al más bajo.
Después que la unidad de filtro 349 ha determinado el mapeo de filtros a combinaciones de rango, la unidad de filtro 349 puede identificar agrupamientos de combinaciones de rango que son mapeados al mismo filtro. Utilizando la figura 4A como un ejemplo, los agrupamientos serian de la siguiente forma.
Grupo Filtro 1: Combinaciones 413, 414, y 415 Grupo Filtro 2: Combinaciones 409, 410 Grupo Filtro 3: Combinaciones 411 y 412 Grupo Filtro 4 : Combinación 416 Grupo Filtro 5: Combinaciones 401 y 405 Grupo Filtro 6: Combinaciones 402 y 406 Grupo Filtro 7: Combinaciones 403 y 407 Grupo Filtro 8: Combinaciones 404 y 408 La unidad de filtro 349 entonces puede asignar a cada grupo una ID de grupo, y la ID de grupo puede representar un valor secuencial. Las IDs de grupo pueden ser asignadas a los grupos con base en los valores secuenciales asociados con las combinaciones que comprenden el grupo. Por ejemplo, el grupo que tiene la combinación con el valor secuencial asociado más bajo basado en las IDs de combinación, pudiera tener asignada la ID de grupo con el valor secuencial más bajo. De los grupos restantes, el grupo restante que tiene la combinación con el valor secuencial asociado más bajo puede tener asignada la ID de grupo con el siguiente valor secuencial más bajo. Este proceso se puede repetir hasta que a todos los grupos se les ha asignado una ID de grupo. En algunas implementaciones, las IDs de grupo pudieran ser asignadas con base en las combinaciones con los valores secuenciales asociados más altos en lugar de los más bajos. En algunas implementaciones, el grupo que tiene la combinación con el valor secuencial asociado más bajo basado en las IDs de combinación, pudieran tener asignada la ID de grupo con el valor secuencial más alto, o viceversa.
Una vez más, utilizando la figura 4A como un ejemplo, y asumiendo que a las combinaciones 401-416 se les asignan las IDs de combinación con valores secuenciales en un orden de izquierda-a-derecha, superior-a-inferior, entonces la unidad de filtro 349 puede asignar IDs de grupo a los grupos de filtro, tal como se muestra a continuación en la tabla 1.
TABLA 1 En el ejemplo de la figura 4A, que se muestra en la Tabla 1, la unidad de filtro 349 asigna al Grupo Filtro 5 la ID de grupo con el valor secuencial más bajo debido a que el Grupo Filtro 5 incluye la combinación de rango con el valor secuencial más bajo (es decir, combinación 401) . La unidad de filtro 349 asigna al Grupo Filtro 6 la ID de grupo con el segundo valor secuencial más bajo debido a que, de los grupos de filtro restantes (es decir, todos los grupos excluyendo el Grupo Filtro 5) , el Grupo Filtro 6 incluye la combinación de rango con el segundo valor secuencial más bajo (es decir, la combinación 402). La unidad de filtro 349 asigna al Grupo Filtro 7 la ID de grupo con el tercer valor secuencial más bajo debido a que, de los grupos de filtro restantes (es decir, todos los grupos de filtro excluyendo el Grupo Filtro 5 y el Grupo Filtro 6) , el Grupo Filtro 7 incluye la combinación de rango con el valor secuencial más bajo (es decir, la combinación 403) . La unidad de filtro 349 asigna al Grupo Filtro 8 la ID de grupo con el cuarto valor secuencial más bajo debido a que, de los grupos de filtro restantes (es decir, todos los grupos de filtro excluyendo el Grupo Filtro 5, el Grupo Filtro 6 y el Grupo Filtro 7), el Grupo Filtro 8 incluye la combinación de rango con el cuarto valor secuencial más bajo (combinación 404). La unidad de filtro 349 asigna al. Grupo Filtro 2 la ID de grupo con el quinto valor secuencial más bajo debido a que, de los grupos de filtro restantes (es decir, excluyendo el Grupo Filtro 5, el Grupo Filtro 6, el Grupo Filtro 7, y el Grupo Filtro 8), el Grupo Filtro 2 incluye la combinación de rango con el valor secuencial más bajo (combinación 409) . La unidad de filtro 349 asigna al Grupo Filtro 3 la ID de grupo con el sexto valor secuencial más bajo debido a que, de los grupos de filtro restantes (es decir, excluyendo el Grupo Filtro 5, el Grupo Filtro 6, el Grupo Filtro 7, el Grupo Filtro 8, y el Grupo Filtro 2), el Grupo Filtro 3 incluye la combinación de rango con el valor secuencial más bajo (combinación 411) . La unidad de filtro 349 asigna al Grupo Filtro 1 la ID de grupo con el séptimo valor secuencial más bajo debido a que, de los grupos de filtro restantes (es decir, excluyendo el Grupo Filtro 5, el Grupo Filtro 6, el Grupo Filtro 7, el Grupo Filtro 8, el Grupo Filtro 2, y el Grupo Filtro 3), el Grupo Filtro 1 incluye la combinación de rango con el valor secuencial más bajo (combinación 413) . Finalmente, la unidad de filtro 349 asigna al Grupo Filtro 4, el grupo de filtro restante final, la ID de grupo con el valor secuencial más alto (8 en este ejemplo particular) .
Con base en las IDs de grupo de filtro, la unidad de filtro 349 determina un orden en el cual señalizar los coeficientes de filtro de un filtro. Una vez más, utilizando el ejemplo de la figura 4A y la Tabla 1, la unidad de filtro 349 primero señaliza el coeficiente para el Filtro 5, después el coeficiente para el Filtro 6, después el coeficiente para el Filtro 7, después el coeficiente para el Filtro 8, después el coeficiente para el Filtro 2, después el coeficiente para el Filtro 3, después el coeficiente para el Filtro 1, y finalmente el coeficiente para el Filtro 4. Utilizando técnicas de codificación diferencial, tal como se describe en esta divulgación, la unidad de filtro 349 puede codificar los coeficientes para el Filtro 6 como información de diferencia con relación a los coeficientes de filtro del Filtro 5, puede codificar los coeficientes para el Filtro 7 como información de diferencia con relación a los coeficientes de filtro para el Filtro 6, y asi sucesivamente, con base en el ordenamiento secuencial de las IDs de Grupo.
El mapeo de dos o más métricas para entradas a filtros puede ser implementado en múltiples formas. Por ejemplo, en algunas implementaciones cada entrada pudiera tener un conjunto de filtros único mientras que en algunas implementaciones las entradas comparten un conjunto de filtros común. De manera adicional, en algunas implementaciones, dos o más métricas para cada entrada pudieran ser utilizadas para identificar un filtro particular para cada entrada. No obstante, en otras implementaciones dos o más métricas para una sola entrada pudieran ser utilizadas para identificar filtros para todas las entradas. En otras implementaciones todavía, dos o más métricas para una primera entrada pudieran ser utilizadas para identificar un filtro para una segunda entrada diferente.
De acuerdo con esta divulgación, la unidad de filtro 349 puede ejecutar técnicas de codificación con respecto a la información de filtro que puede reducir la cantidad de datos necesarios para codificar y transmitir información de filtro desde el codificador 350 a otro dispositivo. Una vez más, para cada cuadro o porción, 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 pixeles de las CUs para ese cuadro o porción. La unidad de filtro 349 aplica los coeficientes de filtro a fin de filtrar bloques de video de cuadros de video reconstruidos almacenados en la memoria 334, los cuales pueden ser utilizados para codificación predictiva consistente con la filtración en-bucle. La unidad de filtro 349 puede codificar los coeficientes de filtro como información de filtro, la cual es reenviada a la unidad de codificación por entropía 346 para inclusión en la corriente de bits codificada.
Adicionalmente, las técnicas de esta divulgación pueden explotar 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 pixeles de las CUs de otro cuadro o porción. El mismo tipo de filtro puede ser aplicado para diferentes cuadros o porciones (por ejemplo, el mismo soporte de filtro) , pero los filtros pueden ser diferentes en términos de valores de coeficiente de filtro asociados con los diferentes índices del soporte de filtro. Por consiguiente, a fin de reducir la cantidad de datos necesarios para transmitir dichos coeficientes de filtro, la unidad de filtro 349 puede codificar de manera predictiva uno o más coeficientes de filtro que van a ser utilizados para filtración con base en los coeficientes de filtro de otra CU, explotando potencialmente similitudes entre los coeficientes de filtro. No obstante, en algunos casos puede ser más deseable codificar los coeficientes de filtro directamente, por ejemplo, sin utilizar alguna predicción. Diversas técnicas, tales como las técnicas que explotan el uso de una métrica de actividad para definir cuándo codificar los coeficientes de filtro utilizando técnicas de codificación predictiva y cuándo codificar los coeficientes de filtro directamente sin alguna codificación predictiva, pueden ser utilizadas para comunicar de manera eficiente coeficientes de filtro a un decodificador . De manera adicional, también se puede imponer simetría de manera que un subconjunto de coeficientes (por ejemplo, 5, -2, 10) conocidos por el decodificador pueda ser utilizado para definir el conjunto completo de coeficientes (por ejemplo, 5, -2, 10, 10, -2, 5) . 5 La simetría puede ser impuesta en ambos escenarios de codificación directa y predictiva.
Tal como se describió antes, el codificador de video 350 representa un ejemplo de un codificador de video configurado para determinar una primera métrica para un grupo de píxeles 10 dentro de un bloque de píxeles, determinar una segunda métrica para el grupo de píxeles, determinar un filtro con base en la primera métrica y la segunda métrica, y generar una imagen filtrada mediante la aplicación del filtro al grupo de píxeles. El codificador de video 350 también 15 representa un ejemplo de un codificador de video configurado para determinar una primera métrica para un bloque de píxeles, en donde la primera métrica es determinada con base en una comparación de un subconjunto de los píxeles en el bloque a otros píxeles en el bloque; determinar una segunda 20 métrica para el bloque de píxeles; determinar un filtro con' base en la primera métrica y la segunda métrica; y, generar una imagen filtrada mediante la aplicación del filtro al bloque de píxeles.
Tal como se describió antes, el codificador de video 350 también representa un ejemplo de un codificador de video configurado para determinar un mapeo de combinaciones de rango a filtros, en donde una combinación de rango comprende un rango para una primera métrica y un rango para una segunda métrica, en donde cada combinación de rango tiene una identificación de combinación de rango única (ID) , en donde cada ID de combinación de rango única corresponde a un valor secuencial para una combinación de rango; asignar IDs de grupo únicas a grupos de combinaciones de rango con base en los valores secuenciales para las combinaciones de rango, en donde cada ID de grupo única corresponde a un valor secuencial para un grupo; y, codificar conjuntos de coeficientes de filtro correspondientes para los filtros con base en las IDs de grupo únicas. El codificador de video 350 puede codificar los conjuntos de coeficientes de filtro señalizando los conjuntos de coeficientes de filtro en una corriente de bits codificada en un orden que es seleccionado con base en los valores secuenciales de las IDs de grupo únicas. El codificador de video 350 puede señalizar los conjuntos de coeficientes de filtro utilizando técnicas de codificación diferencial.
Tal como se describió antes, el codificador de video 350 también representa un ejemplo de un codificador de video configurado para determinar un mapeo de combinaciones de rango a filtros, en donde una combinación de rango comprende un rango de valores para una primer métrica y un rango de valores para una segunda métrica; generar una primera palabra código si una combinación de rango actual es mapeada al mismo filtro que una combinación de rango previa que comprende el mismo rango de valores para la primera métrica; generar una segunda palabra código si una combinación de rango actual es mapeada al mismo filtro que una combinación de rango previa que comprende el mismo rango de valores para la segunda métrica; y, generar una tercera palabra código si la combinación de rango actual es mapeada a un filtro diferente que la combinación de rango previa que comprende el mismo rango de valores para la primera métrica y la combinación de rango previa que comprende el mismo rango de valores para la segunda métrica. El codificador de video 350 también representa un ejemplo de un codificador de video configurado para determinar un mapeo de combinaciones de rango a filtros, en donde una combinación de rango comprende un rango para una primer métrica y un rango para una segunda métrica; generar una primera palabra código si una combinación de rango actual es mapeada al mismo filtro que una combinación de rango previa; y generar una segunda palabra código si la combinación de rango actual es mapeada a un filtro diferente que la combinación de rango previa, en donde la segunda palabra código identifica un filtro mapeado a la combinación de rango actual.
La figura 5 es un diagrama en bloques que ilustra un ejemplo de un decodificador de video 560, el cual decodifica una secuencia de video que es codificada en la manera aquí descrita. La secuencia de video recibida puede comprender un conjunto codificado de cuadros de imagen, un conjunto de porciones de cuadro, un grupo de imágenes comúnmente codificadas (GOPs) , o una amplia, variedad de tipos de series de bloques de video que incluyen bloques de video codificados y sintaxis para definir cómo decodificar dichos bloques de video .
El decodificador de video 560 incluye una unidad de decodificación por entropía 552, la cual ejecuta la función de decodificación recíproca de la codificación ejecutada por la unidad de codificación por entropía 346 de la figura 3. En particular, la unidad de decodificación por entropía 552 puede realizar decodificación CAVLC o CABAC, o algún otro tipo de decodificación por entropía utilizada por el codificador de video 350. Los bloques de video decodificados por entropía en un formato serializado de una dimensión pueden ser escaneados a la inversa para convertir uno o más vectores de una dimensión de coeficientes de regreso a un formato de bloque bidimensional . El número y tamaño de vectores, así como el orden de escaneo definido para los bloques de video pueden definir la manera en que el bloque bidimensional es reconstruido. La sintaxis de predicción decodificada por entropía puede ser enviada desde la unidad de decodificación por entropía 552 al módulo de predicción 554, y la información de filtro decodificada por entropía puede ser enviada desde la unidad de decodificación por entropía 552 a la unidad de filtro 559.
El decodificador de video 560 también incluye un módulo de predicción 554, una unidad de cuantificación inversa 556, una unidad de transformada inversa 558, una memoria y un sumador 564. Además, el decodificador de video 560 también incluye un filtro de desbloqueo 557 que filtra la salida del sumador 564. Consistente con esta divulgación, la unidad de filtro 559 puede recibir información de filtro decodificada por entropía que incluye uno o más filtros que se van a aplicar a una o más entradas. Aunque no se muestra" en la figura 5, el filtro de desbloqueo 557 también puede recibir información de filtro decodificada por entropía que incluye uno o más filtros que se van a aplicar.
Los filtros aplicados por la unidad de filtro 559 pueden ser definidos por conjuntos de coeficientes de filtro. La unidad de filtro 559 se puede configurar para generar los conjuntos de coeficientes de filtro con base en la información de filtro recibida desde la unidad de decodificación por entropía 552. La información de filtro puede incluir. sintaxis de descripción de filtro que identifica un número máximo de filtros en un conjunto de filtros y/o una forma de filtros en un conjunto de filtros, por ejemplo. La sintaxis de descripción de filtro puede ser incluida en un encabezado de una serie de bloques de video, por ejemplo, un encabezado de LCU, un encabezado de cuadro, un encabezado de porción, un encabezado de GOP, un encabezado de secuencia, o similar. En otros ejemplos, la sintaxis de descripción de filtro pudiera ser incluida en una nota de pie u otra estructura de datos. Con base en la sintaxis de descripción de filtro, la unidad de filtro 559 puede reconstruir el conjunto de filtros utilizados en el codificador. Con base en la sintaxis de descripción de filtro, la unidad de filtro 559 puede reconstruir el conjunto de filtros utilizados en el codificador.
La información de filtro también puede incluir sintaxis de señalización adicional que señaliza al decodificador la manera de la codificación utilizada para cualquier conjunto determinado de coeficientes. En algunas implementaciones, la información de filtro puede también incluir, por ejemplo, rangos para dos o más métricas para las cuales se debiera utilizar cualquier conjunto determinado de coeficientes.
Siguiendo la decodificación de los filtros, la unidad de filtro 559 puede filtrar los valores de pixel de bloques de video decodificados con base en uno o más conjuntos de coeficientes de filtro y la sintaxis de señalización que incluye los rangos para los cuales se debieran utilizar los diferentes conjuntos de coeficientes de filtro.
La unidad de filtro 559 puede recibir en la corriente de bits uno o más elementos de sintaxis indicando un conjunto de filtros para cada cuadro o porción asi como un mapeo de filtros a las dos o más métricas. Por ejemplo, si un codificador utiliza el mapeo de rangos para métricas para los filtros mostrados en la figura 4A, entonces el codificador señalizará este mapeo o transmitirá datos para permitir que la unidad de filtro 559 reconstruya este mapeo. Sin considerar si este mapeo es señalizado o no de manera explícita, la unidad de filtro 559 puede mantener el mismo mapeo de filtros a combinaciones de rangos tal como son utilizadas por el codificador.
Tal como se mencionó anteriormente, la unidad de filtro 559 genera un mapeo basado en la información de filtro señalizada en la corriente de bits. Con base en este mapeo, la unidad de filtro 559 puede determinar grupos y asignar IDs de grupo a los grupos en la misma manera descrita anteriormente en relación a la unidad de filtro 349.
Utilizando estas IDs de grupo, la unidad de filtro 559 puede asociar coeficientes de filtro recibidos.
Para cada CU dentro del cuadro o porción, la unidad de filtro 559 puede calcular una o más métricas asociadas con los pixeles decodificados de una CU para múltiples entradas (es decir, PI, El, pRI, y RI) para determinar cuáles filtros de los conjuntos aplicar a cada entrada. De manera alternativa, la unidad de filtro 559 puede calcular una o más métricas para una sola entrada, tal como pRI o RI. La unidad de filtro 559 determina cuál filtro aplicar con base en las métricas determinadas para un pixel o grupo de pixeles particular. Utilizando un valor del Laplaciano de suma modificada y dirección como ejemplos para la Métrica 1 y la Métrica 2 y utilizando los mapeos que se muestran en la figura 4A como un ejemplo, si la unidad de filtro 559 determina que un pixel o grupo de pixeles tiene un valor del Laplaciano de suma modificada en el rango 1-2 y una dirección correspondiente al rango 2-3, entonces la unidad de filtro 559 puede aplicar el Filtro 2 a ese pixel o grupo de pixeles. Si la unidad de filtro 559 determina que un pixel o grupo de pixeles tienen un valor del Laplaciano de suma modificada en el Rango 1-4 y una dirección correspondiente al Rango 2-2, entonces la unidad de filtro 559 puede aplicar el Filtro 6 a ese pixel o grupo de pixeles, y asi sucesivamente. El filtro generalmente puede asumir cualquier tipo de forma o arreglo de soporte de filtro. El soporte de filtro se refiere a la forma del filtro con respecto a un pixel determinado que está siendo filtrado, y los coeficientes de filtro pueden definir la ponderación aplicada a valores de pixel vecinos de acuerdo con el soporte de filtro. De acuerdo con las técnicas de la presente divulgación, los datos de sintaxis se pueden incluir en la corriente de bits para señalizar a otro decodificador la manera en que los filtros fueron codificados (por ejemplo, la manera en que los coeficientes de filtro fueron codificados), asi como los rangos de la métrica de actividad para la cual se debieran utilizar los diferentes filtros.
Para cada CU dentro del cuadro o porción, la unidad de filtro 559 puede calcular una o más métricas asociadas con los pixeles decodificados de una CU para múltiples entradas (es decir, PI, El, pRI, y RI) a fin de determinar cuáles filtros de los conjuntos aplicar a cada entrada. De manera alternativa, la unidad de filtro 559 puede calcular una o más métricas para una sola entrada, tal como pRI o RI . La unidad de filtro 559 determina cuál filtro aplicar con base en las métricas determinadas para un pixel o grupo de pixeles particular. Utilizando un valor del Laplaciano de suma modificada y dirección como ejemplos para la Métrica 1 y la Métrica 2 y utilizando los mapeos mostrados en la figura 4A como un ejemplo, si la unidad de filtro 559 determina que un pixel o grupo de pixeles tiene un valor del Laplaciano de suma modificada en el Rango 1-2 y una dirección correspondiente al Rango 2-3,· entonces la unidad de filtro 559 puede aplicar el Filtro 2 a ese pixel o grupo de pixeles. Si la unidad de filtro 559 determina que un pixel o grupo de pixeles tiene un valor del Laplaciano de suma modificada en el Rango 1-4 y una dirección correspondiente al Rango 2-2, entonces la unidad de filtro 559 puede aplicar el Filtro 6 a ese pixel o grupo de pixeles, y asi sucesivamente. El filtro generalmente puede asumir cualquier tipo de forma o arreglo de soporte de filtro. El soporte de filtro se refiere a la forma del filtro con respecto a un pixel determinado que está siendo filtrado, y los coeficientes de filtro pueden definir la ponderación aplicada a valores de pixel vecinos de acuerdo con el soporte de filtro. De acuerdo con las técnicas de la presente divulgación, los datos de sintaxis pueden ser incluidos en la corriente de bits para señalizar al decodificador la manera en que los filtros fueron codificados (por ejemplo, la manera en que los coeficientes de filtro fueron codificados), asi como los rangos de la métrica de actividad para la cual se debieran utilizar los diferentes filtros .
El módulo de predicción 554 recibe sintaxis de predicción (tal como vectores de movimiento) desde la unidad de decodificación por entropía 552. Utilizando la sintaxis de predicción, el módulo de predicción 554 genera los bloques de predicción que fueron utilizados para codificar bloques de video. La unidad de cuantificación inversa 556 ejecuta cuantificación inversa, y la unidad de transformada inversa 558 ejecuta transformadas inversas para cambiar los coeficientes de los bloques de video residuales de regreso al dominio de píxel. El sumador 564 combina cada bloque de predicción con la salida del bloque residual correspondiente a través de la unidad de transformada inversa 558 a fin de reconstruir el bloque de video.
La unidad de filtro 559 genera los coeficientes de filtro que se van a aplicar para cada entrada de una CU, y después aplica dichos coeficientes de filtro a fin de filtrar los bloques de video reconstruidos de esa CU. La filtración, por ejemplo, puede comprender filtración de desbloqueo adicional que suaviza los bordes y/o elimina artefactos asociados con los bloques de video, realiza una filtración para quitar el ruido a fin de reducir el ruido de cuantificación, o cualquier otro tipo de filtración que pueda mejorar la calidad de la codificación. Los bloques de video filtrados son acumulados en la memoria 562 para reconstruir los cuadros decodificados (u otras unidades decodificables ) de información de video. Las unidades decodificadas pueden ser emitidas desde el codificador de video 560 para presentación a un usuario, pero también se pueden almacenar para uso en decodificación predictiva posterior.
En el campo de la codificación de video, es común aplicar filtración en el codificador y decodificador a fin de mejorar la calidad de una señal de video decodificada . La filtración se puede aplicar a través de un post-filtro, en cuyo caso el cuadro filtrado no es utilizado para predicción de cuadros futuros'. Alternativamente, la filtración puede ser aplicada "en-bucle", en cuyo caso el cuadro filtrado puede ser utilizado para predecir cuadros futuros. Se puede designar un filtro deseable reduciendo al mínimo el error entre la señal original y la señal filtrada decodificada . Típicamente, dicha filtración ha sido basada en la aplicación de uno o más filtros a una imagen reconstruida. Por ejemplo, un filtro de desbloqueo pudiera ser aplicado a una imagen reconstruida antes que la imagen sea almacenada en memoria, o un filtro de desbloqueo y un filtro adicional pudieran ser aplicados a una imagen reconstruida antes que la imagen sea almacenada en memoria.
En una manera similar a la cuantificación de coeficientes de transformada, los coeficientes del filtro h(k,l), donde k = -?,.,.,?, y 1 - -L,...,L también pueden ser cuantificados . K y L pueden representar valores enteros. Los coeficientes de filtro h(k,l) pueden ser cuantificados como: f{k,l)= redondeo {normFact ¦ h{k,l )) donde normFact es un factor de normalización y redondeo es la operación de redondeo ejecutada para lograr la cuantificación a una profundidad de bit deseada. La cuantificación de coeficientes de filtro puede ser ejecutada por la unidad de filtro 349 de la figura 3 durante la codificación, y la descuantificación o cuantificación inversa puede ser ejecutada en coeficientes de filtro decodificados por la unidad de filtro 559 de la figura 5. El filtro h{k,l) está destinado a representar de manera genérica cualquier filtro. Por ejemplo, el filtro h(k,l) podría ser aplicado a cualquiera de las múltiples entradas. En algunos casos, múltiples entradas asociadas con un bloque de video utilizarán diferentes filtros, en cuyo caso múltiples filtros similares a h(k,l) pueden ser cuantificados y descuantificados como se describió antes.
Los coeficientes de filtro cuantificados son codificados y enviados desde el dispositivo fuente asociado con el codificador 350 a un dispositivo destino asociado con el decodificador 560 como parte de una corriente de bits codificada. En el ejemplo anterior, el valor de normFact generalmente es igual a 2n aunque se podrían utilizar otros valores. Valores más grandes de normFact conducen a una cuantificación más precisa de manera que los coeficientes de filtro cuantificados f{k,l) proporcionan mejor rendimiento. No obstante, valores más grandes de normFact pueden producir coeficientes f(k,l) que requieren más bits para señalizar al decodificador .
En el decodificador 560, los coeficientes de filtro decodificados f(k,l) pueden ser aplicados a la entrada apropiada. Por ejemplo, si los coeficientes de filtro decodificados van a ser aplicados a RI, los coeficientes de filtro pueden ser aplicados a la imagen reconstruida post-desbloqueada RI(i,j), donde i=0,...,M y j=0,...,N de la siguiente forma: Las variables M, N, K y L pueden representar enteros. K y L pueden definir un bloque de pixeles que abarca dos dimensiones desde -K a K y desde -L a L. Los filtros aplicados a otras entradas pueden ser aplicados en una manera análoga .
Las técnicas de esta divulgación pueden mejorar el rendimiento de un post-filtro o filtro en-bucle, y también pueden reducir el número de bits necesarios para señalizar los coeficientes de filtro f{k,l). En algunos casos, un número de diferentes post-filtros o filtros en-bucle son señalizados al decodificador para cada serie de bloque de video, por ejemplo, para cada cuadro, porción, porción de un cuadro, grupo de cuadros (GOP) , o similar. Para cada filtro, información adicional es incluida en la corriente de bits para identificar las CUs, macrobloques y/o pixeles para los cuales se debiera aplicar un filtro determinado.
Los cuadros pueden ser identificados por número de cuadro y/o tipo de cuadro (por ejemplo, I-cuadros, P-cuadros o B-cuadros) . Los I-cuadros se refieren a intra-cuadros que son intra-predichos . Los P-cuadros se refieren a cuadros predictivos que tienen bloques de video predichos con base en una lista de datos (por ejemplo, un cuadro previo) . Los B-cuadros se refieren a cuadros predictivos bidireccionales que son predichos con base en dos listas de datos (por ejemplo, un cuadro previo y posterior) . Los macrobloques pueden ser identificados enlistando tipos de macrobloque y/o rango de valores de parámetro de cuantificación (QP) utilizados para reconstruir el macrobloque.
Los coeficientes de filtro f(k,l) , para cualquier entrada, pueden ser codificados utilizando predicción a partir de coeficientes señalizados para CUs previas. Para cada entrada de una CU m (por ejemplo, cada cuadro, porción o GOP) , el codificador puede codificar y transmitir un conjunto de filtros: g™ , en donde i=0,..., M-l Para cada filtro, la corriente de bits también puede ser codificada para identificar la combinación de rangos para dos o más métricas para las cuales se debiera utilizar el filtro.
Los coeficientes de filtro pueden ser predichos utilizando coeficientes de filtro reconstruidos utilizados en una CU previa. Los coeficientes de filtro previos pueden ser representados como: " donde i=0,...,N-l, En este caso, el número de CU n se puede utilizar para identificar uno o más filtros utilizados para la predicción de los filtros actuales, y el número n puede ser enviado al decodificador como parte de la corriente de bits codificada. Además, la información puede ser codificada y transmitida al decodificador para identificar combinaciones de rangos para dos o más métricas para las cuales se utiliza la codificación predictiva .
La amplitud de los coeficientes de filtro g(k,l) depende de los valores k y 1. Por lo general, el coeficiente con la amplitud más grande es el coeficiente g(0,0). Los otos coeficientes que se espera tengan amplitudes grandes son los coeficientes para los cuales el valor A- o 1 es igual a 0. Este fenómeno puede ser utilizado para reducir adicionalmente la cantidad de bits necesarios para señalizar los coeficientes. Los valores de índice k y 1 pueden definir ubicaciones dentro de un soporte de filtro conocido.
Los coeficientes: g?(k,l), i=0,...,M-l para cada cuadro m puede ser codificado utilizando códigos parametrizados de longitud variable tal con los códigos Golomb o exp-Golomb definidos de acuerdo con un parámetro p. Al cambiar el valor del parámetro p que define los códigos parametrizados de longitud variable, estos códigos pueden ser utilizados para representar de manera eficiente el amplio rango de distribuciones fuente. La distribución de coeficientes g(k, 1) (es decir, su probabilidad de tener valores grandes o pequeños) depende de los valores de Je y 1. Por lo tanto, para incrementar la eficiencia de la codificación, para cada cuadro m, el valor del parámetro p es transmitido para cada par (k, 1) . El parámetro p puede ser utilizado para codificación parametrizada de longitud variable cuando los coeficientes de codificación: g'"(k,l) donde k = -K, ... , K, 1 = -L, ... , L.
Tal como se describió antes, el decodificador de video 560 representa un ejemplo de un decodificador de video configurado para determinar una primera métrica para un grupo de pixeles dentro de un bloque de pixeles, determinar una segunda métrica para el grupo de pixeles, determinar un filtro con base en la primera métrica y la segunda métrica, y generar una imagen filtrada mediante la aplicación del filtro al grupo de pixeles. El decodificador de video 560 también representa un ejemplo de un codificador de video configurado para determinar una primera métrica para un bloque de pixeles, en donde la primera métrica es determinada con base en una comparación de un subconjunto de los pixeles en el bloque con otros pixeles en el bloque; determinar una segunda métrica para el bloque de pixeles; determinar un filtro con base en la primera métrica y la segunda métrica; y, generar una imagen filtrada mediante la aplicación del filtro al bloque de pixeles.
Tal como se describió anteriormente, el decodificador de video 560 también representa un ejemplo de un decodificador de video configurado para determinar un mapeo de combinaciones de rango a filtros, en donde una combinación de rango comprende un rango para una primera métrica y un rango para una segunda métrica, en donde cada combinación de rango tiene una identificación de combinación de rango única (ID) , en donde cada ID de combinación de rango única corresponde a un valor secuencial para una combinación de rango; asignar IDs de grupo únicas a grupos de combinaciones de rango con base en los valores secuenciales para las combinaciones de rango, en donde cada ID de grupo única corresponde a un valor secuencial para un . grupo; y, codificar conjuntos de coeficientes de filtro correspondientes para los filtros con base en las IDs de grupo únicas. El decodificador de video 560 puede codificar los conjuntos de coeficientes de filtro comprendido por la generación de los conjuntos de coeficientes de filtro con base en información recibida en una corriente de bits codificada. El decodificador de video 560 *puede generar los conjuntos de coeficientes de filtro utilizando técnicas de codificación diferencial.
El decodificador de video 560 también representa un ejemplo de un decodificador de video configurado para mapear una primera combinación de rango a un primer filtro, en donde la primera combinación de rango comprende un primer rango de valores para una primera métrica y un primer rango de valores para una segunda métrica; mapear una segunda combinación de rango a un segundo filtro, en donde la segunda combinación de rango comprende un segundo rango de valores para la primera métrica y un segundo rango de valores para la segunda métrica; mapear una combinación de rango actual a un filtro, en donde la combinación de rango actual comprende el primer rango de valores de la primera métrica y el segundo rango de valores para la segunda métrica. El mapeo de la combinación de rango actual al filtro puede incluir mapear la combinación de rango actual al primer filtro en respuesta a la recepción de una primera palabra código, en donde la primera palabra código indica que la combinación de rango actual es mapeada al mismo filtro que la primera combinación de rango; mapear la combinación de rango actual al segundo filtro en respuesta a la recepción de una segunda palabra código, en donde la segunda palabra código indica que la combinación de rango actual es mapeada al mismo filtro que la segunda combinación; y, mapear la combinación de rango actual a un tercer filtro en respuesta a la recepción de una tercera palabra código, en donde la tercera palabra código identifica ese tercer filtro. El decodificador de video 560 también representa un ejemplo de un decodificador de video configurado para generar un mapeo de combinaciones de rango a filtros, en donde una combinación de rango comprende un rango para una primera métrica y un rango para una segunda métrica; mapear una combinación de rango actual a un mismo filtro que una combinación de rango previa en respuesta a la recepción de una primera palabra código que señaliza que la combinación de rango actual es mapeada al mismo filtro que la combinación de rango previa; y mapear la combinación de rango actual a un filtro identificado por una segunda palabra código en respuesta a la recepción de la segunda palabra código señalizando que la combinación de rango actual es mapeada a un filtro diferente que la combinación de rango previa.
Tal como se ha mencionado previamente, se pueden utilizar varios tipos diferentes de métricas en conjunto con las técnicas de filtración multi-métricas descritas en esta divulgación. Algunas de estas métricas son métricas de actividad que cuantifican la actividad asociada con uno o más bloques de pixeles dentro de los datos de video. Las métricas de actividad pueden comprender métricas de varianza indicativas de la varianza de pixel dentro de un conjunto de pixeles. Tal como se describirá, algunas de estas métricas de actividad son especificas de la dirección. Por ejemplo, una métrica de actividad horizontal cuantifica la actividad a lo largo de un eje horizontal, una métrica de actividad vertical cuantifica la actividad a lo largo de un eje vertical, una métrica de actividad diagonal cuantifica la actividad a lo largo de un eje diagonal, y asi sucesivamente.
Algunas métricas de actividad no son especificas de la dirección. Por ejemplo, un valor del Laplaciano de suma modificada es una métrica de actividad basada en una ventana bidimensional de pixeles que rodea un pixel actual o grupo de pixeles actual. Para un pixel actual (i, j), un valor del Laplaciano de suma modificada se puede calcular de la siguiente forma: R(i + k-l,j + l)-R(i + k + l,j + l\ + \2R(i+k,j +l)-R(i+k,j +l-V)-R(i+k +l +l)\ (1) donde k representa un valor de una suma de valores de pixel de -K a K y 1 representa un valor de una suma de -L a L para una ventana bidimensional que abarca desde -K a K y -L a L, donde i y j representan coordenadas de pixel de los datos de pixel, RI(i,j) representa un valor de pixel determinado en las coordenadas i y j, y var(í,j) es la métrica de actividad (es decir, el valor del Laplaciano de suma modificada) .
Las técnicas de la presente divulgación también se pueden implementar utilizando métricas especificas de la dirección para la actividad horizontal, actividad vertical y actividad diagonal. Las ecuaciones 2 y 3 muestran ejemplos de la manera en que se puede calcular la actividad horizontal y la actividad vertical para un pixel actual (x, y) comparando un valor de pixel (Rec) , tal como intensidad, del pixel actual con un valor de pixel de pixeles vecinos.
Hor_act(x,y) = R (2*Rec [x] [y] -Rec [x+1] [y] -Rec [x-1 ] [y] ) (2) Ver_act(x,y) = R (2*Rec [x] [y] -Rec [x] [y+1] -Rec [x] [y+1] ) (3) Tal como se muestra mediante la ecuación 2, cuando se determina la actividad horizontal, el pixel actual (x,y) se puede comparar con un vecino a la izquierda (x-1, y) y un vecino a la derecha (x+l,y). Tal como se muestra en la ecuación 3, cuando se determina la actividad vertical, el pixel actual se puede comparar con un vecino superior (x,y+l) y un vecino inferior (x,y-l).
Las ecuaciones 4 y 5 muestran ejemplos de la manera en que se puede calcular la actividad diagonal para un pixel actual (x,y) comparando un valor de pixel (Rec) del pixel actual con valores de pixel de pixeles vecinos. 45deg_act (x,y) = R(2*Rec[x] [y]-Rec[x+l] [y+1] -Rec [x-1] [y-1] ) (4) 135deg_act (x,y) = R(2*Rec[x] [y] -Rec [x-1] [y+l]-Rec[x+l] [y-1] ) (5) Tal como se muestra mediante la ecuación 4, se puede calcular la actividad diagonal, por ejemplo, en la dirección del grado 45 comparando un pixel actual (x,y) con un vecino superior-derecha (x+1, y+1) y un vecino inferior-izquierda (x-1, y-1). Tal como se muestra en la ecuación 5, la actividad diagonal también puede estar en la dirección de 135 grados comparando un pixel actual (x,y) con un vecino izquierda-superior (x-1, y+1) y un vecino derecha-inferior (x+1, y-1) .
Las ecuaciones 2-5, anteriores, ilustran la manera en que se puede determinar la actividad horizontal, actividad vertical y actividad diagonal sobre una base pixel-por-pixel, pero en algunas implementaciones , la actividad horizontal, actividad vertical y actividad diagonal se pueden determinar sobre una base grupo-por-grupo, donde un grupo de pixeles es un bloque de pixeles 2x2, 4x4, o MxN. En dicha implementación, la actividad horizontal, por ejemplo, puede ser determinada comparando valores de pixel de un grupo actual con valores de pixel de un grupo a la izquierda y un grupo a la derecha, en una manera análoga a la ecuación 2; y, la actividad vertical se puede determinar comparando un grupo actual con un grupo superior y un grupo inferior, en una manera análoga a la ecuación 3. De igual forma, la actividad diagonal de 45 grados se puede determinar comparando un grupo actual de pixeles con un grupo vecino superior-derecha y un grupo vecino inferior-izguierda en una manera análoga a la ecuación 4, y la actividad diagonal de 135 grados se puede determinar comparando un grupo de pixeles actual con un grupo vecino superior-izquierda y un grupo vecino inferior-derecha, en una manera análoga a la ecuación 5.
En algunas implementaciones, la actividad horizontal, actividad vertical, actividad diagonal de 45 grados, y actividad diagonal de 135 grados se pueden determinar comparando un pixel actual o grupo de pixeles con pixeles vecinos o grupos de pixeles en únicamente una dirección. Por ejemplo, en lugar de determinar la actividad horizontal con base en la comparación de un pixel actual con un vecino a la izquierda y un vecino a la derecha, la actividad horizontal pudiera ser determinada con base en únicamente un vecino a la izquierda c > únicamente un vecino a la derecha. De manera adicional, en algunas implementaciones , la actividad horizontal, actividad vertical, actividad diagonal de 45 grados, y actividad diagonal de 135 grados se pueden determinar utilizando promedios o promedios ponderados de áreas de pixeles vecinos en lugar de pixeles vecinos sencillos o grupos de pixeles sencillos.
Los valores que resultan de las ecuaciones 2-5 se pueden dividir en un número finito de rangos, tal como 2, 4, 8 o cualquier otro número finito, y a cada rango se le pude asignar una identificación de rango. Haciendo referencia nuevamente a la figura 4A, por ejemplo, el Rango 1-1, el Rango 1-2, el Rango 2-1, etcétera son todos ejemplos de identificaciones de rango. Como un ejemplo, los valores de actividad horizontal se pueden dividir en cuatro rangos, y a los rangos se les pudieran asignar IDS de Rango 1-1, Rango 1-2, Rango 1-3 y Rango 1-4. Valores de umbral horizontales (es decir, ThHi,..., ThHP_i) pueden determinar en dónde comienzan y finalizan los rangos. La siguiente Tabla 2 muestra el caso genérico de la manera en que las IDs horizontales pudieran ser asignadas a los P rangos.
TABLA 2 Métrica de índice de actividad Utilizando el ejemplo de la Tabla 2, si un píxel actual tiene un valor de actividad horizontal mayor que ThHi pero menor que ThH2, entonces el píxel actual está en el Rango 2-2 para la métrica 2. Los píxeles actuales pueden ser asignados a rangos verticales con IDs verticales, rangos diagonales de 45 grados con IDs diagonales de 45 grados, y rangos diagonales de 135 grados con IDs diagonales de 135 grados, en una manera similar como se describió antes en la Tabla 2 para rangos horizontales y IDs horizontales.
Cualquiera de la actividad horizontal, actividad vertical, actividad diagonal de 45 grados y actividad diagonal de 135 grados puede ser utilizada como una métrica de acuerdo con las técnicas de filtración de filtro multi-métricas descritas en esta divulgación. Por ejemplo, haciendo referencia nuevamente a la figura 4A, la Métrica 1 pudiera ser una medida de la actividad vertical, y la Métrica 2 pudiera ser una medida de la actividad horizontal. En dicho ejemplo, una unidad de filtro, tal como la unidad de filtro 349 de la figura 4A o filtro 559 de la figura 5, puede determinar un filtro para un pixel o grupo de pixeles con base en la actividad horizontal del pixel o grupo de pixeles y la actividad vertical del pixel o grupo de pixeles. Por ejemplo, si un pixel actual tiene una métrica de actividad horizontal que cae en el Rango 2-3 y una métrica de actividad vertical que cae en el Rango 1-3, entonces la unidad de filtro filtra el pixel utilizando el Filtro 4. En una manera similar, las combinaciones de actividad diagonal de 45 grados y actividad diagonal de 135 grados, la actividad diagonal de 45 grados y la actividad horizontal, la actividad diagonal de 45 grados y la actividad vertical, la actividad diagonal de 135 grados y la actividad horizontal, o la actividad diagonal de 135 grados y la actividad vertical también pueden ser utilizadas por una unidad de filtro para seleccionar un filtro para un pixel o grupo de pixeles. En algunas implementaciones, tres o las cuatro de la actividad horizontal, actividad vertical, actividad diagonal de 45 grados y actividad diagonal de 135 grados pueden ser utilizadas por una unidad de filtro para seleccionar un filtro de un pixel o grupo de pixeles.
En las implementaciones antes descritas, la actividad horizontal, actividad vertical, actividad diagonal de 45 grados, y actividad diagonal de 135 grados todas pueden ser utilizadas como métricas, como la Métrica 1 y/o Métrica 2 , en la figura 4A, por ejemplo. No obstante, en algunas implementaciones la actividad horizontal, actividad vertical, actividad diagonal de 45 grados y actividad diagonal de 135 grados pudieran no ser métricas en si mismas, sino que más bien pueden ser utilizadas como determinaciones intermedias para determinar una métrica de dirección general. La métrica de dirección generalmente describe en cuál dirección (por ejemplo, ninguna dirección, horizontal, vertical, diagonal de 45 grados o diagonal de 135 grados) están cambiando más los pixeles .
En un ejemplo, utilizando únicamente la actividad horizontal y la actividad vertical como se describió en las ecuaciones 2 y 3, una dirección para un pixel pudiera ser determinada con base en las siguientes condiciones: Dirección l=horizontal, si Hor_actividad>kl*Ver_actividad Dirección 2=vertical, si Ver_actividad>k2*Hor_actividad Dirección 0=no dirección, de otra manera.
Las constantes kl y k2 pueden ser seleccionadas de manera que la dirección solamente se considera como la dirección 1 o la dirección 2 si la actividad horizontal es sustancialmente mayor que la actividad vertical o la actividad vertical es sustancialmente mayor que la actividad horizontal. Si la actividad horizontal y la actividad vertical son iguales o aproximadamente iguales, entonces la dirección es la dirección 0. La dirección 1 generalmente indica que los valores de pixel están cambiando más en la dirección horizontal que en la dirección vertical, y la dirección 2 indica que los valores de pixel están cambiando más en la dirección vertical que en la dirección horizontal. La dirección 0 indica que el cambio en los valores de pixel en la dirección horizontal es aproximadamente igual al cambio en los valores de pixel en la dirección vertical.
La métrica de dirección determinada (por ejemplo, dirección 0, dirección 1, dirección 2) puede ser utilizada como una métrica en las técnicas de filtración multi-métrica descritas en esta divulgación. Utilizando el ejemplo de la figura 4A una vez más, la Métrica 1 pudiera ser una métrica de varianza, tal como un valor del Laplaciano de suma modificada, mientras que la Métrica 2 pudiera ser una determinación de dirección tal como 'se describió antes. Como se describió en referencia a la figura 4A, cada una de la dirección 1, dirección 2 y dirección 0 puede estar asociada con un rango de Métrica 2 incluso cuando la dirección 1, dirección 2, y dirección 0 representan determinaciones finitas en lugar de un espectro de valores.
Además de utilizar solamente la actividad horizontal y la actividad vertical tal como se describió antes, técnicas de esta divulgación también incluyen el uso de la actividad diagonal de 45 grados y la actividad diagonal de 135 grados, tal como se describió en las ecuaciones 4 y 5, para determinar direcciones, con base en las siguientes condiciones: Dirección = 1, si 45deg_actividad > kl * 135deg_actividad Dirección = 2, si 135deg_actividad > k2 * 5deg_actividad Dirección = 0, de otra manera.
Determinaciones de dirección basadas en la actividad diagonal de 45 grados y la actividad diagonal de 135 grados pueden ser utilizadas como una métrica con otra métrica, tal como un valor del Laplaciano de suma modificada, como se describió antes .
Adicionalmente, también se puede determinar una métrica de dirección con base en las siguientes condiciones: Dirección = 1, si 45deg_actividad > kl*135deg_ actividad, k2* Hor_actividad, Y k3* Ver_ actividad Dirección = 2, si 135deg_actividad > > k4*45deg_ actividad, k5* Hor actividad, Y k6* Ver actividad si Hor_actividad > k7 * Ver_actividad, k8*135deg_actividad, Y k9*45deg_actividad si Ver_actividad > klO * Hor_actividad, kll*135deg_actividad, Y kl2*45deg_actividad de otra manera.
Tal como se describió antes, kl a kl2 son constantes seleccionadas para la determinación de cuán mayor que una de la actividad horizontal, actividad vertical, actividad de 45 grados y actividad de 135 grados necesita ser comparada con las otras a fin de que se seleccione una cierta dirección. Las determinaciones de dirección basadas en la actividad horizontal, actividad vertical, actividad diagonal de 45 grados y actividad diagonal de 135 grados pueden ser utilizadas como una métrica con otra métrica, tal como un valor del Laplaciano de suma modificada, tal como se describió antes.
Otra métrica que puede ser utilizada con las técnicas de esta divulgación incluye una métrica de borde. Una métrica de borde generalmente cuantifica la actividad que pudiera ser indicativa de la presencia de un borde en un bloque de pixeles. Un borde puede ocurrir, por ejemplo, en un bloque de pixeles si ese bloque de pixeles contiene el limite de un objeto dentro de una imagen. Un ejemplo de detección de borde incluye utilizar cuatro pixeles vecinos de un pixel actual (por ejemplo, izquierda, derecha, superior, inferior) o utilizar ocho pixeles vecinos del pixel actual (izquierda, derecha, superior, inferior, derecha superior, izquierda superior, derecha inferior, izquierda inferior) . De manera adicional, la detección de tipo de borde puede incluir el uso de dos pixeles vecinos, tal como superior e inferior, izquierda y derecha, izquierda superior y derecha inferior, o derecha superior e izquierda inferior.
El siguiente pseudo-código muestra ejemplos de la manera en que la información de borde puede ser calculada para un pixel actual (x,y) mediante la comparación de un valor de pixel (Rec) , tal como intensidad, del pixel actual con los valores de pixel de esos pixeles vecinos (es decir, 4/8 pixeles) .
Una variable TipoBorde es iniciada a 0. Cada vez que una afirmación es verdadera, la variable TipoBorde es ya sea incrementada por 1 (tal como se muestra en el pseudo-código por TipoBorde ++) o es disminuida por 1 (tal como se muestra en el pseudo-código por TipoBorde — ). Rec[x] [y] se refiere a valor de pixel, tal como la intensidad de pixel, del pixel ubicado en (x,y). El primer agrupamiento de afirmaciones "si" son para comparar el pixel actual con los vecinos superior, inferior, izquierda y derecha. El segundo agrupamiento de declaraciones "si" es para comparar el pixel actual con los vecinos superior-izquierda, superior-derecha, inferior-izquierda e inferior-derecha. Las técnicas de esta divulgación se pueden implementar utilizando cualquiera del grupo o ambos grupos.
TipoBorde = 0 ; s i ( Rec ? ] [y] > Rec x-l] [y]) TipoBorde ++, s i ( Rec . ] [y] < Rec [x-l] [y]) TipoBorde --, s i ( Rec . x ] [y] > Rec x+l] [y]) TipoBorde ++, s i ( Rec . X ] [y] < Rec ;x+l] [y]) TipoBorde --, s i ( Rec ' ? ] [y] > Rec ;x] [y-l]) TipoBorde ++, s i (Rec . x ] [y] < Rec ;x] [y-l]) TipoBorde --, s i ( Rec '. ] [y] > Rec ;x] [y+l]) TipoBorde ++ si ( Rec '. J [y] < Rec ;x] [y+l]) TipoBorde --, s i ( Rec ' ] [y] > Rec ;x-l] [y-l]) TipoBorde ++ s i ( Rec . ] [y] < Rec ;x-l] [y-1]) TipoBorde --- s i ( Rec . ] [y] > Rec ;x+l] fy-l]) TipoBorde ++ s i ( Rec ' x ] [y] < Rec [x+l] [y-l]) TipoBorde --- s i ( Rec '. x ] [y] > Rec ;x-l] [y+l]) TipoBorde ++ s i ( Rec '. X ] [y] < Rec ;x-l] [y+l]) TipoBorde --- s i ( Rec '. x ] [y] > Rec +l] [y+l]) TipoBorde ++ si (Rec[x] [y] < Rec [ + 1 ] [ y+ 1 ] ) TipoBorde --; Si un pixel actual es un máximo local, entonces el valor del pixel será mayor que todos sus vecinos y tendrá un tipo de borde de 4 si utiliza cuatro vecinos o un tipo de borde de 8 si utiliza ocho vecinos. Si un pixel actual es un mínimo local, entonces el valor del pixel será menor que todos sus vecinos y tendrá un tipo de borde de 4 si utiliza cuatro vecinos o un tipo de borde de -8 si utiliza ocho vecinos. Por lo tanto, utilizando el ejemplo, las técnicas descritas anteriormente para determinar un tipo de borde entre -4 y 4 o -8 y 8 pueden ser utilizadas en la determinación de un filtro. Los valores determinados para el tipo de borde (es decir, valores de -4 a 4 o valores de -8 a 8) pueden ser mapeados a rangos de una métrica, tal como la Métrica 1 o la Métrica 2 de la figura 4A. En algunas implementaciones, valores absolutos de la determinación de tipo de borde pudieran ser mapeados a rangos, de manera que un tipo de borde de -3 y 3, por ejemplo, se mapearia al mismo filtro.
Los cálculos de las diversas métricas descritas en esta divulgación solamente pretenden ser ejemplos y no pretenden ser exhaustivos. Por ejemplo, las métricas se pueden determinar utilizando ventanas o lineas de pixeles que incluyen más pixeles vecinos de los descritos en esta divulgación .
Adicionalmente, en algunas implementaciones, las métricas descritas en esta divulgación se pueden calcular utilizando sub-muestreo de los pixeles en una linea o ventana particular. Por ejemplo, para calcular una métrica de actividad de bloque para un bloque de pixeles 4x4, las métricas para la actividad y dirección se pueden calcular de la siguiente forma: • Métrica de dirección • Ver_act (i, j ) = abs (X(i,j)«l - X(i,j-1) - X(i,j+1) ) • Hor_act (i, ) = abs (X(i,j)«l - X(i-l,j) - X(i+l,j) ) ·?? = ?i=o,2 ?j=o,2 Hor_act(i,j) •VB= ?Í=O,2 ?j-o,2 Vert_act(i, j) • Dirección = O, 1 (HB > kl*VB) , 2 (VB > k2*HB) • Métrica de actividad • LB = HB + VB · 5 clases (O, 1, 2, 3, 4) • Métrica • Combinación de Actividad y Dirección (por ejemplo, 15 o 16 combinaciones como se explicó antes en el ejemplo de la figura 4B) Hor_act (i,j) generalmente se refiere a la actividad horizontal del pixel actual (i,j), y Vert_act (i, j ) generalmente se refiere a la actividad vertical del pixel actual (i,j). X(i,j) generalmente se refiere a un valor de pixel del pixel (i-, j). HB se refiere a la actividad horizontal del bloque 4x4, la cual en este ejemplo es determinada con base en una suma de actividad horizontal para los pixeles (0,0), (0,2), (2,0) y (2,2). VB se refiere a la actividad vertical del bloque 4x4, la cual en este ejemplo es determinada con base en una suma de la actividad vertical para los píxeles (0,0), (0,2), (2,0) y (2,2). "<<1" representa una operación de multiplicación por dos. Tal como se explicó anteriormente, con base en los valores de HB y VB se puede determinar una dirección. Utilizando el ejemplo anterior, si el valor de HB es más que k veces el valor de VB, entonces la dirección puede ser determinada como la dirección 1 (es decir horizontal) , la cual pudiera corresponder a una actividad más horizontal que la actividad vertical. Si el valor de VB es más que k veces el valor de HB, entonces la dirección puede ser determinada como la dirección 2 (es decir, vertical), la cual pudiera corresponder a más actividad vertical que actividad horizontal. De otra manera, la dirección puede ser determinada como la dirección 0 (es decir, no dirección) , lo que significa que ni la actividad horizontal ni la activación vertical es dominante. Las etiquetas para las diversas direcciones y las relaciones utilizadas para determinar las direcciones simplemente constituyen un ejemplo, ya que también se pueden utilizar otras etiquetas y relaciones.
La actividad (LB) para el bloque 4x4 puede ser determinada como una suma de la actividad horizontal y vertical. El valor de LB se puede clasificar en un rango, tal como se describió antes. Este ejemplo particular muestra cinco rangos aunque de manera similar se puede utilizar una cantidad mayor o menor de rangos. Con base en la combinación de actividad y dirección, se puede seleccionar un filtro para el bloque 4x4 de pixeles. Tal como se describió antes, se puede seleccionar un filtro con base en un mapeo bidimensional de actividad y dirección para filtros, tal como se describió en referencia a las figuras 4A y 4B, o la actividad y dirección se pueden combinar en una sola métrica, y esa sola métrica se puede utilizar para seleccionar un filtro .
La figura 6A representa un bloque de pixeles 4x4. Utilizando las técnicas de sub-muestreo antes descritas, únicamente se utilizan cuatro de los dieciséis pixeles. Los cuatro pixeles son el pixel (0,0), el cual es etiquetado como el pixel 601, el pixel (2,0) el cual es etiquetado como el pixel 602, el pixel (0,2) el cual es etiquetado como el pixel 603, y el pixel (2,2) el cual es etiquetado como el pixel 604. La actividad horizontal del pixel 601 (es decir, hor_act (0, 0) ) , por ejemplo, se determina con base en un pixel vecino izquierdo y un pixel vecino derecho. El pixel vecino derecho es etiquetado como el pixel 605. El pixel vecino izquierdo está ubicado en un bloque diferente al bloque 4x4 y no se muestra en la figura 6A. La actividad vertical del pixel 602 (es decir, ver_act (2, 0) ) , por ejemplo se determina con base en un pixel vecino superior y un pixel vecino inferior. El pixel vecino inferior es etiquetado como el pixel 606, y el pixel vecino superior está ubicado en un bloque diferente al bloque 4x4 y no se muestra en la figura 6A.
Generalmente utilizando las mismas técnicas antes descritas, una métrica de actividad de bloque también se puede calcular utilizando un subconjunto diferente de pixeles de la siguiente forma: • Métrica de dirección • Ver_act(i, j) = abs ( X(i,j)«l - X(i,j-1) - X(i,j+1) ) • Hor_act(i,j) = abs ( X(i,j)«l - X(i-l,j) - X(i+l,j) ) •HB = ?i-l(2 ?j=l,2 H(i,j) • VB = ?i=l,2 ?j=i,2 V(i, j) • Dirección = 0, 1 (H > kl*V) , 2 (V > k2*H) • Métrica de actividad • LB = HB + vB • 5 clases (0, 1, 2, 3, 4) • Métrica • Combinación de Actividad y Dirección (por ejemplo 15 o 16 combinaciones como se explicó antes en el ejemplo de la figura 4B) Este subconjunto diferente de pixeles para calcular HB y VB incluye los pixeles (1,1), (2,1), (1,2) y (2,2) mostrados en la figura 6B como los pixeles 611, 612, 613 y 614, respectivamente. Tal como se puede observar en la figura 6B, todos los pixeles vecinos superiores, pixeles vecinos inferiores, pixeles vecinos a la derecha y pixeles vecinos a la izquierda para los pixeles 611, 612, 613 y 614 están ubicados dentro del bloque 4x4. En el ejemplo de la figura 6B, los pixeles 611, 612, 613 y 614 están todos ubicados en el interior del bloque en oposición a estar ubicados en el limite del bloque. Los pixeles 601, 602, 603 y 605 en la figura 6A y los pixeles 621, 624, 625 y 628 en la figura 6C son ejemplos de pixeles ubicados en el limite del bloque. En otras implementaciones se pueden elegir subconjuntos de pixeles diferentes adicionales. Por ejemplo, los subconjuntos pueden ser seleccionados de manera que los pixeles vecinos superior e inferior para los pixeles del subconjunto están dentro del bloque 4x4, pero algunos pixeles vecinos a la izquierda y derecha están en bloques vecinos. Los subconjuntos también pueden ser seleccionados de manera que los pixeles vecinos a la izquierda y derecha para los pixeles de subconjunto están dentro del bloque 4x4, pero algunos pixeles vecinos superiores e inferiores están en bloques vecinos.
Generalmente utilizando las mismas técnicas antes descritas, también se puede calcular una métrica de actividad de bloque utilizando un subconjunto de ocho pixeles de la siguiente forma: • Métrica de Dirección • Ver_act (i, j ) = abs ( X(i,j)«l - X(i,j-1) - X(i,j+D ) • Hor_act (i, j ) = abs ( X(i,j)«l - X(i-l,j) - X(i+l,j) ) ·?? = ?i=0, 1,2, 3 ?j=l,2 H(i,j) • VB = ?i=0, 1, 2, 3 ?j=l,2 V(i, j) • Dirección = 0, 1 (H > kl*V) , 2 (V > k2*H) • Métrica de Actividad • LB = HB + VB • 5 clases (0, 1, 2, 3, 4) · Métrica • Combinación de Actividad y Dirección (por ejemplo, 15 o 16 combinaciones tal como se explicó antes en el ejemplo de la figura 4B) Este subconjunto diferente de ocho pixeles para calcular HB y VB incluye los pixeles (0,1), (1,1), (2,1), (3,1), (0,2), (1,2), (2,2) y (3,2), mostrados en la figura 6C como los pixeles 621, 622, 623 y 624, 625, 626, 627 y 628 respectivamente. Tal como se puede observar en la figura 6C, todos los pixeles vecinos superior y pixeles vecinos inferiores para los pixeles 621, 622, 623 y 624, 625, 626, 627 y 628 están ubicados dentro del bloque 4x4, aunque los pixeles 621 y 625 tienen, cada uno, pixeles vecinos a la izquierda en un bloque vecino a la izquierda y los pixeles 624 y 628 tienen, cada uno, pixeles vecinos a la derecha en un bloque vecino a la derecha. Esta selección particular de pixeles puede reducir la complejidad del codificador y/o decodificador evitando la necesidad de una memoria intermedia de linea para almacenar valores de pixel de los bloques vecinos superiores y/o inferiores. Debido al orden de escaneo de rastrillo de izquierda-a-derecha, arriba-a-abajo, las memoria intermedias de linea para valores de pixeles de bloques vecinos superiores e inferiores con frecuencia necesitan almacenar valores de pixel para toda la linea superior o inferior, lo cual en el caso del video 1080P, por ejemplo, pudieran ser 1920 pixeles. Las memorias intermedias de linea para los bloques vecinos a izquierda y derecha, no obstante, con frecuencia solo necesitan almacenar valores de pixel para una LCU o un par de LCUs, los cuales pudieran solamente ser 64 o 128 pixeles, por ejemplo. Por lo tanto, las memorias intermedias de linea para los valores de pixel de los bloques vecinos superiores e inferiores pudieran necesitar ser significativamente mayores que las memorias intermedias de linea utilizadas para los valores de pixel de los bloques vecinos a izquierda y derecha. La selección de los pixeles mostrados en la figura 6C pueden evitar el uso de las memorias intermedias de linea para los valores de pixel del bloque vecino superior e inferior, reduciendo asi la complejidad de la codificación.
Los ejemplos de las figuras 6A-6C son simplemente técnicas introducidas de esta divulgación. Se tiene contemplada que estas técnicas se pueden extender a bloques diferentes a solo 4x4 y que se puedan seleccionar diferentes sub-conjuntos de pixeles.
Cuando se calcula una métrica de actividad de bloque, en lugar de pixeles originales, pixeles cuantificados (es decir, X(i,j)»N) pueden ser utilizados para reducir la complejidad de las operaciones, tal como operaciones de adición. Adicionalmente, los cálculos pueden estar basados en la diferencia absoluta en lugar de estar basados en el Laplaciano. Por ejemplo, cuando se calculan Hor_act(i,j) o Ver_act (i, j ) , las diferencias absolutas pueden ser utilizadas en lugar de los valores del Laplaciano, de la siguiente forma : ¦ Métrica de Dirección ¦ Ver_act(i,j) = abs ( X(i,j) - X(i,j-1)) ¦ Hor_act(i,j) = abs ( X(i,j) - X(i-l,j)) " HB = ?i=0,l,2 ?j=0,l,2 H(i,j) " VB = ?i=0,l,2 ?j=0,l,2 V(i, j) ¦ Dirección = 0, 1 (H>2V) , 2 (V>2H) ¦ Métrica de Actividad ¦ LB = HB + VB ¦ 5 clases (0, 1, 2, 3, 4) ¦ Métrica ¦ Actividad + Dirección (por ejemplo, 15 o 16 combinaciones como se explicó antes en el ejemplo de la figura 4B) Esta divulgación ha descrito técnicas de sub-muestreo con referencia a un grupo limitado de métricas especificas. No obstante, se tiene contemplado que estas técnicas de sub-muestreo generalmente se apliquen a otras métricas, tal como las otras métricas analizadas en esta divulgación, que pueden ser utilizadas para propósitos de determinar un filtro. De manera adicional, aunque las técnicas de sub-inuestreo de esta divulgación se han descrito con referencia a los bloques de pixeles 4x4, las técnicas también se pueden aplicar a bloques de otros tamaños.
La figura 7 es un diagrama de flujo que ilustra una técnica de codificación de video consistente con esta divulgación. Las técnicas descritas en la figura 7 pueden ser ejecutadas por la unidad de filtro de un codificador de video o un decodificador de video, tal como la unidad de filtro 349 del codificador de video 350 o la unidad de filtro 559 del decodificador de video 560. La unidad de filtro determina una primera métrica para un grupo de pixeles dentro de un bloque de pixeles (710) . La primera métrica puede ser, por ejemplo, una métrica de actividad tal como un valor del Laplaciano de suma modificada, o la primera métrica puede ser una métrica de dirección. La primera métrica puede ser determinada, por ejemplo, con base en una comparación del conjunto de pixeles en el bloque, o con base en un subconjunto de los pixeles en el bloque, con otros pixeles en el bloque. La unidad de filtro además determina una segunda métrica para el bloque (720). La segunda métrica puede ser, por ejemplo, una métrica de dirección que sea determinada con base en la comparación de una medición de actividad horizontal con una medición de actividad vertical. Con base en la primera métrica y la segunda métrica, la unidad de filtro determina un filtro (730). La unidad de filtro genera una imagen filtrada mediante la aplicación del filtro al bloque (740) . Tal como se analizó antes, en algunas implementaciones , el bloque puede ser un bloque de pixeles 2x2, 4x4, 0 MxN, utilizado para determinar la primera métrica o la segunda métrica. En algunas implementaciones, la primera métrica puede ser una métrica de actividad horizontal mientras que la. segunda métrica es una métrica de actividad vertical, o la primera métrica puede ser una métrica de borde mientras que la segunda métrica es una métrica de dirección.
La figura 8A es un diagrama de flujo que ilustra técnicas de codificación de video consistentes con esta divulgación. Las técnicas descritas en la figura 8? pueden ser ejecutadas por la unidad de filtro de un decodificador de video, tal como la unidad de filtro 559 del decodificador de video 560. La unidad de filtro 559 mapea una primera combinación de rango a un primer filtro (810A) . La primera combinación de rango es la combinación de un primer rango de valores para una primera métrica y un primer rango de valores para una segunda métrica. La primera métrica puede ser, por ejemplo, un valor del Laplaciano de suma modificada y la segunda métrica puede ser una métrica de dirección, aunque también se pueden utilizar otras métricas. La unidad de filtro 559 mapea una segunda combinación de rango a un segundo filtro (820A) . La segunda combinación de rango es una combinación de un segundo rango de valores para la primera métrica y un segundo rango de valores para la segunda métrica. La unidad de filtro 559 entonces mapea una combinación de rango actual a un filtro con base en una palabra código recibida. La combinación de. rango actual incluye el primer rango de valores de la primera métrica y el segundo rango de valores para la segunda métrica. Si la palabra código es una primera palabra código (830A, si), entonces la unidad de filtro- 559 mapea la combinación de rango actual al primer filtro (840A) . La primera palabra código indica que la combinación de rango actual es mapeada al mismo filtro que la primera combinación de rango. Si la palabra código es una segunda palabra código (850A, si), la unidad de filtro 559 mapea la combinación de rango actual al segundo filtro (860A) . La segunda palabra código indica que la combinación de rango actual es mapeada al mismo filtro que la segunda combinación. Si la palabra código no es ni la primera palabra código ni la segunda palabra código (850A, no) , la unidad de filtro 559 mapea la combinación de rango actual a un tercer filtro (870A) . Si en respuesta a la recepción de una tercera palabra código, en donde la tercera palabra código identifica ese tercer filtro. En el ejemplo de la figura 8A, la primera palabra código y la segunda palabra código pueden incluir, cada una, una menor cantidad de bits que la tercera palabra código.
La figura 8B es un diagrama de flujo que ilustra técnicas de codificación de video consistentes con esta divulgación. La técnicas descritas en la figura 8B pueden ser ejecutadas por la unidad de filtro de un decodificador de video, tal como la unidad de filtro 559 del decodificador de video 560. La unidad de filtro 559 genera un mapeo de combinaciones de rango a filtros (810B) . Cada combinación de rango, por ejemplo, puede incluir un rango para una primera métrica y un rango para una segunda métrica. En respuesta a la recepción de una primera palabra código que señaliza que una combinación de rango actual es mapeada a un mismo filtro que una combinación de rango previa (820B, si), la unidad de filtro 559 mapea la combinación de rango actual al mismo filtro que la combinación de rango previa (830B) . En respuesta a la recepción de una segunda palabra código que señaliza que la combinación de rango actual es mapeada a un filtro diferente que la combinación de rango precia (820B, no) , la unidad de filtro 559 mapea la combinación de rango actual a un nuevo filtro (840B) . Tal como se describió anteriormente, la combinación de rango actual puede ser determinada con base en un orden de transmisión conocido. En algunos ejemplos, el nuevo filtro puede ser identificado con base en la segunda palabra código, mientras que en otros ejemplos, el nuevo filtro pudiera ser determinado con base en el orden en el cual son señalizados los coeficientes de filtro .
La figura 9A es un diagrama de flujo que ilustra técnicas de codificación de video consistentes con esta divulgación. Las técnicas descritas en la figura 9A pueden ser ejecutadas por la unidad de filtro de un codificador de video, tal como la unidad de filtro 349 del codificador de video 350. La unidad de filtro 349 determina un mapeo de combinaciones de rango a filtros (910A) . Cada combinación de rango incluye un rango de valores para una primer métrica y un rango de valores para una segunda métrica. Para una combinación de rango actual, si una combinación de rango actual es mapeada al mismo filtro que una combinación de rango previa que comprende el mismo rango de valores para la primera métrica (920A, si), entonces la unidad de filtro 349 genera una primera palabra código (930A). Si la combinación de rango actual es mapeada al mismo filtro que una combinación de rango previa que comprende el mismo rango de valores para la segunda métrica (940A, si), entonces la unidad de filtro 349 genera una segunda palabra código (950A) . Si la combinación de rango actual no es mapeada ni a la combinación de rango previa que comprende el mismo rango de valore para la primera métrica ni a la combinación de rango previa que comprende el mismo rango de valores para la segunda métrica (950A, no) , entonces la unidad de filtro 349 genera una tercera palabra código (960A). La tercera palabra código puede identificar un filtro mapeado a la combinación de rango actual.
La figura 9B es un diagrama de flujo que ilustra técnicas de codificación de video consistentes con esta divulgación. Las técnicas descritas en la figura 9B pueden ser ejecutadas por la unidad de filtro de un codificador de video, tal como la unidad de filtro 349 del codificador de video 350. La unidad de filtro 349 determina un mapeo de combinaciones de rango a filtros (910B) . Cada combinación de rango puede incluir, por ejemplo, un rango para una primera métrica y un rango para una segunda métrica. Cuando una combinación de rango actual que está siendo codificada tiene el mismo filtro que una combinación de rango previamente codificada (920B, si), la unidad de filtro 349 puede generar una primera palabra código para señalizar que la combinación de rango actual es mapeada al mismo filtro que una combinación de rango previa (930B). Cuando una combinación de rango actual que está siendo codificada no tiene el mismo filtro que una combinación de rango previamente codificada (920B, no), la unidad de filtro 349 puede generar una segunda palabra código (940B). La segunda palabra código puede identificar el filtro mapeado a la combinación de rango actual. Tal como se describió antes, la combinación de rango actual puede ser determinada con base en un orden de transmisión conocido. En el ejemplo de la figura 9B, la primera palabra código puede incluir menos bits que la segunda palabra código.
En los ejemplos de las figuras 8A y 8B y las figuras 9A y 9B, los términos "primera palabra código", "segunda palabra código", y "tercer palabra código" son utilizados para diferenciar entre diferentes palabras -código y no pretenden implicar un ordenamiento secuencial de palabras código.
La figura 10 es un diagrama de flujo que ilustra técnicas de codificación de video consistentes con esta divulgación. Las técnicas descritas en la figura 10 pueden ser ejecutadas por la unidad de filtro de un codificador de video, tal como la unidad de filtro 349 del codificador de video 350, o la unidad de filtro de un decodificador de video, tal como la unidad de filtro 559. La unidad de filtro determina un mapeo de combinaciones de rango a filtros (1010) . Las combinaciones de rango incluyen un rango para una primera métrica y un rango para una segunda métrica. La unidad de filtro determina una identificación (ID) de combinación de rango única para cada combinación de rango (1020). Las IDs de combinación de rango únicas corresponden a valores secuenciales . La unidad de filtro asigna una primera ID de grupo única a un primer grupo de combinaciones de rango con base en el valor secuencial de una ID de combinación de rango de al menos una combinación de rango en el primer grupo de combinaciones de rango (1030) . Los grupos de combinaciones de rango incluyen combinaciones de rango mapeadas al mismo filtro, las IDs de grupo únicas corresponden a un conjunto de valores secuenciales. La unidad de filtro codifica un primer conjunto de coeficientes de filtro correspondientes al mismo filtro con base en el valor secuencial de la primera ID de filtro única (1040) . En el caso del codificador de video, la codificación del primer conjunto de coeficientes de filtro puede incluir, por ejemplo, señalizar los coeficientes de filtro en una corriente de bits codificada utilizando técnicas de codificación diferencial. En el caso de un decodificador de video, la codificación del primer conjunto de coeficientes de filtro puede incluir reconstruir los coeficientes de filtro con base en la información recibida en una corriente de bits codificada.
La figura 11 es un diagrama de flujo que ilustra técnicas de codificación de video consistentes con esta divulgación. Las técnicas descritas en la figura 11 pueden ser ejecutadas por la unidad de filtro de un codificador de video, tal como la unidad de filtro 349 del codificador de video 350, o la unidad de filtro de un decodificador de video, tal como la unidad de filtro 559. La unidad de filtro determina un mapeo de combinaciones de rango a filtros (1110). Las combinaciones de rango pueden incluir un rango para una primera métrica y un rango para una segunda métrica. Cada combinación de rango puede tener una identificación (ID) de combinación de rango única, y cada ID de combinación de rango única puede corresponder a un valor secuencial para la combinación de rango. La unidad de filtro puede asignar una ID de grupo única a cada grupo de combinaciones de rango (1120) . La unidad de filtro puede asignar las IDs de grupo únicas, por ejemplo, con base en los valores secuenciales de las combinaciones de rango. Un grupo de combinaciones de rango puede incluir combinaciones de rango mapeadas a un filtro común, y las IDs de grupo únicas pueden corresponder a un conjunto de valores secuenciales. La unidad de filtro puede codificar conjuntos de coeficientes de filtro para los filtros con base en las IDs de grupo únicas (1140) .
En el ejemplo de la figura 11, la unidad de filtro puede asignar las IDs de grupo únicas, por ejemplo, asignando una ID de grupo única correspondiente a un valor secuencial más bajo de las IDs de grupo únicas a un grupo de combinaciones de rango que comprende una combinación de rango con una ID de combinación de rango correspondiente a un valor secuencial más bajo de las IDs de combinación de rango. En otro ejemplo, la unidad de filtro puede asignar la ID de grupo única correspondiente a un valor secuencial más elevado de las IDs de grupo únicas a un grupo de combinaciones de rango que comprende una combinación de rango con una ID de combinación de rango correspondiente a un valor secuencial más alto de las IDs de combinación de rango.
En casos donde la unidad de filtro es parte de un decodificador de video, la unidad de filtro puede codificar los conjuntos de coeficientes de filtro generando los conjuntos de coeficientes de filtro con base en la información recibida en una corriente de bits codificada. La unidad de filtro puede generar, por ejemplo, los conjuntos de coeficientes de filtro utilizando técnicas de codificación diferencial. En los casos donde la unidad de filtro es parte de un codificador de video, la unidad de filtro puede codificar los conjuntos de coeficientes de filtro señalizando los conjuntos de coeficientes de filtro en una corriente de bits codificada en un orden seleccionado con base en los valores secuenciales de las IDs de grupo únicas. La unidad de filtro puede señalizar, por ejemplo, los conjuntos de coeficientes de filtro utilizando técnicas de codificación diferencial .
La divulgación anterior ha sido simplificada a cierta extensión a fin de transmitir detalles. Por ejemplo, la divulgación generalmente describe conjuntos de filtros que están siendo señalizados sobre una base por-cuadro o por-porción, pero conjuntos de filtros también pueden ser señalizados sobre una base por-secuencia, una base por-grupo de imágenes, una base por-grupo de porciones, una base por-CU, una base por-LCU, u otra base de este tipo. En general, los filtros pueden ser señalizados para cualquier agrupamiento de una o más CUs . De manera adicional, en la implementación puede haber numerosos filtros por entrada por CU, numerosos coeficientes por filtro, y numerosos niveles diferentes de varianza con cada uno de los filtros siendo definido para un rango de varianza diferente. Por ejemplo, en algunos casos puede haber dieciséis o más filtros definidos para cada entrada de una CU y dieciséis rangos diferentes de varianza correspondientes a cada filtro. De manera adicional, cuando esta divulgación describe la transmisión de la información de filtro, no se debiera asumir que toda la información de filtro es transmitida al mismo nivel de codificación. Por ejemplo, en algunas implementaciones, cierta información de filtro tal como la sintaxis de descripción de filtro puede ser señalizada sobre una base cuadro-por-cuadro o sobre una base porción-por-porción mientras que otra información de filtro, tal como coeficientes de filtro, es señalizada sobre una base LCU-por-LCU. La sintaxis en otros niveles de la jerarquía de codificación, tal como el nivel de secuencia, nivel GOP, u otros niveles también podría ser definida para transmitir parte o toda esa información de filtro.
Cada uno de los filtros para cada entrada puede incluir muchos coeficientes. En un ejemplo, los filtros comprenden dos filtros bidimensionales con 81 coeficientes diferentes definidos para un soporte de filtro que se extiende en dos dimensiones. No obstante, el número de coeficientes de filtro que son señalizados para cada filtro puede ser menor que 81 en algunos casos. La simetría de coeficientes, por ejemplo, puede ser impuesta de manera que los coeficientes de filtro en una dimensión o cuadrante pueden corresponder a valores simétricos o invertidos con relación a coeficientes en otras dimensiones o cuadrantes. La simetría de coeficientes puede permitir que 81 coeficientes diferentes sean representados por una menor cantidad de coeficientes, en cuyo caso el codificador y decodificador pueden asumir que valores invertidos o reflejados de coeficientes definen otros coeficientes. Por ejemplo, los coeficientes (5, -2, 10, 10, -2, 5) pueden ser codificados y señalizados como el subconjunto de coeficientes (5, -2, 10) . En este caso, el decodificador puede saber que estos tres coeficientes definen el conjunto de coeficientes de simetría más grande (5, -2, 10, 10, -2, 5) .
Las técnicas de esta divulgación pueden ser implementadas en una amplia variedad de dispositivos o aparatos, incluyendo un equipo inalámbrico, y circuito integrado (IC) o un conjunto de ICs (es decir, un conjunto de chips). Cualesquiera componentes, módulos o unidades han sido descritos para enfatizar aspectos funcionales y no necesariamente requieren la realización por diferentes unidades de hardware.
Por consiguiente, las técnicas aquí descritas pueden ser implementadas en hardware, software, microprogramación cableada o cualquier combinación de los mismos. Si se implementan en hardware, cualesquiera características descritas como módulos, unidades o componentes pueden ser implementadas juntas en un dispositivo lógico integrado o por separado como dispositivos lógicos discretos pero interoperables. Si se implementan en software, las técnicas pueden ser realizadas al menos en parte por un medio legible por computadora que comprende instrucciones mismas que, cuando son ejecutadas en un procesador, ejecutan uno o más de los métodos antes descritos. Un medio legible por computadora puede comprender un medio de almacenamiento legible por computadora y puede formar parte de un producto de programa de computadora, el cual puede incluir materiales de empaque. El medio de almacenamiento legible por computadora puede comprender memoria de acceso aleatorio (RAM) , tal como memoria de acceso aleatorio dinámica sincrónica (SDRAM) , memoria de solo lectura (ROM) , memoria de acceso aleatorio no volátil (NVRAM) , memoria de solo lectura programable eléctricamente borrable (EEPROM) , memoria FLASH, medios de almacenamiento de datos magnéticos u ópticos, y similares. Las técnicas adicionalmente , o de manera alternativa, se pueden realizar a través de un medio de comunicación legible por computadora que lleva o comunica un código en la forma de instrucciones o estructuras de datos y a las que se puede tener acceso, se pueden leer y/o ejecutar mediante una computadora .
El código puede ser ejecutado por uno o más procesadores, tal como uno o más procesadores de señal digital (DSPs), microprocesadores de propósito general, circuitos integrados de aplicación especifica (ASICs), arreglos lógicos programables en campo (FPGAs) , u otra circuiteria lógica discreta o integrada equivalente. Por consiguiente, el término "procesador" tal como aquí se utiliza se puede referir a cualquiera de la estructura anterior o cualquier otra estructura conveniente para la implementación de las técnicas aquí descritas. Además, en algunos aspectos, la funcionalidad aquí descrita puede ser proporcionada dentro de módulos de software dedicados o módulos de hardware configurados para codificar y decodificar, o se puede incorporar en un códec de video combinado. También, las técnicas podrían ser completamente implementadas en uno o más circuitos o elementos lógicos.
Se han descrito diversos aspectos de la divulgación. Estos y otros aspectos están dentro del alcance de las siguientes reivindicaciones.

Claims (48)

NOVEDAD DE LA INVENCION Habiendo descrito la presente invención, se considera como una novedad y, por lo tanto, se reclama como propiedad lo contenido en las siguientes: REIVINDICACIONES
1. - Un método de codificación de video, el método comprende : determinar una primera métrica para un grupo de pixeles dentro de un blogue de pixeles, en donde la primera métrica es determinada con base en la comparación de valores de pixel del grupo de pixeles con valores de pixel del bloque de pixeles; determinar una segunda métrica para el grupo de pixeles, en donde la segunda métrica comprende una métrica de dirección determinada con base en la comparación de una medición de actividad horizontal para el grupo de pixeles con una medición de actividad vertical para el grupo de pixeles; con base en la primera métrica y la segunda métrica, determinar un filtro; generar una imagen filtrada mediante la aplicación del filtro al grupo de pixeles.
2. - El método de conformidad con la reivindicación 1, caracterizado porque la primera métrica comprende una métrica de actividad.
3.- El método de conformidad con la reivindicación 2, caracterizado porque la métrica de actividad comprende un valor del Laplaciano de suma modificada.
4.- El método de conformidad con la reivindicación 1, caracterizado porque la determinación de la segunda métrica para el grupo de pixeles comprende determinar una dirección para el grupo de pixeles, en donde la determinación de la dirección para el grupo de pixeles comprende: en respuesta a la medición de la actividad horizontal que es mayor que la medición de la actividad vertical, determinar que la dirección es igual a una primera dirección que indica que los valores de pixel están cambiando más en la dirección horizontal que en la dirección vertical; en respuesta a la medición de la actividad vertical que es mayor que la medición de la actividad horizontal, determinar que la dirección es igual a una segunda dirección que indica que los valores de pixel están cambiando más en la dirección vertical que en la dirección horizontal.
5. - El método de conformidad con la reivindicación 1, caracterizado porque la medición de la actividad horizontal es determinada con base en la comparación de un valor de pixel de un pixel actual con un valor de pixel de un pixel vecino a la izquierda y un valor de pixel de un pixel vecino a la derecha.
6. - El método de conformidad con la reivindicación 1, caracterizado porque la medición de actividad vertical es determinada con base en la comparación de un valor de pixel de un pixel actual con un valor de pixel de un pixel vecino superior y un valor de pixel de un pixel vecino inferior.
7. - El método de conformidad con la reivindicación 2, caracterizado porque la métrica de actividad es determinada con base en una suma de la medición de actividad horizontal y la medición de actividad vertical.
8. - El método de conformidad con la reivindicación 1, caracterizado porque el grupo de pixeles comprende un bloque de pixeles 4x4.
9. - El método de conformidad con la reivindicación 1, caracterizado porque el grupo de pixeles comprende un pixel.
10. - El método de conformidad con la reivindicación 1, caracterizado porque el codificador de video implementa un esquema de Filtro de Bucle Adaptivo basado en Árbol Cuádruple (QALF) con múltiples filtros.
11. - El método de conformidad con la reivindicación 1, caracterizado porque el método es ejecutado por un dispositivo de codificación de video que comprende un codificador de video.
12. - El método de conformidad con la reivindicación 1, caracterizado porque el método es ejecutado por un dispositivo de codificación de video que comprende un decodificador de video.
13. - Un dispositivo de codificación de video que comprende : una unidad de filtro configurada para: determinar una primera métrica para un grupo de pixeles dentro de un bloque de pixeles, en donde la primera métrica es determinada con base en la comparación de valores de pixel del grupo de pixeles con valores de pixel del bloque de pixeles ; determinar una segunda métrica para el grupo de pixeles, en donde la segunda métrica comprende una métrica de dirección determinada con base en la comparación de una medición de actividad horizontal para el grupo de pixeles con una medición de actividad vertical para el grupo de pixeles; determinar un filtro con base en la primera métrica y la segunda métrica; generar una imagen filtrada mediante la aplicación del filtro al grupo de pixeles; una memoria configurada para almacenar un resultado filtrado de la unidad de filtro.
14. - El dispositivo de codificación de video de conformidad con la reivindicación 13, caracterizado porque la primera métrica comprende una métrica de actividad.
15. - El dispositivo de codificación de video de conformidad con la reivindicación 14, caracterizado porque por la métrica de actividad comprende un valor del Laplaciano de suma modificada.
16. - El dispositivo de codificación de video de conformidad con la reivindicación 13, caracterizado porque la unidad de filtro además está configurada para determinar la segunda métrica para el grupo de pixeles mediante la determinación de una dirección para el grupo de pixeles, en donde la unidad de filtro determina la dirección para el grupo de pixeles mediante: en respuesta a la medición de la actividad horizontal que es mayor que la medición de la actividad vertical, determinar que la dirección es igual a una primera dirección indicando que los valores de pixel están cambiando más en la dirección horizontal que en la dirección vertical; en respuesta a la medición de la actividad vertical que es mayor que la medición de la actividad horizontal, determinar que la dirección es igual a una segunda dirección indicando que valores de pixel están cambiando más en la dirección vertical que en la dirección horizontal.
17. - El dispositivo de codificación de video de conformidad con la reivindicación 13, caracterizado porque la unidad de filtro determina la medición de la actividad horizontal con base en la comparación de un valor de pixel de un pixel actual con un valor de pixel de un pixel vecino a la izquierda y un valor de pixel de un pixel vecino a la derecha .
18. - El dispositivo de codificación de video de conformidad con la reivindicación 13, caracterizado porque la unidad de filtro determina la medición de la actividad vertical con base en la comparación de un valor de pixel de un pixel actual con un valor de pixel de un pixel vecino superior y un valor de pixel de un pixel vecino inferior.
19. - El dispositivo de codificación de video de conformidad con la reivindicación 14, caracterizado porque la métrica de actividad es determinada con base en una suma de la medición de la actividad horizontal y la medición de la actividad vertical.
20. - El dispositivo de codificación de video de conformidad con la reivindicación 13, caracterizado porque el grupo de pixeles comprende un bloque de pixeles 4x .
21. - El dispositivo de codificación de video de conformidad con la reivindicación 13, caracterizado porque el grupo de pixeles comprende un pixel.
22. - El dispositivo de codificación de video de conformidad con la reivindicación 13, caracterizado porque el dispositivo de codificación de video implementa un esquema de Filtro de Bucle Adaptivo basado en Árbol Cuádruple (QALF) con múltiples filtros.
23. - El dispositivo de codificación de video de conformidad con la reivindicación 13, caracterizado porque la unidad de filtro es una parte de un dispositivo de codificación de video.
24. - El dispositivo de codificación de video de conformidad con la reivindicación 13, caracterizado porque la unidad de filtro es una parte de un dispositivo de decodificación de video.
25. - Un aparato que comprende: medios para determinar una primera métrica para un grupo de pixeles dentro de un bloque de pixeles, en donde los medios para determinar la primera métrica comprenden medios para determinar la primera métrica con base en la comparación de valores de pixel del grupo de pixeles con valores dé pixel del bloque de pixeles; medios para determinar una segunda métrica para el grupo de pixeles, en donde la segunda métrica comprende una métrica de dirección, y en donde los medios para determinar la segunda métrica comprenden medios para determinar la segunda métrica con base en la comparación de una medición de actividad horizontal para el grupo de pixeles con una medición de actividad vertical para el grupo de pixeles; medios para determinar un filtro con base en la primera métrica y la segunda métrica; medios para generar una imagen filtrada mediante la aplicación del filtro al grupo de pixeles.
26. - El aparato de conformidad con la reivindicación 25, caracterizado porque la primera métrica comprende una métrica de actividad.
27. - El aparato de conformidad con la reivindicación 26, caracterizado porque la métrica de actividad comprende un valor del Laplaciano de suma modificada.
28. - El aparato de conformidad con la reivindicación 25, caracterizado porque los medios para determinar la segunda métrica para el grupo de pixeles comprenden medios para determinar una dirección para el grupo de pixeles, en donde los medios para determinar la dirección para el grupo de pixeles comprende: medios para determinar que la dirección es igual a una primera dirección indicando que los valores de pixel están cambiando más en la dirección horizontal que en la dirección vertical en respuesta a que la medición de la actividad horizontal es mayor que la medición de la activación vertical ; medios para determinar que la dirección es igual a una segunda dirección indicando que valores de pixel están cambiando más en la dirección vertical que en la dirección horizontal en respuesta a la medición de la actividad vertical que es mayor que la medición de la actividad horizontal.
29. - El aparato de conformidad con la reivindicación 25, caracterizado porque la medición de la actividad horizontal es determinada con base en la comparación de un valor de pixel de un pixel actual con un valor de pixel de un pixel vecino a la izquierda y un valor de pixel de un pixel vecino a la derecha.
30. - El aparato de conformidad con la reivindicación 25, caracterizado porque la medición de la actividad vertical es determinada con base en la comparación de un valor de pixel de un pixel actual con un valor de pixel de un pixel vecino superior y un valor de pixel de un pixel vecino inferior.
31. - El aparato de conformidad con la reivindicación 26, caracterizado porque la métrica de actividad es determinada con base en una suma de la medición de actividad horizontal y la medición de actividad vertical.
32. - El aparato de conformidad con la reivindicación 25, caracterizado porque el grupo de pixeles comprende un bloque de pixeles 4x4.
33. - El aparato de conformidad con la reivindicación 25, caracterizado porque el grupo de pixeles comprende un pixel.
34. - El aparato de conformidad con la reivindicación 25, caracterizado porque el aparato implementa un esquema de Filtro de Bucle Adaptivo basada en Árbol Cuádruple (QALF) con múltiples filtros.
35. - El aparato de conformidad con la reivindicación 25, caracterizado porque el aparato comprende un dispositivo de codificación de video que comprende un codificador de video.
36. - El aparato de conformidad con la reivindicación 25, caracterizado porque el aparato comprende un dispositivo de codificación de video que comprende un decodificador de video.
37. - Un medio de almacenamiento legible por computadora que tiene almacenadas en el mismo, instrucciones que cuando son ejecutadas ocasionan que uno o más procesadores: determinen una primera métrica para un grupo de pixeles dentro de un bloque de pixeles, en donde la primera métrica es determinada con base en la comparación de valores de pixel del grupo de pixeles con valores de pixel del bloque de pixeles ; determinen una segunda métrica para el grupo de pixeles, en donde la segunda métrica comprende una métrica de dirección determinada con base en la comparación de una medición de la actividad horizontal para el grupo de pixeles con una medición de la actividad vertical para el grupo de pixeles ; determinen un filtro con base en la primera métrica y la segunda métrica; generen una imagen filtrada mediante la aplicación del filtro al grupo de pixeles.
38. - El medio de almacenamiento legible por computadora de conformidad con la reivindicación 37, caracterizado porque la primera métrica comprende una métrica de actividad.
39. - El medio de almacenamiento legible por computadora de conformidad con la reivindicación 38, caracterizado porque la métrica de actividad comprende un valor del Laplaciano de suma modificada.
40.- El medio de almacenamiento legible por computadora de conformidad con la reivindicación 37, que además comprende almacenar instrucciones adicionales que cuando son ejecutadas ocasionan que uno o más procesadores determinen la segunda métrica para el grupo de pixeles mediante la determinación de una dirección para el grupo de pixeles, en donde la determinación de la dirección para el grupo de pixeles comprende : en respuesta a la medición de la actividad horizontal que es mayor que la medición de la actividad vertical, determinar que la dirección es igual a una primera dirección indicando que los valores de pixel están cambiando más en la dirección horizontal que en la dirección vertical; en respuesta a la medición de la actividad vertical que es mayor que la medición de la actividad horizontal, determinar que la dirección es igual a una segunda dirección indicando que valores de pixel están cambiando más en la dirección vertical que en la dirección horizontal.
41.- El medio de almacenamiento legible por computadora de conformidad con la reivindicación 37, caracterizado porque la medición de la actividad horizontal es determinada con base en la comparación de un valor de pixel de un pixel actual con un valor de pixel de un pixel vecino a la izquierda y un valor de pixel de un pixel vecino a la derecha .
42.- El medio de almacenamiento legible por computadora de conformidad con la reivindicación 37, caracterizado porque la medición de la actividad vertical es determinada con base en la comparación de un valor de pixel de un pixel actual con un valor de pixel de un pixel vecino superior y un valor de pixel de un pixel vecino inferior.
43.- El medio de almacenamiento legible por computadora de conformidad con la reivindicación 38, caracterizado porque la métrica de actividad es determinada con base en una suma de la medición de actividad horizontal y la medición de actividad vertical.
44.- El medio de almacenamiento legible por computadora de conformidad con la reivindicación 37, caracterizado porque el grupo de pixeles comprende un bloque de pixeles 4x4.
45.- El medio de almacenamiento legible por computadora de conformidad con la reivindicación 37, caracterizado porque el grupo de pixeles comprende un píxel.
46.- El medio de almacenamiento legible por computadora de conformidad con la reivindicación 37, caracterizado porque uno o más procesadores implementan un esquema de Filtro de Bucle basado en Árbol Cuádruple (QALF) con múltiples filtros.
47. - El medio de almacenamiento legible por computadora de conformidad con la reivindicación 37, caracterizado porque uno o más procesadores ejecutan codificación de video.
48. - El medio de almacenamiento legible por computadora de conformidad con la reivindicación 37, caracterizado porque uno o más procesadores ejecutan decodificación de video.
MX2013009722A 2011-02-23 2012-02-22 Filtracion multimetrica. MX2013009722A (es)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US201161445967P 2011-02-23 2011-02-23
US201161448771P 2011-03-03 2011-03-03
US201161473713P 2011-04-08 2011-04-08
US201161476260P 2011-04-16 2011-04-16
US201161478287P 2011-04-22 2011-04-22
US201161503426P 2011-06-30 2011-06-30
US201161503440P 2011-06-30 2011-06-30
US201161503434P 2011-06-30 2011-06-30
US201161527463P 2011-08-25 2011-08-25
US201161531571P 2011-09-06 2011-09-06
US13/401,548 US8982960B2 (en) 2011-02-23 2012-02-21 Multi-metric filtering
PCT/US2012/026154 WO2012116088A1 (en) 2011-02-23 2012-02-22 Multi-metric filtering

Publications (1)

Publication Number Publication Date
MX2013009722A true MX2013009722A (es) 2013-09-16

Family

ID=46652728

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2013009722A MX2013009722A (es) 2011-02-23 2012-02-22 Filtracion multimetrica.

Country Status (23)

Country Link
US (7) US8982960B2 (es)
EP (8) EP2679007A1 (es)
JP (7) JP5752812B2 (es)
KR (6) KR101788948B1 (es)
CN (6) CN103380621B (es)
AU (2) AU2012220632B2 (es)
BR (2) BR112013021617A2 (es)
CA (2) CA2828406C (es)
DK (2) DK2679008T3 (es)
ES (3) ES2966390T3 (es)
HU (2) HUE051435T2 (es)
IL (1) IL227636A (es)
MX (1) MX2013009722A (es)
MY (2) MY166573A (es)
PL (2) PL3796653T3 (es)
PT (1) PT2679009T (es)
RU (2) RU2584961C2 (es)
SG (2) SG192123A1 (es)
SI (1) SI2679009T1 (es)
TW (1) TWI499267B (es)
UA (1) UA110637C2 (es)
WO (4) WO2012116094A1 (es)
ZA (2) ZA201307110B (es)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI452859B (zh) 2007-01-05 2014-09-11 Lg Electronics Inc 用於mimo系統之層對映方法與資料傳輸
US10123050B2 (en) 2008-07-11 2018-11-06 Qualcomm Incorporated Filtering video data using a plurality of filters
US9143803B2 (en) 2009-01-15 2015-09-22 Qualcomm Incorporated Filter prediction based on activity metrics in video coding
US8982960B2 (en) * 2011-02-23 2015-03-17 Qualcomm Incorporated Multi-metric filtering
KR101215152B1 (ko) * 2011-04-21 2012-12-24 한양대학교 산학협력단 인루프 필터링을 적용한 예측 방법을 이용한 영상 부호화/복호화 방법 및 장치
US9344742B2 (en) * 2012-08-10 2016-05-17 Google Inc. Transform-domain intra prediction
US20140056363A1 (en) * 2012-08-23 2014-02-27 Yedong He Method and system for deblock filtering coded macroblocks
US9819965B2 (en) * 2012-11-13 2017-11-14 Intel Corporation Content adaptive transform coding for next generation video
FR3011429A1 (fr) * 2013-09-27 2015-04-03 Orange Codage et decodage video par heritage d'un champ de vecteurs de mouvement
KR20150037371A (ko) * 2013-09-30 2015-04-08 삼성전자주식회사 다이렉트 메모리 액세스(dma)를 이용하여 영상 신호를 처리하는 방법 및 장치.
US9628822B2 (en) * 2014-01-30 2017-04-18 Qualcomm Incorporated Low complexity sample adaptive offset encoding
JP2017513312A (ja) * 2014-03-14 2017-05-25 シャープ株式会社 色空間スケーラビリティを用いたビデオ圧縮
CN104023241B (zh) * 2014-05-29 2017-08-04 华为技术有限公司 帧内预测编码的视频编码方法及视频编码装置
US10057574B2 (en) 2015-02-11 2018-08-21 Qualcomm Incorporated Coding tree unit (CTU) level adaptive loop filter (ALF)
CN104918057B (zh) * 2015-05-08 2018-07-13 上海交通大学 一种利用邻域运动信息的运动矢量后处理系统
CA2986613C (en) 2015-05-21 2020-04-28 Huawei Technologies Co., Ltd. Apparatus and method for video motion compensation
KR20180019548A (ko) * 2015-06-18 2018-02-26 엘지전자 주식회사 영상 코딩 시스템에서 영상 특성에 기반한 적응적 필터링 방법 및 장치
US10750170B2 (en) * 2015-06-18 2020-08-18 Lg Electronics Inc. Image filtering method and device in image coding system
CN105049846B (zh) * 2015-08-14 2019-05-21 广东中星微电子有限公司 图像和视频编解码的方法和设备
CN106470341B (zh) 2015-08-17 2020-10-02 恩智浦美国有限公司 媒体显示系统
US9883183B2 (en) * 2015-11-23 2018-01-30 Qualcomm Incorporated Determining neighborhood video attribute values for video data
KR101788183B1 (ko) * 2015-12-28 2017-10-20 현대자동차주식회사 차량 및 그 제어방법
US11064195B2 (en) * 2016-02-15 2021-07-13 Qualcomm Incorporated Merging filters for multiple classes of blocks for video coding
US10382766B2 (en) 2016-05-09 2019-08-13 Qualcomm Incorporated Signalling of filtering information
US10419755B2 (en) * 2016-05-16 2019-09-17 Qualcomm Incorporated Confusion of multiple filters in adaptive loop filtering in video coding
US11310495B2 (en) * 2016-10-03 2022-04-19 Sharp Kabushiki Kaisha Systems and methods for applying deblocking filters to reconstructed video data
US10572978B2 (en) * 2016-12-05 2020-02-25 Kennesaw State University Research And Service Foundation, Inc. Moran's / for impulse noise detection and removal in color images
JP2018182444A (ja) * 2017-04-07 2018-11-15 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法及び画像符号化プログラム、画像復号装置、画像復号方法及び画像復号プログラム
CN108737841B (zh) * 2017-04-21 2020-11-24 腾讯科技(深圳)有限公司 编码单元深度确定方法及装置
US10225578B2 (en) 2017-05-09 2019-03-05 Google Llc Intra-prediction edge filtering
US10992939B2 (en) 2017-10-23 2021-04-27 Google Llc Directional intra-prediction coding
US11423578B2 (en) * 2017-09-27 2022-08-23 Sony Corporation Encoding device, encoding method, decoding device, and decoding method
US20190116359A1 (en) * 2017-10-12 2019-04-18 Qualcomm Incorporated Guided filter for video coding and processing
EP3704858A1 (en) * 2017-11-01 2020-09-09 Vid Scale, Inc. Methods for simplifying adaptive loop filter in video coding
CN108122268B (zh) * 2017-12-19 2021-07-23 网易(杭州)网络有限公司 贴图处理方法和装置
US20190297603A1 (en) * 2018-03-23 2019-09-26 Samsung Electronics Co., Ltd. Method and apparatus for beam management for multi-stream transmission
US11889070B2 (en) * 2018-03-23 2024-01-30 Sharp Kabushiki Kaisha Image filtering apparatus, image decoding apparatus, and image coding apparatus
US11451773B2 (en) 2018-06-01 2022-09-20 Qualcomm Incorporated Block-based adaptive loop filter (ALF) design and signaling
CN112272951A (zh) * 2018-06-13 2021-01-26 华为技术有限公司 用于视频编码的帧内锐化滤波器和/或去振铃滤波器
WO2020084601A1 (en) * 2018-10-26 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Redundancy reduction in block partition
KR102622950B1 (ko) 2018-11-12 2024-01-10 삼성전자주식회사 디스플레이장치, 그 제어방법 및 기록매체
CA3119935A1 (en) * 2018-11-14 2020-05-22 Sharp Kabushiki Kaisha Systems and methods for applying deblocking filters to reconstructed video data
US11051017B2 (en) 2018-12-20 2021-06-29 Qualcomm Incorporated Adaptive loop filter (ALF) index signaling
RU2737343C2 (ru) * 2019-01-10 2020-11-27 Федеральное государственное казенное военное образовательное учреждение высшего образования "Военный учебно-научный центр Военно-воздушных сил "Военно-воздушная академия имени профессора Н.Е. Жуковского и Ю.А. Гагарина" (г. Воронеж) Министерства обороны Российской Федерации Способ определения характера движения объекта на кадрах видеопоследовательности
US11070848B2 (en) * 2019-06-24 2021-07-20 Tencent America LLC Method for efficient signaling of virtual boundary for loop filtering control
CN113727116B (zh) * 2021-07-21 2024-04-23 天津津航计算技术研究所 基于过滤机制的视频解码方法
CN113747171B (zh) * 2021-08-06 2024-04-19 天津津航计算技术研究所 一种自恢复的视频解码方法
CN114598902B (zh) * 2022-03-09 2023-12-22 安徽文香科技股份有限公司 一种视频帧处理方法、装置及电子设备
CN116260973B (zh) * 2023-03-31 2024-03-19 北京百度网讯科技有限公司 一种时域滤波方法、装置、电子设备及存储介质

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS612482A (ja) 1984-06-15 1986-01-08 Mitsubishi Electric Corp サブナイキスト標本化フイルタ
CA1270322A (en) 1983-12-22 1990-06-12 Kotaro Asai Adaptive comb filter
JP2673778B2 (ja) 1994-02-22 1997-11-05 国際電信電話株式会社 動画像の復号化における雑音低減装置
JPH0970044A (ja) 1995-08-31 1997-03-11 Sony Corp 画像信号処理装置および方法
US5798795A (en) 1996-03-01 1998-08-25 Florida Atlantic University Method and apparatus for encoding and decoding video signals
US5844613A (en) * 1997-03-17 1998-12-01 Microsoft Corporation Global motion estimator for motion video signal encoding
KR100265722B1 (ko) 1997-04-10 2000-09-15 백준기 블럭기반영상처리방법및장치
EP1033883A1 (en) 1998-09-22 2000-09-06 Matsushita Electric Industrial Co., Ltd. Video signal encoding method, video signal encoder, and program recorded medium
US6421720B2 (en) 1998-10-28 2002-07-16 Cisco Technology, Inc. Codec-independent technique for modulating bandwidth in packet network
US6529638B1 (en) 1999-02-01 2003-03-04 Sharp Laboratories Of America, Inc. Block boundary artifact reduction for block-based image compression
US7003038B2 (en) 1999-09-27 2006-02-21 Mitsubishi Electric Research Labs., Inc. Activity descriptor for video sequences
FI117533B (fi) 2000-01-20 2006-11-15 Nokia Corp Menetelmä digitaalisten videokuvien suodattamiseksi
US7203234B1 (en) 2000-03-31 2007-04-10 Sharp Laboratories Of America, Inc. Method of directional filtering for post-processing compressed video
US7289154B2 (en) 2000-05-10 2007-10-30 Eastman Kodak Company Digital image processing method and apparatus for brightness adjustment of digital images
US6504872B1 (en) 2000-07-28 2003-01-07 Zenith Electronics Corporation Down-conversion decoder for interlaced video
US20030026495A1 (en) * 2001-03-07 2003-02-06 Gondek Jay Stephen Parameterized sharpening and smoothing method and apparatus
DE10120395A1 (de) 2001-04-25 2002-10-31 Bosch Gmbh Robert Einrichtung zur Interpolation von Abtastwerten sowie Bildencoder und Bilddecoder
US7266150B2 (en) 2001-07-11 2007-09-04 Dolby Laboratories, Inc. Interpolation of video compression frames
KR100747958B1 (ko) 2001-09-18 2007-08-08 마쯔시다덴기산교 가부시키가이샤 화상 부호화 방법 및 화상 복호화 방법
US6983079B2 (en) 2001-09-20 2006-01-03 Seiko Epson Corporation Reducing blocking and ringing artifacts in low-bit-rate coding
MXPA03006715A (es) * 2001-11-29 2003-10-24 Matsushita Electric Ind Co Ltd Metodo para la remocion de la distorsion de la codificacion, metodo codificador de video, metodo descodificador de video y aparato y programa para los mismos.
KR100418437B1 (ko) 2001-12-24 2004-02-14 (주)씨앤에스 테크놀로지 멀티미디어 신호처리를 위한 영상복원 프로세서
BRPI0304545B1 (pt) 2002-01-14 2018-07-03 Nokia Technologies Oy Método de codificação das imagens em uma seqüência de vídeo digital para fornecer os dados de vídeo codificados, codificador de vídeo, método de decodificação dos dados indicativos de uma sequência de vídeo digital, decodificador de vídeo, e, sistema de codificação de vídeo
EP2899977A1 (en) * 2002-01-31 2015-07-29 Samsung Electronics Co., Ltd Filtering method and apparatus for reducing block artifacts or ringing noise
JP4102973B2 (ja) 2002-04-24 2008-06-18 日本電気株式会社 動画像の符号化方法および復号化方法、これを用いた装置とプログラム
DE50305419D1 (de) 2002-05-02 2006-11-30 Fraunhofer Ges Forschung Kodierung und Dekodierung von Transformationskoeffizienten in Bild- oder Videokodierern
CN100566379C (zh) 2002-06-25 2009-12-02 松下电器产业株式会社 移动检测装置及其利用该装置的噪声衰减装置
WO2004008773A1 (ja) 2002-07-11 2004-01-22 Matsushita Electric Industrial Co., Ltd. フィルタリング強度の決定方法、動画像符号化方法、および動画像復号化方法
US7391812B2 (en) * 2002-07-14 2008-06-24 Apple Inc. Adaptively post filtering encoded video
EP1603338A4 (en) 2003-03-10 2007-12-05 Mitsubishi Electric Corp APPARATUS AND METHOD FOR VIDEO SIGNAL CODING
US7430335B2 (en) 2003-08-13 2008-09-30 Apple Inc Pre-processing method and system for data reduction of video sequences and bit rate reduction of compressed video sequences using spatial filtering
US7599438B2 (en) * 2003-09-07 2009-10-06 Microsoft Corporation Motion vector block pattern coding and decoding
US8625680B2 (en) 2003-09-07 2014-01-07 Microsoft Corporation Bitstream-controlled post-processing filtering
KR101094323B1 (ko) 2003-09-17 2011-12-19 톰슨 라이센싱 적응 기준 화상 생성
US7822286B2 (en) 2003-11-07 2010-10-26 Mitsubishi Electric Research Laboratories, Inc. Filtering artifacts in images with 3D spatio-temporal fuzzy filters
US7437013B2 (en) 2003-12-23 2008-10-14 General Instrument Corporation Directional spatial video noise reduction
US7453938B2 (en) 2004-02-06 2008-11-18 Apple Inc. Target bitrate estimator, picture activity and buffer management in rate control for video coder
US8165389B2 (en) * 2004-03-15 2012-04-24 Microsoft Corp. Adaptive interpolation with artifact reduction of images
JP4468734B2 (ja) 2004-04-27 2010-05-26 オリンパス株式会社 映像信号処理装置と映像信号処理プログラム
US7460596B2 (en) 2004-04-29 2008-12-02 Mediatek Incorporation Adaptive de-blocking filtering apparatus and method for MPEG video decoder
US20070230565A1 (en) 2004-06-18 2007-10-04 Tourapis Alexandros M Method and Apparatus for Video Encoding Optimization
CN101189882B (zh) 2004-07-20 2012-08-01 高通股份有限公司 用于视频压缩的编码器辅助帧率上变换(ea-fruc)的方法和装置
US20060028562A1 (en) 2004-08-09 2006-02-09 Martin Schmitz Fast area-selected filtering for pixel-noise and analog artifacts reduction
US7370126B2 (en) 2004-11-03 2008-05-06 Cisco Technology, Inc. System and method for implementing a demand paging jitter buffer algorithm
US7634148B2 (en) 2005-01-07 2009-12-15 Ntt Docomo, Inc. Image signal transforming and inverse-transforming method and computer program product with pre-encoding filtering features
JP2008536414A (ja) 2005-04-13 2008-09-04 ゴットフリート・ヴィルヘルム・ライプニッツ・ウニヴェルジテート・ハノーヴァー ビデオの拡張された符号化方法及び装置
US7680355B2 (en) 2005-05-02 2010-03-16 Intel Corporation Detection of artifacts resulting from image signal decompression
US8422546B2 (en) 2005-05-25 2013-04-16 Microsoft Corporation Adaptive video encoding using a perceptual model
US20060285597A1 (en) 2005-06-20 2006-12-21 Flextronics International Usa, Inc. Reusing interpolated values in advanced video encoders
US8208564B2 (en) 2005-06-24 2012-06-26 Ntt Docomo, Inc. Method and apparatus for video encoding and decoding using adaptive interpolation
US7778169B2 (en) 2005-09-02 2010-08-17 Cisco Technology, Inc. Packetizing media for a time slotted communication system
US7894522B2 (en) 2005-09-16 2011-02-22 Sony Corporation Classified filtering for temporal prediction
JP4455487B2 (ja) 2005-12-16 2010-04-21 株式会社東芝 復号化装置及び復号化方法及びプログラム
US8189934B2 (en) 2006-03-27 2012-05-29 Panasonic Corporation Image coding apparatus and image decoding apparatus
BRPI0714233A2 (pt) 2006-07-18 2013-01-15 Thomson Licensing mÉtodos e aparelho para filtragem de referÊncia adaptativa
US8253752B2 (en) 2006-07-20 2012-08-28 Qualcomm Incorporated Method and apparatus for encoder assisted pre-processing
US8731064B2 (en) 2006-09-11 2014-05-20 Apple Inc. Post-processing for decoder complexity scalability
US20080075165A1 (en) 2006-09-26 2008-03-27 Nokia Corporation Adaptive interpolation filters for video coding
RU2387094C1 (ru) * 2006-11-09 2010-04-20 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ и устройство для кодирования/декодирования видеосигнала
RU2461977C2 (ru) 2006-12-18 2012-09-20 Конинклейке Филипс Электроникс Н.В. Сжатие и снятие сжатия изображения
EP2127391A2 (en) 2007-01-09 2009-12-02 Nokia Corporation Adaptive interpolation filters for video coding
KR100856551B1 (ko) * 2007-05-31 2008-09-04 한국과학기술원 H.264/avc에서의 디블록 필터 및 필터링 방법
WO2008148272A1 (en) 2007-06-04 2008-12-11 France Telecom Research & Development Beijing Company Limited Method and apparatus for sub-pixel motion-compensated video coding
US7965900B2 (en) 2007-09-26 2011-06-21 Hewlett-Packard Development Company, L.P. Processing an input image to reduce compression-related artifacts
WO2009045683A1 (en) 2007-09-28 2009-04-09 Athanasios Leontaris Video compression and tranmission techniques
EP2048886A1 (en) * 2007-10-11 2009-04-15 Panasonic Corporation Coding of adaptive interpolation filter coefficients
CN101184221A (zh) * 2007-12-06 2008-05-21 上海大学 基于视觉关注度的视频编码方法
WO2009088340A1 (en) * 2008-01-08 2009-07-16 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive filtering
US20100272191A1 (en) 2008-01-14 2010-10-28 Camilo Chang Dorea Methods and apparatus for de-artifact filtering using multi-lattice sparsity-based filtering
US8831086B2 (en) 2008-04-10 2014-09-09 Qualcomm Incorporated Prediction techniques for interpolation in video coding
US8451902B2 (en) 2008-04-23 2013-05-28 Telefonaktiebolaget L M Ericsson (Publ) Template-based pixel block processing
US10123050B2 (en) 2008-07-11 2018-11-06 Qualcomm Incorporated Filtering video data using a plurality of filters
US8290782B2 (en) 2008-07-24 2012-10-16 Dts, Inc. Compression of audio scale-factors by two-dimensional transformation
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
US8761538B2 (en) 2008-12-10 2014-06-24 Nvidia Corporation Measurement-based and scalable deblock filtering of image data
US9143803B2 (en) 2009-01-15 2015-09-22 Qualcomm Incorporated Filter prediction based on activity metrics in video coding
WO2010102935A1 (en) * 2009-03-09 2010-09-16 Thomson Licensing Estimation of the prediction mode for the intra coding mode
CN101854540B (zh) * 2009-04-01 2014-07-02 辉达公司 用于应用h.264视频编码标准的帧内预测方法及装置
EP2262267A1 (en) 2009-06-10 2010-12-15 Panasonic Corporation Filter coefficient coding scheme for video coding
WO2011126759A1 (en) 2010-04-09 2011-10-13 Sony Corporation Optimal separable adaptive loop filter
US9094658B2 (en) 2010-05-10 2015-07-28 Mediatek Inc. Method and apparatus of adaptive loop filtering
CN101945281B (zh) * 2010-09-10 2014-09-10 中兴通讯股份有限公司 视频编码的滤波方法及装置
US8982960B2 (en) 2011-02-23 2015-03-17 Qualcomm Incorporated Multi-metric filtering
JP5818755B2 (ja) 2012-08-23 2015-11-18 有限会社イザキ 焼却灰保管方法およびこれに用いる焼却灰保管容器

Also Published As

Publication number Publication date
US9819936B2 (en) 2017-11-14
KR101552031B1 (ko) 2015-09-09
EP3796653B1 (en) 2023-11-15
CN103392339A (zh) 2013-11-13
JP5815756B2 (ja) 2015-11-17
CA2830381A1 (en) 2012-08-30
IL227636A0 (en) 2013-09-30
CN103477639B (zh) 2017-09-22
PL2679009T3 (pl) 2020-12-28
JP5815755B2 (ja) 2015-11-17
JP2014511614A (ja) 2014-05-15
KR20130129440A (ko) 2013-11-28
US20160156906A1 (en) 2016-06-02
WO2012116088A1 (en) 2012-08-30
EP2679007A1 (en) 2014-01-01
CN107277525A (zh) 2017-10-20
ZA201307110B (en) 2018-12-19
AU2012220639B2 (en) 2015-11-19
JP2014511615A (ja) 2014-05-15
TW201242374A (en) 2012-10-16
IL227636A (en) 2017-05-29
CN107396114B (zh) 2020-09-22
US20150117554A1 (en) 2015-04-30
AU2012220632B2 (en) 2015-09-10
KR20130129441A (ko) 2013-11-28
KR101552032B1 (ko) 2015-09-09
PL3796653T3 (pl) 2024-03-25
SG192123A1 (en) 2013-08-30
WO2012116095A1 (en) 2012-08-30
JP2017175640A (ja) 2017-09-28
BR112013021476A2 (pt) 2016-10-11
US20120213271A1 (en) 2012-08-23
TWI499267B (zh) 2015-09-01
EP3700203A1 (en) 2020-08-26
US8964852B2 (en) 2015-02-24
CN107396114A (zh) 2017-11-24
KR20150056663A (ko) 2015-05-26
EP2679008A1 (en) 2014-01-01
JP5752812B2 (ja) 2015-07-22
US9877023B2 (en) 2018-01-23
RU2013142925A (ru) 2015-03-27
EP2679010A1 (en) 2014-01-01
DK2679008T3 (da) 2020-08-03
KR20130129442A (ko) 2013-11-28
EP3796653C0 (en) 2023-11-15
CN103392339B (zh) 2016-08-24
CN107277525B (zh) 2020-05-01
WO2012116094A1 (en) 2012-08-30
AU2012220632A1 (en) 2013-09-05
ES2966390T3 (es) 2024-04-22
KR101578986B1 (ko) 2015-12-18
EP3796653A1 (en) 2021-03-24
SG192743A1 (en) 2013-09-30
PT2679009T (pt) 2020-08-31
US8989261B2 (en) 2015-03-24
JP2014508473A (ja) 2014-04-03
US8982960B2 (en) 2015-03-17
JP6105011B2 (ja) 2017-03-29
JP6370960B2 (ja) 2018-08-08
EP2679009B1 (en) 2020-07-08
JP6141917B2 (ja) 2017-06-07
SI2679009T1 (sl) 2020-11-30
EP2679009A1 (en) 2014-01-01
BR112013021617A2 (pt) 2020-09-29
HUE051435T2 (hu) 2021-03-01
CA2830381C (en) 2016-05-17
CA2828406C (en) 2016-07-19
CA2828406A1 (en) 2012-08-30
US8964853B2 (en) 2015-02-24
WO2012116090A1 (en) 2012-08-30
MY166573A (en) 2018-07-17
US20150117555A1 (en) 2015-04-30
JP2016026449A (ja) 2016-02-12
MY167114A (en) 2018-08-10
RU2013143011A (ru) 2015-03-27
EP2679008B1 (en) 2020-07-08
RU2579688C2 (ru) 2016-04-10
JP5897609B2 (ja) 2016-03-30
DK2679009T3 (da) 2020-08-03
KR101581098B1 (ko) 2015-12-29
US9258563B2 (en) 2016-02-09
ES2816423T3 (es) 2021-04-05
AU2012220639A1 (en) 2013-10-03
EP3687170A1 (en) 2020-07-29
RU2584961C2 (ru) 2016-05-20
KR101788948B1 (ko) 2017-10-20
EP3687171A1 (en) 2020-07-29
CN103380621B (zh) 2017-05-10
HUE051433T2 (hu) 2021-03-01
CN103404142B (zh) 2018-06-01
UA110637C2 (uk) 2016-01-25
CN103380621A (zh) 2013-10-30
CN103404142A (zh) 2013-11-20
ZA201307111B (en) 2018-12-19
CN103477639A (zh) 2013-12-25
KR20130129439A (ko) 2013-11-28
KR20150058528A (ko) 2015-05-28
US20120213291A1 (en) 2012-08-23
JP2014511613A (ja) 2014-05-15
ES2824831T3 (es) 2021-05-13
JP2016006985A (ja) 2016-01-14
US20120213292A1 (en) 2012-08-23
US20120213293A1 (en) 2012-08-23

Similar Documents

Publication Publication Date Title
AU2012220639B2 (en) Multi-metric filtering
KR20130070636A (ko) 다중-필터 적응형 필터링을 위한 필터 디스크립션 시그널링
IL227994A (en) Multi-metric filtering

Legal Events

Date Code Title Description
FG Grant or registration