ES2905572T3 - Método y aparato para filtración de imagen con coeficientes multiplicadores adaptativos - Google Patents

Método y aparato para filtración de imagen con coeficientes multiplicadores adaptativos Download PDF

Info

Publication number
ES2905572T3
ES2905572T3 ES18713685T ES18713685T ES2905572T3 ES 2905572 T3 ES2905572 T3 ES 2905572T3 ES 18713685 T ES18713685 T ES 18713685T ES 18713685 T ES18713685 T ES 18713685T ES 2905572 T3 ES2905572 T3 ES 2905572T3
Authority
ES
Spain
Prior art keywords
image
prediction
coefficients
filter
multiplier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES18713685T
Other languages
English (en)
Inventor
Anand Kotra
Zhijie Zhao
Jianle Chen
Semih Esenlik
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2905572T3 publication Critical patent/ES2905572T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • 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/1887Methods 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 variable length codeword
    • 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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

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

Abstract

Un aparato para filtrar una serie de muestras (115; 215) de una imagen utilizando un filtro de bucle (120; 220) con coeficientes multiplicadores adaptativos representados por números enteros, el aparato que comprende circuitos de procesamiento que están configurados para determinar el valor de cada coeficiente multiplicador del filtro de bucle (120; 220) a fin de estar dentro de un conjunto de valores permitidos de manera que la representación binaria del valor absoluto de cada coeficiente multiplicador con un número predeterminado L de dígitos incluya al menos un "cero", y en donde la representación binaria es del bit mas significativo al bit menos significativo en orden, y filtrar el conjunto de muestras (115;215) de una imagen con el filtro de bucle (120; 220); en donde la representación binaria del valor absoluto de cada coeficiente multiplicador incluye como máximo dos "unos".

Description

DESCRIPCION
Método y aparato para filtración de imagen con coeficientes multiplicadores adaptativos
Campo técnico
Las modalidades de la invención se refieren al campo del procesamiento de imagen, por ejemplo imagen de video y/o codificación de imagen fija. Se proporcionan nuevos métodos y aparatos para filtración de imagen con un filtro que tiene coeficientes de filtro multiplicador adaptativo.
Antecedentes de la invención
La codificación de video (codificación y decodificación de video) se utiliza en un amplio rango de aplicaciones de video digital, por ejemplo difusión de TV digital, transmisión de video sobre internet y redes móviles, aplicaciones de conversación en tiempo real tales como chat de video, video conferencia, discos DVD y Blu-ray, adquisición de contenido de video y sistemas de edición, y aplicaciones de videocámaras de seguridad.
Desde el desarrollo del enfoque de codificación de video híbrido basado en bloque en la norma H.261 en 1990, se han desarrollado nuevas técnicas de codificación de video y herramientas y ha formado la base para nuevas normas de codificación de video. Uno de los objetivos de la mayoría de las normas de codificación de video era lograr una reducción de tasa de bits en comparación con su predecesor sin sacrificar la calidad de imagen. Las normas de codificación de video adicionales comprenden video MPEG-1, video MPEG-2, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de video avanzada (AVC), ITU-T H.265, Codificación de Video de alta eficiencia (HEVC), y extensiones, por ejemplo, escalabilidad y/o extensiones tridimensionales (3D), de estas normas. En la figura 1 se proporciona un diagrama en bloques esquemático que ilustra una modalidad de un sistema de codificación 300, la cual se describirá en mayor detalle más adelante.
La figura 2 es un diagrama en bloques que muestra una estructura ejemplar de un codificador de video, en el cual puede implementarse la invención y la cual se describirá en mayor detalle también más adelante.
En particular, el codificador ilustrado 100 incluye un “filtro de bucle” 120, en donde puede aplicarse la operación de filtración de acuerdo con la invención. Sin embargo, de manera más general, la operación de filtración es aplicable en otras ubicaciones del códec, por ejemplo, en un filtro de interpolación. De manera aún más general, la invención aplica no solamente al video sino también a la codificación de imagen fija.
La figura 3 es un diagrama en bloques que muestra una estructura ejemplar de un decodificador de video, en el cual puede implementarse la invención y el cual también se describirá en mayor detalle más adelante. Específicamente, la invención es aplicable, por ejemplo, en el filtro de bucle 220.
En lo siguiente, se resumirá alguna información de antecedente acerca de la filtración adaptativa.
La filtración adaptativa para codificación de video sirve para reducir el error cuadrático medio entre originales y muestras decodificadas utilizando un filtro adaptativo basado en Wiener. En particular, el Filtro de bucle adaptativo (ALF) propuesto está ubicado en la última etapa de procesamiento para cada imagen y puede considerarse como una herramienta para atrapar y fijar objetos de etapas previas. Los coeficientes del filtro adecuados se determinan por medio del codificador y explícitamente señalizados al decodificador.
Información general acerca de la filtración adaptativa puede encontrarse en el artículo “Adaptive Loop Filtering for Video Coding”, por Chia-Yang Tsai, Ching-Yeh Chen, Tomoo Yamakage, In Suk Chong, Yu-Wen Huang, Chih-Ming Fu, Takayuki Itoh, Takashi Watanabe, Takeshi Chujoh, Marta Karczewicz, y Shaw-Min Lei, publicado en: IEEE Journal of Selected Topics in Signal Processing (Volumen: 7, Emisión: 6, Dic. 2013).
La descripción que se proporciona en el documento anterior describe una implementación específica de operación de filtración con coeficientes de filtro adaptativo. Los principios generales de la operación pueden describirse como sigue. Generalmente, la ecuación de filtración se lee:
Figure imgf000002_0001
Aquí, R(i,j) es una muestra en una trama de imagen antes de la filtración en la coordenada (i,j). R'(i,j) es una muestra en una trama de imagen después de la filtración. f(k,l) son los coeficientes del filtro.
Un ejemplo del filtro kernel se describe en la figura 4. En este ejemplo C20 es la coordenada central del filtro kernal (k=0, l=0), y L es igual a 8.
En el ejemplo el filtro kernel es simétrico alrededor del centro. Esto puede no ser cierto de manera general.
En caso de utilizar aritmética entera, la ecuación de filtración puede escribirse como:
Figure imgf000003_0001
Aquí, N es un número de una conmutación de bit de la salida, es decir la salida está dividida por medio de un factor de normalización. En particular, N puede estar predefinido. El “desplazamiento” es un escalar para compensar por pérdida en la aritmética entera. En el caso de una conmutación de bit por N, el desplazamiento puede ser 2(N-1). En la ecuación anterior los coeficientes de filtración f(k,l) pueden únicamente tener valores que sean enteros y no números fraccionales. La implementación de la ecuación de filtración de acuerdo con la aritmética entera es importante con el fin de asegurar las implementaciones precisas en el hardware. La operación de conmutación derecha “>>N” tiene el efecto de división por 2N seguido por una operación de redondeo hacia abajo.
Generalmente (pero no necesariamente), la siguiente ecuación es válida si no se desea cambio en el nivel de iluminación promedio.
Figure imgf000003_0002
En el codificador, los coeficientes del filtro son estimados reduciendo el valor esperado del error entre el original y el pixel filtrado:
Figure imgf000003_0003
En la ecuación anterior, O(i,j) denota la muestra de la imagen original.
La figura 5 muestra algunas formas de filtro ejemplar típico para filtros adaptativos. El dibujo de la izquierda muestra un filtro de diamante de 5X5 (filtro de 13 derivaciones con 7 coeficientes únicos), el dibujo medio - un filtro de diamante de 7X7 (filtro de 25 derivaciones con 13 coeficientes únicos), y el dibujo a la derecha - un filtro de diamante 9X9 (filtro de 41 derivaciones con 12 coeficientes únicos).
El término filtración “adaptativa” se refiere al hecho de que el proceso de filtración puede ajustarse por medio del codificador. Esto se refiere, por ejemplo, a la forma del filtro, el tamaño del filtro, el número de coeficientes de filtración, y los valores de coeficientes de filtración. Estos datos, también conocidos como “indicios de filtro” son señalizados al decodificador.
La filtración adaptativa implica el siguiente problema, cuando se aplica a realizaciones de filtración que incluyen multiplicación, es decir, en donde los coeficientes de filtro son también llamados coeficientes multiplicadores o multiplicativos. En otras palabras, el siguiente problema el cual la invención pretende resolver se refiere a filtración con coeficientes de filtro adaptativo, en donde los coeficientes del filtro que se utilizan en operación de multiplicación pueden ser adaptados de manera individual (modificados). A este respecto, individualmente significa para cada imagen (imagen, trama), y/o para cada pixel, y/o cada coeficiente.
El problema es que la implementación de la operación de multiplicación es costosa, especialmente en implementaciones de hardware dedicado. La aplicación de filtro requiere un número comparativamente grande de multiplicación de operaciones de filtración (por ejemplo, 41 multiplicaciones por pixel en el caso de un filtro en forma de diamante 9x9, como se muestra en la figura 4).
Esto se ilustra en mayor detalle más adelante.
Suponga que se quiere multiplicar dos enteros de ocho bits sin señalizar. El coeficiente de filtro es C y el pixel de muestra es A.
El proceso de multiplicación puede descomponerse en 8 multiplicaciones de un bit, cada una de las cuales puede implementarse como una operación de cambio de bit en aritmética binaria, y 7 operaciones de suma como se muestra más adelante. Por tanto, aproximadamente 1 multiplicación es equivalente a 7 sumas.
El problema es que el proceso de multiplicación requiere una gran cantidad de cálculo. Por tanto, es costoso implementar en hardware dedicado.
Figure imgf000004_0001
Aquí, el coeficiente C de filtro no señalizado de 8 bits se muestra en representación binaria, donde C[0] es el bit menos significativo del coeficiente C y C[7] es el bit más significativo. De manera similar A[7], A[6], ...A[0] son los bits que corresponden al bit más significativo al bit menos significativo en orden.
La operación P = C*A en aritmética binaria se demostró y el resultado se muestra en la línea más baja.
En el ejemplo de la figura 4, el filtro kernel incluye 41 derivaciones de filtro, lo que significa que con el fin de procesar una muestra de pixel, se necesitan 41 operaciones de multiplicación.
Se hace notar que la invención y el problema antes descrito que esta resuelve están específicamente relacionados a filtración adaptativa con coeficientes de filtro multiplicador. El problema no aplica a filtros fijos, y, en particular, a operaciones de filtración que emplean múltiples filtros fijos.
Un ejemplo para emplear múltiples filtros fijos es la filtración por interpolación, para interpolación en posiciones de pixel fraccionales en la inter-predicción, lo cual se ilustra en la figura 6.
Muchos códecs conocidos emplean filtración por interpolación utilizando filtros de interpolación fijos. Aunque los coeficientes de filtro están fijos por un filtro, existen múltiples filtros para diferentes posiciones fraccionales (posiciones de medio pixel y cuarto de pixel en el dibujo). En el ejemplo, todo el conjunto de filtros se adapta con base en el vector de movimiento, pero los coeficientes de filtro no están adaptados individualmente.
En la figura, los grandes redondeos corresponden a posiciones de muestra reales en una imagen, y redondeos más pequeños son las posiciones fraccionales que son generados por medio de aplicación de la operación de filtración por interpolación. En el ejemplo específico, existen 3 posiciones fraccionales (cuarto izquierdo pel, medio pel y cuarto derecho pel) posiciones entre dos posiciones de muestra de imagen real. En el lado izquierdo del dibujo, se muestra un filtro de interpolación aplicado para interpolar posiciones de medio pixel (medio-pel). El lado derecho del dibujo ilustra un filtro de interpolación que va a utilizarse para posiciones de pixel de cuarto (cuarto-pel). Aunque estos filtros son diferentes entre sí, cada filtro de interpolaión, es un filtro fijo. Como se indicó, el ejemplo de la figura 6 se ha proporcionado para propósitos ilustrativos únicamente y no forma parte de la invención.
El documento US 2012/0183081 A1 describe un filtro de bucle paramétrico que usa un conjunto de filtros fijos para eliminar o redicir ruidos y objetos introducidos durante la codificación de video. Un umbral puede establecerse para forzar todos los coeficientesd e filtro que sean menores que este umbral a cero. Similarmente el documento EP 1626 499 A1 describe redondear coeficientes de filtro que tienen valores menores que un valor máximo a cero y usan un circuito de cambio de bit en lugar de multiplicadores. El documento "Efficient implementation of adaptive interpolation filters for low complexity video coding" de K. Ugur y otros, IEEE TRANSACTIONS ON CONSUMER ELECTRONICS, IEEE SERVICE CENTER, NEWYORK, NY, US, 1 de febrero de 2009, vol. 55, núm. 1, páginas 257 - 263, describe métodos para implementar técnicas de filtración de interpolación adaptiva para codificación de video. El documento "Coding of coefficients of two-dimensional non-separable adaptive Wiener interpolation filter" de Y. Vatis y otros, VISUAL COMMUNICATIONS AND IMAGE PROCESSING; 20-1-2004 - 20-1-2004; SAN JOSE, 12 de julio de 2005, vol. 5960, páginas 623 - 631, describe técnicas de compresión de video que incluyen codificar errores de predicción de coeficiente de filtro.
La invención tiene como objetivo proporcionar un concepto mejorado de filtración adaptativa multiplicativa, el cual puede simplificar la operación de multiplicación y reducir el esfuerzo de operación de multiplicación.
Resumen
Las modalidades de la invención se definen por medio de las características de reivindicaciones independientes e implementaciones ventajosas adicionales de las modalidades por medio de las características de las reivindicaciones dependientes.
De acuerdo con un primer aspecto de la invención, se proporciona un aparato para filtración de una serie de muestras de una imagen utilizando un filtro con coeficientes multiplicadores adaptativos representados por números enteros de acuerdo con la reivindicación independiente 1.
De acuerdo con un segundo aspecto de la invención, se proporciona un método para filtración de una serie de muestras de una imagen utilizando un filtro con coeficientes multiplicadores adaptativos representados por números enteros de acuerdo con la reivindicación independiente 6.
De acuerdo con la presente divulgación, una serie de muestras de una imagen puede, por ejemplo, ser una muestra de una señal de video o señal de imagen fija. Los circuitos de procesamiento pueden implementarse mediante cualquier combinación de software y/o hardware. El conjunto de valores permitidos puede, en particular, ser un conjunto predeterminado de valores permitidos. Generalmente, la invención también es aplicable a otros conjuntos de muestras de señal que imágenes, por ejemplo señales que incluyen datos de audio.
Es el enfoque particular de la invención restringir los valores que pueden ser asumidos por los coeficientes del filtro de un filtro de multiplicación adaptativa de manera tal que la operación de multiplicación es simplificada. Específicamente, los valores permisibles de los coeficientes del filtro están restringidos de manera que dentro de un número predeterminado de dígitos binarios para expresar los valores absolutos, únicamente se permite un número limitado de “unos”. Esto permite la simplificación de las operaciones de multiplicación para filtración y por tanto hace que la operación de filtración sea más eficiente.
Como se mostrará más adelante, mientras más pequeño sea el número de “unos” permitidos en un número global predeterminado de dígitos binarios, es mejor la ganancia de eficiencia en la realización de la operación de filtración. Por ejemplo, puede lograrse una mejor ganancia de eficiencia si cualquier valor que pueda asumirse por medio de los valores de coeficiente incluye únicamente hasta un “1” único, es decir a lo mucho un “1”.
De acuerdo con modalidades, el valor absoluto más alto del conjunto de valores permitidos se restringe a un valor máximo predeterminado Nmax.
De acuerdo con la invención, la representación binaria del valor absoluto de cada coeficiente multiplicador incluye como máximo dos “unos”. De manera más específica, de acuerdo con una modalidad, la representación binaria del valor absoluto de cada coeficiente multiplicador incluye como máximo un “uno”. Como se indicó arriba, y como se describirá más adelante en detalle, la simplificación en la realización de la operación de multiplicación para filtración y por tanto la ganancia y eficiencia de procesamiento es mayor cuanto más ceros (por tanto: menos unos) hay en la representación binaria de los valores de coeficiente permitidos. Por tanto el caso más eficiente es cuando existe solo un “uno”, considerando que, por ejemplo, dos “unos” permitidos todavía brindan un buen resultado. Por supuesto, lo que es benéfico depende en gran medida de los detalles de la situación, y, en particular, para filtros grandes, también que tengan tres o más “unos” puede todavía ser benéfico.
De manera más general, el conjunto de valores permitidos es aplicable a por lo menos un coeficiente multiplicador del filtro.
De acuerdo con la invención, el conjunto de valores permitidos se aplica a coeficientes multiplicadores del filtro.
De acuerdo con un ejemplo ilusrtrativo, los coeficientes multiplicadores están agrupados en al menos dos grupos y los coeficientes multiplicadores de uno de los grupos están restringidos al conjunto de valores permitidos. Los coeficientes multiplicadores en el otro grupo o grupos pueden, por ejemplo, asumir todos los valores dentro de un rango predeterminado, o pueden restringirse de acuerdo con otras reglas predeterminadas. De manera más específica, los coeficientes multiplicadores de otro de los grupos, por ejemplo, son permitidos para asumir todos los valores dentro de un rango definido por un máximo predeterminado del valor absoluto.
De acuerdo con modalidades, un conjunto de muestras de una imagen significa una serie de muestras de una imagen de video. De manera más específica, el aparato puede estar configurado para adaptar de manera individual los coeficientes multiplicadores para cada imagen y cada pixel.
De acuerdo con un aspecto particular adicional de la invención, se proporciona un aparato para codificar un conjunto actual de muestras de una imagen que incluye una pluralidad de pixeles. El aparato comprende un codificador con un decodificador para reconstruir la serie actual y un aparato de acuerdo con el primer aspecto de la invención para filtración del conjunto reconstruido.
De acuerdo con modalidades, dicho aparato de codificación comprende además circuitos de procesamiento los cuales están configurados para mapear los valores de los coeficientes multiplicadores a palabras código binario e incluir las palabras código en un flujo de bits para ser transmitido a un aparato de decodificación.
De manera más específica, la longitud de las palabras código depende del número de distintos valores de coeficientes multiplicadores. En otras palabras, existen tantas palabras código como valores de coeficiente de filtro posibles. La palabra código para el mapeo de valor (el cual es un mapeo de uno-a-uno) puede ser un mapeo fijo, o puede cambiar dependiendo de la información lateral señalizada.
De acuerdo con modalidades, los circuitos de procesamiento están además configurados para llevar a cabo una predicción de los coeficientes multiplicadores del filtro y determinar coeficientes multiplicadores residuales al comparar los valores ya determinados con los valores esperados que resultan de la predicción. El mapeo a palabras código binario se aplica entonces a los coeficientes multiplicadores residuales. En este caso, la información de control de predicción puede además ser incluida en el flujo de bits a fin de que un aparato de decodificación que recibe el flujo de bits tenga en cuenta el método de predicción aplicado y pueda reconstruir los coeficientes multiplicadores del filtro a partir de los coeficientes multiplicadores residuales codificados. De manera alternativa el método de predicción aplicado puede predefinirse, por lo tanto aplicarse en la misma manera en el codificador y decodificador sin información lateral transmitida. Los métodos de predicción posibles pueden incluir pero no limitarse a predicción utilizando predictores de filtro predefinidos y predicción de coeficientes de filtro señalizados previamente. Debido a que los valores de coeficientes de filtro residuales, que expresan la diferencia entre un coeficiente de filtro actual y el coeficiente de filtro esperado respectivo, son generalmente más pequeños en valor absoluto entonces los coeficientes reales, la cantidad y por tanto el tamaño de las palabras código puede ser más pequeño, lo cual reduce adicionalmente la información que se va a señalizar al decodificador.
Alternativamente, el mapeo de coeficientes multiplicadores a palabras código para inclusión en el flujo de bits puede llevarse a cabo en los coeficientes multiplicadores determinados de acuerdo con el primer aspecto de la invención, sin llevar a cabo el procesamiento de predicción.
De acuerdo con un aspecto todavía adicional de la invención, se proporciona un aparato para decodificar un conjunto actual codificado de muestras de una imagen que incluye una pluralidad de pixeles. El aparato comprende un decodificador para reconstruir la serie actual y un aparato de acuerdo con el primer aspecto de la invención para filtración del conjunto reconstruido.
De acuerdo con modalidades, los circuitos de procesamiento del aparato conforme al primer aspecto de la invención están además configurados para obtener coeficientes multiplicadores a partir de palabras código binarias incluidas en un flujo de bits recibido aplicando una operación de mapeo.
En particular, los coeficientes multiplicadores obtenidos pueden ser los coeficientes de filtro que se van a utilizar para filtración. Alternativamente, los coeficientes multiplicadores obtenidos pueden ser coeficientes multiplicadores residuales que representan la diferencia entre los valores de coeficiente reales y coeficientes multiplicadores esperados de conformidad con un esquema de predicción. El esquema de predicción puede ser indicado por medio de información de control de predicción incluida adicionalmente en el flujo de bits recibido. En ese caso, los circuitos de procesamiento están además configurados para determinar los valores de los coeficientes del filtro reconstruyéndolos a partir de coeficientes multiplicadores residuales obtenidos e información de control de predicción. Alternativamente, el esquema de predicción (método de predicción) puede predefinirse y por tanto aplicarse en la misma manera en el codificador y decodificador sin ninguna información de control de predicción transmitida. Los circuitos de procesamiento determinan entonces los valores de los coeficientes de filtro reconstruyéndolos a partir de coeficientes multiplicadores residuales obtenidos.
De acuerdo con modalidades, la determinación por medio de la cual los circuitos de procesamiento incluyen además llevar a cabo una determinación respecto a si el valor determinado de cada coeficiente multiplicador, obtenido directamente del flujo de bits recibido por medio de la operación de mapeo o mediante la reconstrucción de los coeficientes multiplicadores residuales obtenidos, está o no dentro del conjunto de valores permitidos, y, en caso de no estarlo, convertir el valor determinado al valor más cercano que está dentro del conjunto de valores permitidos.
De este modo, se garantiza que los coeficientes del filtro que son aplicados en las muestras de imagen reconstruida obedecen las reglas de acuerdo con la invención.
Detalles de una o más modalidades se establecen en los dibujos acompañantes y la descripción más adelante. Otras características, objetivos, y ventajas serán aparentes a partir de la descripción, dibujos, y reivindicaciones.
Breve descripción de las dibujos
En lo siguiente, se describen modalidades de la invención en mayor detalle con referencia a las figuras adjuntas y dibujos, en los cuales:
La figura 1 es un diagrama en bloques que muestra un ejemplo de un sistema de codificación de video configurado para implementar modalidades de la invención;
La figura 2 es un diagrama en bloques que muestra un ejemplo de un codificador de video configurado para implementar modalidades de la invención;
La figura 3 es un diagrama en bloques que muestra una estructura de ejemplo de un decodificador de video configurado para implementar modalidades de la invención;
La figura 4 muestra un ejemplo de un filtro kernel al cual se puede aplicar la invención;
La figura 5 muestra ejemplos de formas de filtro típicas para filtros adaptativos a los cuales puede se puede aplicar la invención;
La figura 6 ilustra un ejemplo de múltiples filtros fijos que se van a aplicar en la filtración de interpolación, como un ejemplo comparativo;
La figura 7 ilustra un ejemplo de implementación particular de una modalidad de la invención;
La figura 8A ilustra un procesamiento lateral de codificador ejemplar para codificar y señalizar los coeficientes del filtro;
La figura 8B ilustra un procesamiento lateral de decodificador ejemplar para decodificar y reconstruir coeficientes del filtro;
La figura 9 ilustra un ejemplo de implementación particular de otra modalidad de la invención;
La figura 10 ilustra un ejemplo de implementación particular de todavía otra modalidad de la invención y sirve para una ilustración del beneficio logrado por medio de la invención; y
La figura 11 ilustra un ejemplo adicional del filtro kernel al cual se puede aplicar la invención.
En los dibujos, signos de referencia idénticos se refieren a características idénticas o al menos funcionalmente equivalentes.
Descripción detallada de las modalidades
En la siguiente descripción, se hace referencia a las figuras acompañantes, las cuales forman parte de la divulgación, y las cuales muestran, por medio de ilustración, aspectos específicos de modalidades de la invención o aspectos específicos en los cuales las modalidades de la invención pueden utilizarse. Se entiende que las modalidades de la invención pueden utilizarse en otros aspectos y comprenden cambios estructurales o lógicos no representados en la figuras. La siguiente descripción detallada, por tanto, no debe tomarse en un sentido limitante, y el alcance de la invención se define por medio de las reivindicaciones adjuntas.
Por ejemplo, se entiende que una divulgación en relación con un método descrito también puede ser cierta para un dispositivo o sistema correspondiente configurado para llevar a cabo el método y viceversa. Por ejemplo, si uno o una pluralidad de pasos del método específico se describen, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar el paso descrito o la pluralidad de pasos del método (por ejemplo, una unidad que lleve a cabo uno o una pluralidad de pasos, o una pluralidad de unidades cada una llevando a cabo uno o más de la pluralidad de pasos), incluso si dicha una o más unidades no están explícitamente descritas o ilustradas en las figuras. De esta manera, por ejemplo, si un aparato específico se describe con base en una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir un paso para llevar a cabo la funcionalidad de una o una pluralidad de unidades (por ejemplo, un paso que lleve a cabo la funcionalidad de una o una pluralidad de unidades, o una pluralidad de pasos cada uno llevando a cabo la funcionalidad de una o más de la pluralidad de unidades), incluso si dicho uno o pluralidad de pasos no están explícitamente descritos o ilustrados en las figuras. Además, se entiende que las características de las diversas modalidades ejemplares y/o aspectos descritos en la presente pueden ser combinados entre sí, a menos que específicamente se observe de otra manera.
La codificación de video se refiere típicamente al procesamiento de una secuencia de imágenes, las cuales forman el video o secuencia de video. En lugar del término imagen los términos cuadro o imagen pueden utilizarse como sinónimos en el campo de la codificación de video. La codificación de video comprende dos partes, codificación de video y decodificación de video. La codificación de video se lleva a cabo en el lado de origen, típicamente comprendiendo procesar (por ejemplo, por medio de compresión) las imágenes de video original para reducir la cantidad de datos requeridos para representar las imágenes de video (para almacenamiento más eficiente y/o transmisión). La decodificación de video se lleva a cabo en el lado de destino y típicamente comprende procesamiento inverso comparado con el codificador para reconstruir las imágenes de video. Las modalidades que hacen referencia a “codificación” de imágenes de video (o imágenes en general, como se explicará más adelante) se entenderá que se refieren a ambas, “codificación” y “decodificación” de imágenes de video. La combinación de la parte de codificación y la parte de decodificación también es referida como CODEC (COdificación y DECodificación).
En caso de codificación de video sin pérdida, las imágenes de video original pueden reconstruirse, es decir las imágenes de video reconstruidas tienen la misma calidad que las imágenes de video original (asumiendo que no hay pérdida de transmisión u otra pérdida de datos durante el almacenamiento o transmisión). En el caso de codificación de video con pérdida, se lleva a cabo compresión adicional, por ejemplo por medio de cuantificación, para reducir la cantidad de datos que representan las imágenes de video, las cuales no pueden ser completamente reconstruidas en el decodificador, es decir la calidad de las imágenes de video reconstruidas es más baja o peor comparada con la calidad de las imágenes de video originales.
Diversas normas de codificación de video desde H.261 pertenecen al grupo de “codecs de video híbrido con pérdida” (es decir combinan predicción espacial y temporal en el dominio de muestra y codificación de transformada 2D para aplicar cuantificación en el dominio de transformada). Cada imagen de una secuencia de video está típicamente dividida en un conjunto de bloques que no se traslapan y la codificación típicamente se lleva a cabo en un nivel de bloque. En otras palabras, en el codificador el video típicamente es procesado, es decir codificado, en un nivel bloque (bloque de video), por ejemplo utilizando predicción espacial (intra imagen) y predicción temporal (inter imagen) para generar un bloque de predicción, sustrayendo el bloque de predicción del bloque actual (bloque actualmente procesado/que se va a procesar) para obtener un bloque residual, transformando el bloque residual y cuantificando el bloque residual en el dominio de transformada para reducir la cantidad de datos que se van a transmitir (compresión), mientras que en el decodificador el procesamiento inverso comparado con el codificador se aplica al bloque codificado o comprimido para reconstruir el bloque actual para representación. Además, el codificador duplica el bucle de procesamiento del decodificador de manera que ambos generarán predicciones idénticas (por ejemplo, intra- e inter­ predicciones) y/o reconstrucciones para procesamiento, es decir codificación, de los bloques subsecuentes.
Debido a que el procesamiento de imagen de video (también referido como procesamiento de imagen en movimiento) y el procesamiento de imagen fija (el término procesamiento comprende codificación), comparten muchos conceptos y tecnologías o herramientas, en lo siguiente el término “representación” o “ imagen” y equivalente el término “datos de representación” o “datos de imagen” se utilizan para hacer referencia a una imagen de video de una secuencia de video (como se explicó arriba) y/o a una imagen fija para evitar repeticiones innecesarias y distinciones entre imágenes de video e imágenes fijas, donde no sea necesario. En el caso que la descripción se refiera a representaciones fijas (o imágenes fijas) únicamente, se utilizará el término “imagen fija”.
En las siguientes modalidades de un codificador 100, un decodificador 200 y un sistema de codificación 300 se describen con base en las figuras 1 a 3 (antes de describir modalidades de la invención en mayor detalle con base en las figuras 7 a 9).
La figura 1 es un diagrama en bloques esquemático o conceptual que ilustra una modalidad de un sistema de codificación 300, por ejemplo un sistema de codificación de imagen 300, en donde el sistema de codificación 300 comprende un dispositivo fuente 310 configurado para proporcionar datos codificados 330, por ejemplo una imagen codificada 330, por ejemplo, a un dispositivo de destino 320 para decodificar los datos codificados 330.
El dispositivo fuente 310 comprende un codificador 100 o una unidad de codificación 100, y puede adicionalmente, es decir opcionalmente, comprender una fuente de imagen 312, una unidad de pre-procesamiento 314, por ejemplo, una unidad de pre-procesamiento de imagen 314, y una interfaz de comunicación o unidad de comunicación 318.
La fuente de imagen 312 puede comprender o ser cualquier tipo de dispositivo de captura de imagen, por ejemplo para capturar una imagen del mundo real, y/o cualquier tipo de un dispositivo de generación de imagen, por ejemplo un procesador de gráficas por ordenador para generar una imagen animada computarizada, o cualquier tipo de dispositivo para obtener y/o proporcionar una imagen del mundo real, una imagen animada por ordenador (por ejemplo, un contenido de pantalla, una imagen de realidad virtual (VR) y/o cualquier combinación de los mismos (por ejemplo, una imagen de realidad aumentada (AR). En lo siguiente, todos estos tipos de representaciones o imágenes y cualquier otro tipo de representación o imagen será referida como “representación” “imagen” o “datos de representación” o “datos de imagen”, a menos que específicamente se describa de otra manera, aunque las explicaciones anteriores en relación con los términos “representación” o “ imagen” que cubren “imágenes de video” e “imágenes fijas” resultan todavía ciertas, a menos que explícitamente se especifique de manera diferente.
Una imagen (digital) es o puede ser considerada como un conjunto o matriz bi-dimensional de muestras con valores de intensidad. Una muestra en el conjunto también puede ser referida como pixel (forma corta de elemento de imagen) o un pel. El número de muestras en dirección horizontal y vertical (o eje) del arreglo o imagen define el tamaño y/o resolución de la imagen. Para representación de color, típicamente se emplean tres componentes de color, es decir la imagen puede ser representada o incluir tres conjuntos de muestras. En el formato RGB o espacio de color una imagen comprende un conjunto de muestra rojo, verde y azul correspondiente. Sin embargo, en la codificación de video cada pixel típicamente está representado en un formato de luminancia/crominancia o espacio de color, por ejemplo, YCbCr, el cual comprende un componente de luminancia indicado por Y (algunas veces también L se utiliza en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente de luminancia Y (o para abreviar luma) representa el brillo o intensidad de nivel de gris (por ejemplo, como en una imagen de escala de grises), mientras que los dos componentes de crominancia (o para abreviar croma) Cb y Cr representan la cromaticidad o componentes de información de color. Por consiguiente, una imagen en el formato YCbCr comprende un arreglo de muestras de luminancia de los valores de muestra de luminancia (Y), y dos arreglos de muestras de crominancia de los valores de crominancia (Cb y Cr). Las imágenes en el formato RGB pueden convertirse o transformarse en el formato YCbCr y viceversa, el proceso también se conoce como transformación o conversión de color. Si una imagen es monocromática, la imagen puede comprender únicamente un arreglo de muestras de luminancia.
La fuente de imagen 312 puede ser, por ejemplo una cámara para capturar una imagen, una memoria, por ejemplo una memoria de imagen, comprendiendo o almacenando una imagen previamente capturada o generada, y/o cualquier tipo de interfaz (interna o externa) para obtener o recibir una imagen. La cámara puede ser, por ejemplo, una cámara integrada o local integrada en el dispositivo fuente, la memoria puede ser una memoria integrada o local, por ejemplo integrada en el dispositivo fuente. La interfaz puede ser, por ejemplo, una interfaz externa para recibir una imagen de una fuente de video externa, por ejemplo un dispositivo de captura de imagen externo como una cámara, una memoria externa, o un dispositivo de generación de imagen externo, por ejemplo un procesador de gráficas por ordenador externo, ordenador o servidor. La interfaz puede ser cualquier tipo de interfaz, por ejemplo, una interfaz inalámbrica o cableada, una interfaz óptica, de acuerdo con cualquier protocolo de interfaz estandarizado o de propiedad. La interfaz para obtener los datos de imagen 313 puede ser la misma interfaz que o una parte de la interfaz de comunicación 318.
Las interfaces entre unidades dentro de cada dispositivo incluyen conexiones de cable, interfaces USB. Las interfaces de Comunicación 318 y 322 entre el dispositivo fuente 310 y el dispositivo de destino 320 incluyen conexiones de cable, interfaces USD, interfaces de radio.
A diferencia de la unidad de pre-procesamiento 314 y el procesamiento realizado por la unidad de pre-procesamiento 314, los datos de imagen o imagen 313 también pueden ser referidos como una imagen sin procesar o datos de imagen sin procesar 313.
La unidad de pre-procesamiento 314 está configurada para recibir los datos de imagen (sin procesar) 313 y llevar a cabo el pre-procesamiento en los datos de imagen 313 para obtener una imagen pre-procesada 315 o datos de imagen pre-procesada 315. El pre-procesamiento realizado por la unidad de pre-procesamiento 314 puede, por ejemplo, comprender recorte, conversión de formato de color (por ejemplo, de RGB a YCbCr), corrección de color, o eliminación de ruido.
El codificador 100 está configurado para recibir los datos de imagen pre-procesados 315 y proporcionar datos de imagen codificados 171 (mayores detalles se describirán, por ejemplo con base en la figura 2).
La interfaz de comunicación 318 del dispositivo fuente 310 puede estar configurada para recibir los datos de imagen codificados 171 y transmitir directamente a otro dispositivo, por ejemplo, al dispositivo de destino 320 o cualquier otro dispositivo, para almacenamiento o reconstrucción directa, o procesar los datos de la imagen codificada 171 para respectivamente almacenar los datos codificados 330 y/o transmitir los datos codificados 330 a otro dispositivo, por ejemplo el dispositivo de destino 320 o cualquier otro dispositivo para decodificación o almacenamiento.
El dispositivo de destino 320 comprende un decodificador 200 o unidad de decodificación 200, y puede adicionalmente, es decir opcionalmente, comprender una unidad de comunicación 322 o interfaz de comunicación, una unidad de post­ procesamiento 326 y un dispositivo de visualización 328.
La interfaz de comunicación 322 del dispositivo de destino 320 está configurada para recibir los datos de la imagen codificada 171 o los datos codificados 330, por ejemplo, directamente del dispositivo fuente 310 o de cualquier otra fuente, por ejemplo, una memoria, por ejemplo una memoria de datos de imagen codificada.
La interfaz de comunicación 318 y la interfaz de comunicación 322 puede ser configurada para transmitir respectivamente recibir los datos de imagen codificados 171 o datos codificados 330 mediante un enlace de comunicación directa entre el dispositivo fuente 310 y el dispositivo de destino 320, por ejemplo, una conexión inalámbrica o cableada directa, incluyendo conexión óptica o mediante cualquier tipo de red, por ejemplo una red inalámbrica o cableada o cualquier combinación de las mismas, o cualquier tipo de red privada o pública, o cualquier tipo de combinación de las mismas.
La interfaz de comunicación 318, por ejemplo, puede ser configurada para empaquetar los datos de imagen codificados 171 en un formato apropiado, por ejemplo, paquetes, para transmisión sobre un enlace de comunicación o red de comunicación, o puede además comprender protección de pérdida de datos.
La interfaz de comunicación 322, que forma la contraparte de la interfaz de comunicación 318, por ejemplo, puede ser configurada para des-empaquetar los datos codificados 300 para obtener los datos de imagen codificados 171 y puede además estar configurada para llevar a cabo la protección de pérdida de datos y recuperación de pérdida de datos, por ejemplo, comprendiendo ocultamiento de error.
Ambas, la interfaz de comunicación 318 e interfaz de comunicación 322 pueden estar configuradas como interfaces de comunicación unidireccional como se indicó por medio de la flecha para los datos de imagen codificados 330 en la figura 1 apuntando del dispositivo fuente 310 al dispositivo de destino 320, o interfaces de comunicación bi-direccional, y pueden estar configuradas, por ejemplo, para enviar y recibir mensajes, por ejemplo, para configurar una conexión, para reconocer y/o re-enviar datos perdidos o retrasados incluyendo datos de imagen, e intercambiar cualquier otra información relacionada con el enlace de comunicación y/o transmisión de datos, por ejemplo, transmisión de datos de imagen codificados.
El decodificador 200 está configurado para recibir los datos de imagen codificados 171 y proporcionar datos de imagen decodificados 231 o una imagen decodificada 231 (mayores detalles se describirán, por ejemplo con base en la figura 9).
El post-procesador 326 del dispositivo de destino 320 está configurado para post-procesar los datos de imagen decodificados 231, por ejemplo la imagen decodificada 231, para obtener datos de imagen post-procesados 327, por ejemplo, una imagen post-procesada 327. El post-procesamiento realizado por la unidad de post-procesamiento 326 puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte, o re-muestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos de imagen decodificados 231 para exhibición, por ejemplo, por medio del dispositivo de visualización 328.
El dispositivo de visualización 328 del dispositivo de destino 320 está configurado para recibir los datos de imagen de post-procesamiento 327 para mostrar la imagen, por ejemplo, a un usuario o espectador. El dispositivo de visualización 328 puede ser o comprender cualquier tipo de pantalla para representar la imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Las pantallas pueden comprender, por ejemplo, tubos de rayos catódicos (CRT), pantallas de cristal líquido (LCD), pantallas de plasma, pantallas de diodos emisores de luz orgánica (OLED), o cualquier tipo de otra pantalla, tales como proyectores, pantallas holográficas, aparatos para generar hologramas.
Aunque la figura 1 representa el dispositivo fuente 310 y el dispositivo de destino 320 como dispositivos separados, las modalidades de dispositivos también pueden comprender ambos o ambas funcionalidades, el dispositivo fuente 310 o funcionalidad correspondiente y el dispositivo de destino 320 o funcionalidad correspondiente. En dichas modalidades el dispositivo fuente 310 o funcionalidad correspondiente y dispositivo de destino 320 o funcionalidad correspondiente pueden implementarse utilizando el mismo hardware y/o software o mediante hardware y/o software separado o cualquier combinación de los mismos.
Como será aparente para los expertos con base en la descripción, la existencia y (exacta) división de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo fuente 310 y/o dispositivo de destino 320 como se muestra en la figura 1 pueden variar dependiendo del dispositivo real y la aplicación.
En lo siguiente, se proporcionarán unos cuantos ejemplos no limitantes del sistema de codificación 300, el dispositivo fuente 310 y/o dispositivo de destino 320.
Varios productos electrónicos, tales como un teléfono inteligente, una Tablet o una cámara portátil con pantalla integrada, pueden verse como ejemplos para un sistema de codificación 300. Estos contienen un dispositivo de visualización 328 y la mayoría de ellos contienen una cámara integrada, es decir una fuente de imagen 312, también. Los datos de imagen tomados por la cámara integrada se procesan y visualizan. El procesamiento puede incluir codificación y decodificación de los datos de imagen internamente. Además, los datos de la imagen codificada pueden almacenarse en una memoria integrada.
Alternativamente, estos productos electrónicos pueden tener interfaces inalámbricas o cableadas para recibir datos de imagen de fuentes externas, tales como la internet o cámaras externas, o para transmitir los datos de imagen codificados a las pantallas externas o unidades de almacenamiento.
Por otra parte, los decodificadores no contienen una cámara integrada o una pantalla pero llevan a cabo el procesamiento de imagen de datos de imagen recibidos para visualización en un dispositivo de visualización externo. Dichos decodificadores pueden ejemplificarse por medio de un conjunto de chips, por ejemplo.
Alternativamente, un dispositivo similar a un decodificador puede estar incluido en un dispositivo de pantalla, tal como un equipo de TV con pantalla integrada.
Cámaras de vigilancia sin pantalla integrada constituyen un ejemplo adicional. Estas representan un dispositivo fuente con una interfaz para la transmisión de los datos de imagen capturados y codificados a un dispositivo de pantalla externo o un dispositivo de almacenamiento externo.
Por el contrario, los dispositivos como lentes inteligentes o lentes 3D, por ejemplo utilizados para AR o VR, representan un dispositivo de destino 320. Estos reciben los datos de imagen codificados y los visualizan.
Por lo tanto, el dispositivo fuente 310 y el dispositivo de destino 320 como se muestra en la figura 1 son solo modalidades de ejemplo de la invención y las modalidades de la invención no están limitadas a esas mostradas en la figura 1.
El dispositivo fuente 310 y el dispositivo de destino 320 pueden comprender cualquiera de un amplio rango de dispositivos, incluyendo cualquier tipo de dispositivos estacionarios o portátiles, por ejemplo, ordenador portátil u ordenador laptop, teléfonos móviles, teléfonos inteligentes, tabletas u ordenadores de tableta, cámaras, ordenadores de escritorio, decodificadores, televisiones, dispositivos de pantalla, reproductores de medios digitales, consolas de video juegos, dispositivos de transmisión de video, dispositivos receptores de radiodifusión, o similares. Para codificación y decodificación profesional a gran escala, el dispositivo fuente 310 y/o el dispositivo de destino 320 pueden comprender adicionalmente servidores y estaciones de trabajo, los cuales pueden estar incluidos en redes grandes. Estos dispositivos pueden no utilizar ningún tipo de sistema operativo.
Codificador y método de codificación
La figura 2 muestra un diagrama en bloque conceptual/esquemático de una modalidad de un codificador 100, por ejemplo, un codificador de imagen 100, el cual comprende una entrada 102, una unidad de cálculo residual 104, una unidad de transformación 106, una unidad de cuantificación 108, una unidad de cuantificación inversa 110, y una unidad de transformación inversa 112, una unidad de reconstrucción 114, una memoria tampón 116, un filtro de bucle 120, una memoria tampón de imágenes decodificadas (DPB) 130, una unidad de predicción 160, la cual incluye una unidad de inter estimación 142, una unidad de inter predicción 144, una unidad de intra- estimación 152, una unidad de intra-predicción 154 y una unidad de selección de modo 162, una unidad de codificación por entropía 170, y una salida 172. Un codificador de video 100 como se muestra en la figura 2 también puede ser referido como codificador de video híbrido o un codificador de video de acuerdo con un códec de video híbrido. Cada unidad puede consistir de un procesador y una memoria no transitoria para llevar a cabo sus etapas de procesamiento ejecutando un código almacenado en la memoria no transitoria por medio del procesador.
Por ejemplo, la unidad de cálculo residual 104, la unidad de transformación 106, la unidad de cuantificación 108, y la unidad de codificación por entropía 170 forman una trayectoria de señal hacia adelante del codificador 100, mientras que, por ejemplo, la unidad de cuantificación inversa 110, la unidad de transformación inversa 112, la unidad de reconstrucción 114, la memoria tampón 116, el filtro de bucle 120, la memoria tampón de imágenes decodificadas (DPB) 130, la unidad de predicción 144, y la unidad de intra-predicción 154 forman una trayectoria de señal hacia atrás del codificador, en donde la trayectoria de señal hacia atrás del codificador corresponde a la trayectoria de señal del decodificador para proporcionar procesamiento inverso para reconstrucción y predicción idéntica (ver decodificador 200 en la figura 3).
El codificador está configurado para recibir, por ejemplo, por medio de la entrada 102, una imagen 101 o un bloque de imagen 103 de la imagen 101, por ejemplo imagen de una secuencia de imágenes que forman un video o secuencia de video. El bloque de imagen 103 también puede ser referido como un bloque de imagen actual o bloque de imagen que se va a codificar, y la imagen 101 como la imagen actual o imagen que se va a codificar (en particular en codificación de video para distinguir la imagen actual de otras imágenes, por ejemplo, imágenes previamente codificadas y/o decodificadas de la misma secuencia de video, es decir la secuencia de video la cual también comprende la imagen actual).
División
Las modalidades del codificador 100 pueden comprender una unidad de división (no representada en la figura 2), por ejemplo la cual también puede ser referida como una unidad de división de imagen, configurada para dividir la imagen 103 en una pluralidad de bloques, por ejemplo, bloques tipo bloque 103, típicamente en una pluralidad de bloques que no se traslapan. La unidad de división puede estar configurada para usar el mismo tamaño de bloque para todas las imágenes de una secuencia de video y la cuadrícula correspondiente que define el tamaño de bloque, o para cambiar el tamaño de bloque entre las imágenes o subconjuntos de grupos de imágenes, y dividir cada imagen en los bloques correspondientes.
Cada bloque de la pluralidad de bloques puede tener dimensiones cuadradas o de manera más general dimensiones rectangulares. Los bloques que son áreas de la imagen con formas no rectangulares pueden no aparecer.
Como en la imagen 101, el bloque 103 nuevamente es o puede ser considerado como un arreglo bi-dimensional o matriz de muestras con valores de intensidad (valores de muestra), aunque de dimensión más pequeña que la imagen 101. En otras palabras, el bloque 103 puede comprender, por ejemplo un arreglo de muestras (por ejemplo, un areglo de luminancia en el caso de una imagen monocromática 101) o arreglos de tres muestras (por ejemplo, un arreglo de luminancia y dos arreglos de crominancia en el caso de una imagen a color 101) o cualquier otro número y/o tipo de arreglos dependiendo del formato de color aplicado. El número de muestras en dirección horizontal y vertical (o ejes) del bloque 103 definen el tamaño del bloque 103.
El codificador 100 como se muestra en la figura 2 está configurado para codificar la imagen 101 bloque por bloque, por ejemplo, la codificación y predicción se realiza por bloque 103.
Cálculo residual
La unidad de cálculo residual 104 está configurada para calcular un bloque residual 105 basado en el bloque de imagen 103 y un bloque de predicción 165 (detalles adicionales acerca del bloque de predicción 165 se proporcionan más adelante), por ejemplo, al restar los valores de muestra del bloque de predicción 165 de los valores de muestra del bloque de imagen 103, muestra por muestra (pixel por pixel) para obtener el bloque residual 105 en el dominio de muestra.
Transformación
La unidad de transformación 106 está configurada para aplicar una transformación, por ejemplo, una transformada de frecuencia espacial o una transformada espacial lineal, por ejemplo una transformada de coseno discreto (DCT) o transformada de seno discreto (DST), en los valores de muestra del bloque residual 105 para obtener coeficientes transformados 107 en un dominio de transformada. Los coeficientes transformados 107 también pueden ser referidos como coeficientes residuales transformados y representan el bloque residual 105 en el dominio de transformada.
La unidad de transformación 106 puede configurarse para aplicar aproximaciones de enteros de DCT/DST, tal como las transformadas de núcleo especificadas para HEVC/H.265. En comparación con una transformada DCT ortonormal, dichas aproximaciones de entero típicamente son escaladas por un cierto factor. A fin de conservar la norma del bloque residual el cual es procesado por medio de transformadas inversas y hacia adelante, los factores de escalamiento adicionales se aplican como parte del proceso de transformada. Los factores de escalamiento son elegidos típicamente con base en ciertas restricciones como factores de escalamiento siendo una energía de dos para operación de conmutación, profundidad de bit de los coeficientes transformados, compensación entre precisión y costos de implementación, etc. Los factores de escalamiento específicos son, por ejemplo, específicos para la transformada inversa, por ejemplo, por medio de la unidad de transformación inversa 212, en un decodificador 200 (y la transformada inversa correspondiente, por ejemplo por medio de la unidad de transformación inversa 112 en el codificador 100) y factores de escalamiento correspondientes para la transformada hacia adelante, por ejemplo, por medio de la unidad de transformación 106, en un codificador 100 pueden especificarse en consecuencia.
Cuantificación
La unidad de cuantificación 108 está configurada para cuantificar los coeficientes transformados 107 para obtener coeficientes cuantificados 109, por ejemplo, aplicando cuantificación escalar o cuantificación de vector. Los coeficientes cuantificados 109 también pueden ser referidos como coeficientes residuales cuantificados 109. Por ejemplo para cuantificación escalar, se puede aplicar diferente escalamiento para lograr la cuantificación más fina o más basta. Los tamaños más pequeños de paso de cuantificación corresponden a cuantificación más fina, mientras que los tamaños de paso de cuantificación más grandes corresponden a cuantificación más basta. El tamaño del paso de cuantificación aplicable puede indicarse por medio de un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser por ejemplo un índice para una serie predefinida de tamaños del paso de cuantificación aplicable. Por ejemplo, los parámetros de cuantificación pequeños pueden corresponder a cuantificación fina (tamaños de paso de cuantificación pequeños) y parámetros de cuantificación grandes pueden corresponder a la cuantificación basta (tamaños grandes del paso de cuantificación) o viceversa. La cuantificación puede incluir división entre un tamaño de paso de cuantificación y descuantificación inversa o correspondiente, por ejemplo, por medio de cuantificación inversa 110, puede incluir multiplicación por el tamaño de paso de cuantificación. Las modalidades de acuerdo con HEVC (Codificación de Video de Alta Eficiencia), pueden configurarse para utilizar un parámetro de cuantificación para determinar el tamaño de paso de cuantificación. Generalmente, el tamaño de paso de cuantificación puede calcularse con base en un parámetro de cuantificación utilizando una aproximación de punto fijo de una ecuación que incluye división.
Se pueden introducir factores de escalamiento adicionales para cuantificación y descuantificación para restaurar la norma del bloque residual, el cual puede modificarse debido al escalamiento utilizado en la aproximación de punto fijo de la ecuación para tamaño de paso de cuantificación y parámetro de cuantificación. En una implementación de ejemplo, el escalamiento de la transformada inversa y descuantificación pueden combinarse. Alternativamente, las tablas de cuantificación personalizadas se pueden utilizar y señalizar desde un codificador hacia un decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación de pérdida, en donde la pérdida aumenta con el incremento de los tamaños del paso de cuantificación.
Las modalidades del codificador 100 (o respectivamente la unidad de cuantificación 108) pueden ser configuradas para emitir las configuraciones de cuantificación incluyendo el esquema de cuantificación y el tamaño del paso de cuantificación, por ejemplo, por medio del parámetro de cuantificación correspondiente, de manera que un decodificador 200 pueda recibir y aplicar la cuantificación inversa correspondiente. Las modalidades del codificador 100 (o unidad de cuantificación 108) pueden estar configuradas para emitir el esquema de cuantificación y tamaño de paso de cuantificación, por ejemplo, directamente o codificado entrópicamente mediante la unidad de codificación por entropía 170 o cualquier otra unidad de codificación por entropía.
La unidad de cuantificación inversa 110 está configurada para aplicar la cuantificación inversa de la unidad de cuantificación 108 en los coeficientes cuantificados para obtener coeficientes descuantificados 111, por ejemplo aplicando la inversa del esquema de cuantificación aplicado por la unidad de cuantificación 108 con base en o utilizando el mismo tamaño del paso de cuantificación como la unidad de cuantificación 108. Los coeficientes descuantificados 111 también pueden ser referidos como coeficientes residuales descuantificados 111 y corresponden - aunque típicamente no idéntico a los coeficientes de transformada debido a la pérdida por cuantificación - a los coeficientes transformados 108.
La unidad de transformación inversa 112 está configurada para aplicar la transformación inversa de la transformación aplicada por medio de la unidad de transformación 106, por ejemplo, una transformada de coseno discreto inversa (DCT) o transformada de seno discreto inversa (DST), para obtener un bloque transformado inverso 113 en el dominio de muestra. El bloque transformado inverso 113 también puede ser referido como bloque descuantificado transformado inverso 113 o bloque residual transformado inverso 113.
La unidad de reconstrucción 114 está configurada para combinar el bloque transformado inverso 113 y el bloque de predicción 165 para obtener un bloque reconstruido 115 en el dominio de muestra, por ejemplo, a nivel de muestra añadiendo los valores de muestra del bloque residual decodificado 113 y los valores de muestra del bloque de predicción 165.
La unidad de memoria tampón 116 (o para abreviar, “memoria tampón” 116), por ejemplo, una memoria tampón lineal 116, está configurada para amortiguar o almacenar el bloque reconstruido y los valores de muestra respectivos, por ejemplo para intra estimación y/o intra predicción. En modalidades adicionales, el codificador puede ser configurado para utilizar bloques reconstruidos sin filtrar y/o los valores de muestra respectivos almacenados en la unidad de memoria tampón 116 para cualquier tipo de estimación y/o predicción.
Las modalidades del codificador 100 pueden ser configuradas de manera que, por ejemplo, la unidad de memoria tampón 116 no sea únicamente utilizada para almacenar los bloques reconstruidos 115 para intra estimación 152 y/o intra-predicción 154 sino también para la unidad de filtro de bucle 120, y/o de manera que, por ejemplo, la unidad de memoria tampón 116 y la unidad de memoria tampón de imágenes decodificadas 130 forman una memoria tampón. Modalidades adicionales pueden ser configuradas para utilizar bloques filtrados 121 y/o bloques o muestras de la memoria tampón de imágenes decodificadas 130 (ambos no mostrados en la figura 2) como entrada o base para la intra estimación 152 y/o intra predicción 154.
La unidad de filtro de bucle 120 (o para abreviar “filtro de bucle” 120), está configurada para filtrar el bloque reconstruido 115 para obtener un bloque filtrado 121, por ejemplo, aplicando un filtro de desplazamiento adaptativo de muestra de desbloqueo (SAO) u otros filtros, por ejemplo, filtros de contornos o suavización o filtros colaborativos. El bloque filtrado 121 también puede ser referido como bloque reconstruido filtrado 121.
Modalidades de la unidad de filtro de bucle 120 pueden comprender una unidad de análisis de filtro y la unidad de filtro real, en donde la unidad de análisis de filtro está configurada para determinar parámetros de filtro de bucle para el filtro real. La unidad de análisis de filtro puede estar configurada para aplicar parámetros de filtro predeterminados fijos al filtro de bucle real, seleccionar de manera adaptativa parámetros de filtro a partir de una serie de parámetros de filtro predeterminados o calcular de manera adaptativa parámetros de filtro para el filtro de bucle real.
Las modalidades de la unidad de filtro de bucle 120 pueden comprender (no mostrado en la figura 2) uno o una pluralidad de filtros (tal como componentes de filtro de bucle y/o subfiltros), por ejemplo, uno o más de diferentes tipos o clases de filtros, por ejemplo, conectados en serie o en paralelo o en cualquier combinación de los mismos, en donde cada uno de los filtros puede comprender individualmente o conjuntamente con otros filtros de la pluralidad de filtros una unidad de análisis de filtro para determinar los parámetros de filtro de bucle respectivos, por ejemplo, como se describe en el párrafo anterior.
Las modalidades del codificador 100 (respectivamente unidad de filtro de bucle 120) pueden ser configuradas para emitir los parámetros del filtro de bucle, por ejemplo, directamente o codificados por entropía mediante la unidad de codificación por entropía 170 o cualquier otra unidad de codificación por entropía, de manera que, por ejemplo, un decodificador 200 puede recibir y aplicar los mismos parámetros de filtro de bucle para decodificar.
La memoria tampón de la imagen decodificada (DPB) 130 está configurada para recibir y almacenar el bloque filtrado 121. La memoria tampón de imágenes decodificadas 130 puede estar además configurada para almacenar otros bloques filtrados previamente, por ejemplo, bloques filtrados y previamente reconstruidos 121, de la misma imagen actual o de diferentes imágenes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir decodificadas (y bloques y muestras de referencia correspondientes) y/o una imagen actual parcialmente reconstruida (y bloques y muestras de referencia correspondientes), por ejemplo para inter-estimación y/o inter predicción.
Modalidades adicionales de la invención también pueden estar configuradas para usar los bloques previamente filtrados y valores de muestra filtrados correspondientes de la memoria tampón de imágenes decodificadas 130 para cualquier tipo de estimación o predicción, por ejemplo, intra estimación y predicción así como inter estimación y predicción.
La unidad de predicción 160, también referida como unidad de predicción de bloque 160, está configurada para recibir u obtener el bloque de imagen 103 (bloque de imagen actual 103 de la imagen actual 101) y datos de imagen decodificados o al menos reconstruidos, por ejemplo, muestras de referencia de la misma imagen (actual) de la memoria tampón 116 y/o datos de imagen decodificados 231 de una o una pluralidad de imágenes decodificadas previamente de la memoria tampón de imágenes decodificadas 130, y para procesar dichos datos para predicción, es decir proporcionar un bloque de predicción 165, el cual puede ser un bloque inter-predicho 145 o un bloque intrapredicho 155.
La unidad de selección de modo 162 puede ser configurada para seleccionar un modo de predicción (por ejemplo un modo de intra o inter predicción) y/o un bloque de predicción correspondiente 145 o 155 para utilizarse como bloque de predicción 165 para el cálculo del bloque residual 105 y para la reconstrucción del bloque reconstruido 115.
Modalidades de la unidad de selección de modo 162 pueden ser configuradas para seleccionar el modo de predicción (por ejemplo, de esas soportadas por la unidad de predicción 160), el cual proporcionr la mejor coincidencia o en otras palabras el residual mínimo (el residual mínimo significa mejor compresión para transmisión o almacenamiento), o una sobrecarga de señalización mínima (sobrecarga de señalización mínima significa mejor compresión para transmisión o almacenamiento), o la cual considera o equilibra ambos. La unidad de selección de modo 162 puede ser configurada para determinar el modo de predicción basado en optimización de distorsión de velocidad (RDO), es decir selecciona el modo de predicción el cual proporciona una optimización de distorsión de velocidad mínima o cuya distorsión de velocidad asociada al menos satisface un criterio de selección de modo de predicción.
En lo siguiente se explicará con más detalle el procesamiento de predicción (por ejemplo, unidad de predicción 160) y selección de modo (por ejemplo por la unidad de selección de modo 162) ejecutados por un codificador ejemplar 100.
Como se describió anteriormente, el codificador 100 está configurado para determinar o seleccionar el mejor o un modo de predicción óptimo a partir de un conjunto de modos de predicción (pre-determinados). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intra-predicción y/o modos de inter-predicción.
El conjunto de modos de intra-predicción puede comprender 32 modos de intra-predicción diferentes, por ejemplo modos no direccionales como modo DC (o promedio) y modo plano, o modos direccionales, por ejemplo, como se definió en H.264, o puede comprender 65 modos de intra-predicción diferentes, por ejemplo, modos no direccionales como modo DC (o promedio) y modo plano, o modos direccionales, por ejemplo, como se definió en H.265.
El conjunto de modos de inter-predicción (o posibles) depende de las imágenes de referencia disponibles (es decir imágenes previas al menos parcialmente decodificadas, por ejemplo, almacenadas en DPB 230) y otros parámetros de inter-predicción, por ejemplo, si la imagen de referencia completa o únicamente una parte, por ejemplo, un área de ventana de búsqueda alrededor del área del bloque actual, de la imagen de referencia se utiliza para buscar un mejor bloque de referencia coincidente, y/o por ejemplo, si se aplica la interpolación de pixel, por ejemplo, interpolación medio/semi-pel y/o cuarto-pel, o no.
Adicional a los modos de predicción anteriores, se puede aplicar el modo de salto y/o modo directo.
La unidad de predicción 160 puede además estar configurada para dividir el bloque 103 en divisiones de bloque más pequeñas o sub-bloques, por ejemplo, iterativamente utilizando división de árbol cuaternario (QT), división binaria (BT) o división de árbol triple (Tt) o cualquier combinación de los mismos, y llevar a cabo, por ejemplo la predicción para cada una de las divisiones de bloque o sub-bloques, en donde la selección de modo comprende la selección de la estructura de árbol del bloque dividido 103 y los modos de predicción aplicados a cada una de las divisiones de bloque o sub-bloques.
La unidad de inter estimación 142, también referida como unidad de estimación de inter imagen 142, está configurada para recibir u obtener el bloque de imagen 103 (bloque de imagen actual 103 de la imagen actual 101) y una imagen decodificada 231, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques reconstruidos de una o una pluralidad de otras/diferentes imágenes previamente decodificadas 231, para inter estimación (o “estimación inter imagen”). Por ejemplo, una secuencia de video puede comprender la imagen actual y las imágenes previamente decodificadas 231, o en otras palabras, la imagen actual y las imágenes previamente decodificadas 231 pueden ser parte de o forman una secuencia de imágenes que forman una secuencia de video.
El codificador 100 puede ser configurado, por ejemplo, para seleccionar (obtener/determinar) un bloque de referencia de una pluralidad de bloques de referencia de las mismas o diferentes imágenes de la pluralidad de otras imágenes y proporciona una imagen de referencia (o índice de imagen de referencia,...) y/o un desplazamiento (desplazamiento espacial) entre la posición (coordenadas x,y) del bloque de referencia y la posición del bloque actual como parámetros de inter estimación 143 a la unidad de inter predicción 144. Este desplazamiento es también llamado vector de movimiento (MV). La inter estimación también es referida como estimación de movimiento (ME) y la inter predicción también predicción de movimiento (MP).
La unidad de inter predicción 144 está configurada para obtener, por ejemplo, recibir, un parámetro de inter predicción 143 y llevar a cabo inter predicción basada en o utilizando el parámetro de inter predicción 143 para obtener un bloque de inter predicción 145.
Aunque la figura 2 muestra dos unidades distintas (o pasos) para la inter-codificación, concretamente inter estimación 142 e inter predicción 152, ambas funcionalidades pueden llevarse a cabo como una (la inter estimación típicamente requiere/comprende calcular un/el bloque de inter predicción, es decir el o un “tipo de” inter predicción 154), por ejemplo, probando todos los posibles o un subconjunto predeterminado de posibles modos de inter predicción iterativamente mientras se almacena el modo de inter predicción actualmente mejor y el bloque de inter predicción respectivo, y utilizar el modo de inter predicción actualmente mejor y el bloque de inter predicción respectivo como el parámetro de inter predicción (final) 143 y el bloque de inter-predicción 145 sin llevar a cabo otra vez la inter predicción 144.
La unidad de intra estimación 152 está configurada para obtener, por ejemplo, recibir, el bloque de imagen 103 (bloque de imagen actual) y uno o una pluralidad de bloques reconstruidos previamente, por ejemplo, bloques vecinos reconstruidos, de la misma imagen para intra estimación. El codificador 100 puede ser configurado, por ejemplo, para seleccionar (obtener/determinar) un modo de intra predicción de una pluralidad de modos de intra predicción y proporcionarlo como parámetro de intra estimación 153 a la unidad de intra predicción 154.
Las modalidades del codificador 100 se pueden configurar para seleccionar el modo de intra predicción basado en un criterio de optimización, por ejemplo, reisual mínimo (por ejemplo, el modo de intra-predicción que proporciona el bloque de predicción 155 más similar al bloque de imagen actual 103) o distorsión de velocidad mínima.
La unidad de intra predicción 154 está configurada para determinar, con base en el parámetro de intra predicción 153, por ejemplo, el modo de intra predicción seleccionado 153, el bloque de intra predicción 155.
Aunque la figura 2 muestra dos unidades distintas (o pasos) para la intra-codificación, concretamente intra estimación 152 e intra predicción 154, ambas funcionalidades pueden llevarse a cabo como una (la intra estimación típicamente requiere/comprende calcular el bloque de intra predicción, es decir el o un “tipo de” intra predicción 154), por ejemplo, probando todos los posibles o un subconjunto predeterminado de posibles modos de intra-predicción iterativamente mientras se almacena el modo de intra predicción actualmente mejor y el bloque de intra predicción respectivo, y utilizando el modo de intra predicción actualmente mejor y el bloque de intra predicción respectivo como el parámetro de intra predicción (final) 153 y el bloque de intra predicción 155 sin ejecutar otra vez la intra predicción 154.
La unidad de codificación por entropía 170 está configurada para aplicar un algoritmo de codificación por entropía o esquema (por ejemplo un esquema de codificación de longitud variable (VLC), un esquema VLC adaptativo al contexto (CALVC), un esquema de codificación aritmética, una codificación aritmética binaria adaptativa al contexto (CABAC)) en los coeficientes residuales cuantificados 109, parámetros de inter predicción 143, parámetro de intra predicción 153, y/o parámetros de filtro de bucle, individualmente o conjuntamente (o de ninguna forma) para obtener datos de imagen codificada 171 los cuales pueden ser emitidos por la slaida 172, por ejemplo, en la forma de un flujo de bit codificado 171.
Decodificador
La figura 3 muestra un decodificador de video ejemplar 200 configurado para recibir datos de imagen codificada (por ejemplo flujo de bits codificados) 171, por ejemplo codificados por el codificador 100, para obtener una imagen decodificada 231.
El decodificador 200 comprende una entrada 202, una unidad de decodificación por entropía 204, una unidad de cuantificación inversa 210, una unidad de transformación inversa 212, una unidad de reconstrucción 214, un memoria tampón 216, un filtro de bucle 220, un memoria tampón de imágenes decodificadas 230, una unidad de predicción 260, la cual incluye una unidad de inter predicción 244, una unidad de intra predicción 254, y una unidad de selección de modo 260, y una salida 232.
La unidad de decodificación por entropía 204 está configurada para llevar a cabo la decodificación por entropía a los datos de imagen codificados 171 para obtener, por ejemplo, coeficientes cuantificados 209 y/o parámetros de codificación decodificados (no mostrados en la figura 3), por ejemplo, (decodificados) cualquiera o todos los parámetros de inter predicción 143, parámetro de intra predicción 153, y/o parámetros de filtro de bucle.
En modalidades del decodificador 200, la unidad de cuantificación inversa 210, la unidad de transformación inversa 212, la unidad de reconstrucción 214, la memoria tampón 216, el filtro de bucle 220, la memoria tampón de imágenes decodificadas 230, la unidad de predicción 260 y la unidad de selección de modo 260 están configuradas para llevar a cabo el procesamiento inverso del codificador 100 (y las unidades funcionales respectivas) para decodificar los datos de imagen codificados 171.
En particular, la unidad de cuantificación inversa 210 puede ser idéntica en función a la unidad de cuantificación inversa 110, la unidad de transformación inversa 212 puede ser idéntica en función a la unidad de transformación inversa 112, la unidad de reconstrucción 214 puede ser idéntica en función a la unidad de reconstrucción 114, la memoria tampón 216 puede ser idéntica en función a la memoria tampón 116, el filtro de bucle 220 puede ser idéntico en función al filtro de bucle 220 (con respecto al filtro de bucle real debido ya que el filtro de bucle 220 típicamente no comprende una unidad de análisis de filtro para determinar los parámetros de filtro con base en la imagen original 101 o bloque 103 pero recibe (explícitamente o implícitamente) u obtiene los parámetros de filtro utilizados para codificación, por ejemplo, de la unidad de decodificación por entropía 204), y la memoria tampón de imágenes decodificadas 230 puede ser idéntica en función a la memoria tampón de imágenes decodificadas 130.
La unidad de predicción 260 puede comprender una unidad de inter predicción 244 y una unidad de intra predicción 254, en donde la unidad de inter predicción 244 puede ser idéntica en función a la unidad de inter predicción 144, y la unidad de intra predicción 254 puede ser idéntica en función a la unidad de intra predicción 154. La unidad de predicción 260 y la unidad de selección de modo 262 están típicamente configuradas para llevar a cabo la predicción de bloque y/u obtener el bloque predicho 265 de los datos codificados 171 únicamente (sin ninguna información adicional acerca de la imagen original 101) y recibir u obtener (explícitamente o implícitamente) los parámetros de predicción 143 o 153 y/o la información acerca del modo de predicción seleccionado, por ejemplo, de la unidad de decodificación por entropía 204.
El decodificador 200 está configurado para emitir la imagen decodificada 231, por ejemplo, a través de la salida 232, para presentación o visualización para un usuario.
Haciendo referencia a la figura 1, la imagen decodificada 231 emitida desde el decodificador 200 puede ser post­ procesada en el post-procesador 326. La imagen post-procesada resultante 327 puede ser transferida a un dispositivo de visualización interno o externo 328 y visualizada.
Detalles de las modalidades y ejemplos
La invención restringe los valores que pueden ser asumidos por los coeficientes de filtro de un filtro multiplicativo adaptativo de manera tal que se simplifica la operación de multiplicación. La filtración de un conjunto de muestras de señal de una imagen utiliza un filtro con coeficientes multiplicadores adaptativos, donde los coeficientes multiplicadores están representados por números enteros. Debido a que el valor más alto del valor absoluto de un coeficiente C es N, la representación binaria de N requiere L=techo(log2(N)) dígitos binarios. En otras palabras, con L dígitos binarios, los valores de coeficiente absoluto de cero (L “ceros”) a 2L-1 (L “unos”) pueden ser expresados (el signo del coeficiente está representado por un bit de signo separado no analizado aquí). De acuerdo con el enfoque particular de la invención, este conjunto de valores está restringido de manera que cualquier valor que pueda ser asumido por el coeficiente C incluye como máximo un número P<L de “unos” (“1”) en la representación binaria. Por ejemplo, se excluye el caso de todos “unos” (L “unos”).
Como se mostrará más adelante, mientras más pequeño sea el número P de “unos” permitidos, es mejor la ganancia de eficiencia y el rendimiento de la operación de filtración. Por ejemplo, la mejor ganancia de eficiencia puede lograrse si cualquier valor que pueda ser asumido por el coeficiente C incluye únicamente hasta un “1” sencillo, es decir como máximo un “1”.
En lo siguiente, modalidades particulares y ejemplos de implementación de la invención se describirán en detalle.
Se nota que los valores ejemplares de parámetros que se dan más adelante son para propósitos ilustrativos únicamente, y la persona experta está consciente que pueden ser reemplazados dentro de cualesquiera otros posibles valores que están dentro del alcance de las reivindicaciones adjuntas.
Generalmente, los coeficientes de filtro son implementados utilizando precisión finita. Un coeficiente de filtro es representado utilizando L bits, junto con un bit de signo opcional. La cantidad de bits L depende del valor absoluto máximo del coeficiente. Específicamente, debido a que el valor más alto del valor absoluto de un coeficiente C es N, la representación binaria de N requiere L=techo(log2(N)) dígitos binarios.
La función techo(x), también denotado como [x] o techo(x), mapea x al menos al entero más grande que o igual a x.
De acuerdo con una primera modalidad ejemplar de la invención, máximo uno de entre los L bits (es decir excluyendo el bit de signo) de un coeficiente de filtro puede ser “uno” (“1”) al mismo tiempo. Otras posibilidades no son permitidas.
Por ejemplo:
Se asume L = 6, y un bit (el bit más a la izquierda) se utiliza para indicar el signo del coeficiente.
Los siguientes coeficientes de filtro son permitidos, por ejemplo: 0 (0000000), 1 (0000001), -1 (1000001), 2 (0000010), -2 (1000010), 4 (0000100), -4 (1000100), 8 (0001000), -8 (1001000), 16 (0010000) ..., -32 (1100000).
Los siguientes coeficientes de filtro no están permitidos, por ejemplo: 3 (0000011), -15 (1001111), 31 (0011111) ...
En este caso, se logra un beneficio debido a que la restricción permite que la multiplicación sea implementada como una operación de conmutación de bit simple.
La operación de conmutación de bit puede ser matemáticamente representada como: f(X,M) = X * 2M, donde M es un entero mayor que o igual a 0. De acuerdo con una generalización de la modalidad anterior, como máximo M de entre los L bits del coeficiente de filtro pueden ser “1” al mismo tiempo. Otras posibilidades no se permiten.
Por ejemplo:
Se asume L = 6, M=2, y se utiliza un bit para indicar el signo del coeficiente.
Los siguientes coeficientes de filtro, por ejemplo, son permitidos: 0 (0000000), 3 (0000011), 9 (0001001), -4 (1000100), -9 (1001001), 18 (0010010), 33 (0100001) ...
Los siguientes coeficientes de filtro, por ejemplo, no son permitidos: 7 (0000111), -19 (1010011), 31 (0011111) ...
En este caso, la restricción permite que la multiplicación sea implementada por medio de conmutación de dos bits y operaciones de una suma.
En el caso más general arriba señalado, con un M<L general, se logra un beneficio debido a que la restricción permite que la multiplicación se logre mediante la conmutación de bit M y operaciones de adición M-1. En los ejemplos antes proporcionados, se asume que el conjunto restringido de valores absolutos se aplica a todos los coeficientes de filtro de una multiplicación de filtro adaptativo.
En lo siguiente, una modalidad ejemplar más compleja se describirá con referencia a la figura 7, en donde se aplica una restricción de acuerdo con la invención, pero no a todos los coeficientes de filtro del filtro bajo consideración.
En el ejemplo, en un primer paso, los coeficientes son agrupados en dos grupos. En el dibujo, el primer grupo corresponde a las posiciones de coeficiente indicadas por medio de círculos abiertos en la porción central del filtro y el segundo grupo corresponde a las posiciones de coeficiente indicadas por medio de círculos negros llenos en el dibujo, en la porción periférica del filtro.
Los coeficientes de filtro en el primer grupo pueden asumir cualquier valor en un rango predeterminado. En el ejemplo ilustrado, se asume que el rango corresponde a un conjunto “S1”, en donde S1= [-511, .,511 ]. Esto corresponde a un número global de bits (excluyendo el bit de signo) de L=9. Los coeficientes de filtro en el segundo grupo pueden asumir cualquier valor en un conjunto “S2”, en donde S2” es un subconjunto de S1. De manera más específica, en un ejemplo, el conjunto S2 está definido como S2 = [-32,-16,-8,-4,-2,-1,0,1,2,4,8,16,32]. Por consiguiente, los valores permitidos en el conjunto S2 están restringidos a esos que pueden estar representados con un “1” simple en la representación binaria. Además, el valor permitido absoluto máximo es restringido a 32, es decir se asume además que el número L está restringido a L = 6. Generalmente, se nota que el número L se puede establecer separadamente y de manera diferente para cada grupo. Además, el agrupamiento particular y definición de los conjuntos de valores permitidos pueden cambiar de imagen a imagen (cuadro a cuadro). Alternativamente el agrupamiento y la definición de los conjuntos pudieran ser diferentes para las diferentes formas de filtro (por ejemplo, diamante 5x5, diamante 7x7, diamante 9x9 como se describió en la figura 5). Alternativamente el agrupamiento y las definiciones pudieran ser predefinidos.
En este ejemplo, el beneficio es que en lugar de multiplicación de 9 bits, se emplea la conmutación de 1 bit para el conjunto S2.
Los datos respectivos deben incluirse en el flujo de bits en el codificador y señalizados al decodificador de manera que los coeficientes de filtro pueden ser correctamente determinados en el decodificador también. Por supuesto, aplicar un conjunto restringido de valores de coeficiente permitidos lleva a una reducción de la sobrecarga de señalización y por tanto a una codificación más eficiente debido a que se necesitan menos bits para representar los coeficientes que van a señalizarse en el flujo de bits.
De manera más específica el valor de los coeficientes de filtro que son aplicados por el codificador necesita codificarse y transmitirse al decodificador. En el lado del codificador, los valores de los coeficientes de filtro son convertidos en palabras código binarias (del valor del filtro a la palabra código) mediante una tabla de mapeo o una función de mapeo. La misma operación de mapeo debe aplicarse en el decodificador (de palabra código a valor de coeficiente) con el fin de interpretar los coeficientes de filtro correctamente.
La función de mapeo o tabla puede ser diferente para S1 y S2. Operaciones de mapeo de ejemplo se proporcionan más adelante para los conjuntos de coeficientes de filtro S1 y S2.
En el siguiente ejemplo S1 se proporciona por medio de {0,1,...,511} y S2 se proporciona mediante {0,2,4,8,16,32} (los valores absolutos son considerados únicamente).
Figure imgf000018_0001
Las operaciones de mapeo hacia adelante (en el codificador) y hacia atrás (en el decodificador) necesitan emplearse en el codificador y decodificador de manera que el decodificador pueda interpretar correctamente los valores de coeficiente de filtro. En el ejemplo anterior la operación de mapeo de coeficiente de filtro es diferente para S2 y S1, debido a que el número de distintos valores en S2 es mucho más bajo y es excesivo para representar los coeficientes de filtro S2 utilizando el mapeo de S1. Por tanto, la invención lleva a una reducción de sobrecarga de señalización y por tanto a una codificación más eficiente, debido a que menos bits son necesarios para representar los coeficientes que van a señalizarse en el flujo de bits.
En lo sucesivo, se proporcionará una perspectiva general de la señalización de coeficientes de filtro con referencia a la figura 8. La figura 8A ilustra el procesamiento del lado del codificador y la figura 8B ilustra el procesamiento en el lado del decodificador.
En el codificador, los coeficientes de filtro que se van a aplicar en las muestras reconstruidas se determinan de acuerdo con los valores de coeficiente permitidos como se determinó mediante el enfoque particular de la invención (paso S80).
Los coeficientes de filtro determinados se utilizan para filtrar las muestras de imagen reconstruidas (paso S82). De acuerdo con la invención, los coeficientes de filtro que son aplicados en las muestras de imagen reconstruidas necesitan obedecer las reglas como se establecen de acuerdo con la invención.
El siguiente paso de predicción de coeficientes de filtro (paso S84) es opcional. La predicción de coeficiente de filtro puede aplicarse opcionalmente con el fin de reducir la información que va a señalizarse al decodificador. Los métodos de predicción posibles son predicción utilizando predictores de filtro predefinidos y predicción a partir de coeficientes de filtro previamente señalizados. Sin embargo, los métodos de predicción no están limitados a esos que se proporcionan aquí como ejemplo, y se puede aplicar cualquier método de predicción conveniente del que tenga conocimiento una persona experta.
En el siguiente paso (S86) se lleva a cabo un mapeo de coeficientes residuales a palabras código binarias. Debido a que el paso de predicción anterior S84 es opcional, se nota que alternativamente el mapeo se aplica directamente a los coeficientes de filtro determinados en el paso S80.
De manera más específica, cada coeficiente de filtro de valor entero (residual del coeficiente de filtro) se convierte en una palabra código binaria antes de ser incluida en un flujo de bits. Existen tantas palabras código como valores de coeficiente de filtro posibles (valores residuales de coeficiente de filtro). El mapeo de palabra código a valor (el cual es un mapeo uno a uno) puede ser un mapeo fijo o puede cambiar dependiendo de la información del lado señalizado.
En el paso final S88, los coeficientes de filtro binarizados (opcionalmente residuales), es decir palabras código a las cuales fueron mapeados, son incluidos en el flujo de bits. En caso que se lleve a cabo una predicción en el paso S84, es además necesario generar una información de control de predicción e incluir dicha información de control de predicción en el flujo de bits, con el fin de señalizar al decodificador la información necesaria acerca del procesamiento de predicción, con el fin de poder realizar la reconstrucción.
Generalmente, las operaciones aplicadas en el codificador se aplican en el decodificador en orden inverso. Esto se explicará en mayor detalle a continuación con referencia a la figura 8B.
En el paso inicial S90, se analiza un flujo de bits recibido. Los coeficientes de filtro binarizados resultantes (es decir palabras código transmitidas) están opcionalmente representando coeficientes de filtro residuales (si la predicción fue aplicada en el lado del codificador). Esto se indica al obtener de manera adicional la información de control de predicción del flujo de bits analizado.
En cualquier caso, las palabras código binarias son mapeadas por medio de un procedimiento de mapeo inverso (en comparación con el codificador) a los coeficientes de filtro (o coeficientes de filtro residuales) en el paso S92.
Como resultado, se determinan los coeficientes de filtro (reconstruidos) en el lado del decodificador (paso S94). Si se aplicó la predicción, de manera que los coeficientes de filtro resultantes del paso S92 sean coeficientes de filtro residuales, la reconstrucción adicionalmente incluye llevar a cabo la predicción como se indicó por medio de la información de control de predicción y añadiendo el resultado de predicción a los coeficientes de filtro residuales, a fin de obtener los coeficientes de filtro reconstruidos.
Después de que los coeficientes de filtro son reconstruidos (si aplica, al combinar la información de predictor y residuales de filtro), estos son aplicados en las muestras de imagen reconstruidas (paso S96).
De acuerdo con la invención, los coeficientes de filtro que son aplicados en las muestras de imagen reconstruidas necesitan obedecer las reglas definidas de acuerdo con la invención.
Por consiguiente, si un coeficiente de filtro resultante de la reconstrucción (en particular: de combinar la predicción y resultados residuales) no tiene un valor de coeficiente de filtro permitido de acuerdo con las reglas de la invención (un valor de coeficiente de filtro que no está entre el conjunto de valores permitidos), el proceso de reconstrucción de coeficientes de filtro además lleva a cabo una operación de redondeo. Específicamente, la operación de redondeo puede convertir el valor de coeficiente de filtro de entrada al valor de coeficiente permitido más cercano.
Si se aplica la predicción de coeficiente de filtro, los coeficientes de filtro que van a aplicarse en las muestras de imagen reconstruidas para el propósito de filtración son obtenidos añadiendo el resultado de predicción (“predictor”) y los coeficientes de filtro residuales (como se explicó en párrafos anteriores de las perspectivas del codificador y decodificador). Obviamente es posible que los coeficientes de filtro residuales puedan ser no existentes (igual a 0) especialmente si la predicción es casi perfecta (los coeficientes de filtro que se van a predecir son muy similares al predictor). En estos casos de acuerdo con la invención aplica una de las siguientes 2 opciones:
1. Los valores de coeficiente obtenidos por predicción necesitan obedecer las reglas definidas de acuerdo con la invención. Por ejemplo en el caso de predicción de filtros predefinidos, los coeficientes de filtro de filtros predefinidos necesitan obedecer las reglas definidas de acuerdo con la invención.
2. Los coeficientes de filtro que son obtenidos después de la predicción necesitan redondearse al valor de coeficiente permitido más cercano.
Se observa además que la división en un número de dos grupos se ha explicado aquí únicamente por simplicidad, pero más de dos grupos también son posibles, en donde para al menos un grupo de la serie de valores permitidos se determina de acuerdo con la invención, es decir, incluye únicamente un número limitado de “unos” dentro de un número integral predeterminado de dígitos binarios.
Por ejemplo, la figura 9 ilustra un caso en donde los coeficientes del filtro están agrupados en tres grupos.
Un primer grupo de coeficientes ubicados cerca al centro del filtro kernel tiene valores de coeficiente de filtro permitidos en el conjunto S1=[-511, ..., 511].
Un segundo grupo de coeficientes de filtro, ubicados en la periferia del kernel e indicados por medio de círculos discontinuos, permite que los valores de coeficiente de filtro estén dentro de un conjunto restringido modificado S2, en donde S2 aquí es S2 = [-128,-64,-32,-16,-8,-4,-2,-1,0,1,2,4,8,16,32,64,128]. Este es el conjunto de todos los valores de coeficiente que pueden estar representados con L=8 dígitos binarios, con únicamente un “uno” único. Un tercer grupo de coeficientes de filtro, ubicado entre el primer y el segundo grupos, e indicado por círculos llenos, permite que los valores de coeficiente de filtro estén dentro de otro conjunto restringido S3, en donde
S3=[-64,-48,-40,...,0,1,2,3,4,5,6,8,9,10,12,16,17,18,20,24,32,33,34,36,40,48,64].
En otras palabras, el conjunto S3 es el conjunto de todos los coeficientes que pueden estar representados con L=7 dígitos binarios, en donde como máximo dos de los bits son “uno” en el valor absoluto del coeficiente, y aplica la restricción adicional de que el máximo valor absoluto se establece a 64. (De otra manera, por ejemplo, también el valor absoluto 96 debe permitirse, debido a que puede expresarse con dos “unos” principales en 7 dígitos binarios).
En lo siguiente, el beneficio particular de la invención se describirá por medio de otro ejemplo ilustrado en la figura 10. En el ejemplo de la figura 10, se lleva a cabo el agrupamiento en la misma manera que en la figura 7.
Los coeficientes de filtro en el primer grupo pueden asumir cualquier valor con nueve bits de amplio rango y un bit de signo, es decir el conjunto arriba mencionado S1=[-511, 511].
Los coeficientes de filtro en el segundo grupo pueden asumir una serie restringida de valores S2, en donde S2 aquí es S2 = [-128,-64,-32,-16,-8,-4,-2,-1,0,1,2,4,8,16,32,64,128]. Esto corresponde a esos valores que pueden estar representados con un “1” único en la representación binaria. Además, el valor permitido absoluto máximo está restringido a 128, es decir se asume además que el número L está restringido a L=8.
En otras palabras, el tamaño de filtro corresponde a aquel que se muestra en la figura 4, es decir un filtro en forma de diamante 9x9. Como se indicó en la sección de antecedentes, convencionalmente se requieren 41 multiplicaciones requeridas con coeficientes de filtro de 9 bits. Debido a que una multiplicación es equivalente a 8 adiciones binarias, como se mencionó en la sección de antecedentes, el número de operaciones adicionales por pixel es 48*8=328 operaciones de adición.
De acuerdo con la invención, los 28 coeficientes periféricos (es decir, aquellos en el segundo grupo) pueden ser implementados como una operación de conmutación de bit único. La implementación de la operación de conmutación de bit es de muy menor complejidad en hardware y puede por tanto omitirse en el cálculo.
Trece operaciones de multiplicación con coeficientes de 9 bits equivalen a 13*8=104 adiciones por pixel. El número de operaciones por pixel se reduce en 68%.
Los números anteriores son estimaciones aproximadas y el valor exacto de reducción en complejidad depende de la implementación real.
En lo sucesivo, se explica un beneficio adicional de implementaciones que utilizan al menos dos grupos de coeficientes.
De acuerdo con la invención, no todos los coeficientes de filtro son burdamente cuantificados, y los coeficientes de filtro en el primer grupo tienen cuantificación más fina.
Normalmente, la cuantificación burda de coeficientes de filtro ocasiona la pérdida de codificación. Sin embargo, permitir que el primer grupo de coeficientes de filtro asuma un conjunto grande de valores puede emplearse para compensar la pérdida de codificación por el codificador.
Una implementación de codificador posible es como sigue. En la siguiente descripción, las etiquetas de coeficiente de filtro utilizadas son aquellas como se indica en la figura 11, las cuales pueden diferir de las etiquetas previamente utilizadas en relación con otros dibujos:
Paso 1: Derivar todos los coeficientes de filtro (Co,...,C2o) utilizando el método de mínimos cuadrados asumiendo que no hay restricción en los valores de coeficiente.
Paso 2: Imponer la restricción redondeando los coeficientes (C7,...,C2o) al valor permitido más cercano.
Este paso introduce ruido de cuantificación en los coeficientes de filtro y reduce por tanto la ganancia de codificación. Paso 3: Recalcular los coeficientes de filtro libremente seleccionables (Co,...,C6) con el fin de compensar los errores de cuantificación. En este tercer paso la mayoría de la pérdida de codificación que se introduce en el paso 2 puede recuperarse.
En mayor detalle:
En el primer paso, la ecuación que se proporciona a continuación se resuelve para el filtro de 41 derivaciones (con 21 coeficientes únicos)
'
Figure imgf000020_0001
.
La ecuación anterior es llamada la ecuación de mínimos cuadrados y se utiliza para encontrar los coeficientes de filtro Cx en el codificador.
El término Xx,y es el valor esperado de R(i+kj+l)*R(i+mj+n), la correlación entre las 2 muestras reconstruidas antes de la filtración. Los índices k, l, m y n son seleccionados de acuerdo con la forma del filtro que va a aplicarse.
El término Px denota el valor esperado de R(i+kj+l)*0(i,j).
En el segundo paso, para coeficientes de filtro C7 a C20, se descubre que los coeficientes aproximados más cercanos satisfacen las restricciones:
Figure imgf000021_0001
Los coeficientes C7' a C20' obedecen las reglas especificadas por la invención. Por favor nótese que la función f() arriba descrita introduce ruido de cuantificación a los coeficientes de filtro C7 a C20 que fueron previamente obtenidos resolviendo la ecuación de mínimos cuadrados.
Se espera que el ruido de cuantificación introducido en el segundo paso reduzca el rendimiento de operación de filtración. El rendimiento de filtración generalmente se mide mediante una métrica tal como PSNR (Telación señal a ruido pico), por tanto después del paso 2, la PSNR de la imagen filtrada se reducirá.
En el tercer paso, la siguiente ecuación se resuelve para un filtro de 13 derivaciones (con 7 coeficientes únicos):
Figure imgf000021_0002
En el tercer paso se calculan nuevamente los coeficientes de filtración C0 a C7 tomando en cuenta el ruido de cuantificación introducido en el segundo paso. El tercer paso reduce de manera ventajosa la reducción en el rendimiento de filtración que es provocada por la aplicación del paso 2.
Se observa que en general la aplicación de la operación de filtración con coeficientes de filtro multiplicativo adaptativo no está limitada a muestras de imagen reconstruidas. Como se describió en las figuras 2 y 3, el bloque reconstruido generalmente corresponde al bloque de imagen que se obtiene después de la combinación del bloque transformado inverso y el bloque de predicción. Como es aparente para un experto en la técnica, la operación de filtración con coeficientes de filtro adaptativo también puede aplicarse a los otros pasos de las operaciones de codificación y decodificación, por ejemplo, al bloque de predicción (265, 165), bloque transformado inverso (213, 113) coeficientes cuantificados (209, 109), coeficientes descuantificados (111, 211) o imagen decodificada (231). En este caso la invención aplica a los coeficientes de filtro de operación de filtración.
En síntesis, la invención se refiere a un aparato mejorado y método para filtración de imágenes reconstruidas, en particular, imágenes de video, con filtros multiplicativos adaptativos. La eficiencia de la operación de filtración se incrementa restringiendo los valores permisibles de los coeficientes de filtro a aquellos que tienen únicamente un número limitado de “unos” en la representación binaria.
Observar que esta especificación proporciona explicaciones para imágenes (cuadros), pero los campos sustituyen como imágenes en el caso de una señal de imagen entrelazada.
Aunque las modalidades de la invención se han descrito primariamente con base en la codificación de video, se debe notar que las modalidades del codificador 100 y del decodificador 200 (y correspondientemente el sistema 300) también puede ser configuradas para procesamiento o codificación de imagen fija, es decir, el procesamiento o codificación de una imagen individual independiente de cualquier imagen precedente o consecutiva como en la codificación del video. En general únicamente la inter-estimación 142, inter-predicción 144, 242 no están disponibles en caso que la codificación de procesamiento de imagen esté limitada a una imagen única 101. La mayoría, si no es que todas las otras funcionalidades (también referidas como herramientas o tecnologías) del codificador de video 100 y decodificador de video 200 pueden utilizarse igualmente para imágenes fijas, por ejemplo, división, transformación (escalamiento) 106, cuantificación 108, cuantificación inversa 110, transformación inversa 112, intra-estimación 142, intra-predicción 154, 254 y/o filtración de bucle 120, 220, y codificación por entropía 170 y decodificación por entropía 204.
Siempre que las modalidades y la descripción se refieran al término “memoria”, el término “memoria” se entenderá y/o comprenderá un disco magnético, un disco óptico, una unidad de estado sólido (SSD), una memoria de solo lectura (Read-Only Memory, ROM), una memoria de acceso aleatorio (Random Access Memory, RAM), una unidad flash USB, o cualquier otro tipo conveniente de memoria, a menos que explícitamente se manifieste de otra manera.
Siempre que las modalidades y la descripción se refieran al término “red”, el término “red” se entenderá y/o comprenderá cualquier tipo de red cableada o inalámbrica, tal como Red de Área Local (LAN), LAN Inalámbrica (WLAN), Red de Área Amplia (WAN), una Ethernet, la Internet, redes móviles etc., a menos que explícitamente se manifieste de otra manera.
La persona experta en la técnica entenderá que los “bloques” (“unidades” o “módulos”) de las diversas figuras (método y aparato) representan o describen funcionalidades de modalidades de la invención (en lugar de necesariamente “unidades” individuales en hardware o software) y por tanto describen igualmente funciones o características de modalidades de aparatos, así como modalidades de métodos (unidad=paso).
La terminología de “unidades” es meramente utilizada para propósitos ilustrativos de la funcionalidad de modalidades del codificador/decodificador y no pretenden limitar la descripción.
En las diversas modalidades proporcionadas en la presente solicitud, se debe entender que el sistema, aparato, y método descritos pueden implementarse en otras maneras. Por ejemplo, la modalidad del aparato descrito es solamente ejemplar. Por ejemplo, la división de unidad es simplemente división de función lógica y puede ser otra división en una implementación real. Por ejemplo, una pluralidad de unidades o componentes pueden combinarse o integrarse en otro sistema, o algunas características pueden ser ignoradas o no llevadas a cabo. Además, los acoplamientos mutuos discutidos o mostrados o acoplamientos directos o conexiones de comunicación pueden implementarse utilizando algunas interfaces. Los acoplamientos indirectos o conexiones de comunicación entre los aparatos o unidades pueden ser implementados en electrónica, mecánica, u otras formas.
Las unidades descritas como partes separadas pueden o no estar físicamente separadas, y partes mostradas como unidades pueden o no ser unidades físicas, pueden estar ubicadas en una posición, o pueden distribuirse en una pluralidad de unidades de red. Algunas o todas las unidades pueden seleccionarse de acuerdo con las necesidades actuales para lograr los objetivos de las soluciones de las modalidades.
Además, unidades funcionales en las modalidades de la invención pueden estar integradas en una unidad de procesamiento, o cada una de las unidades puede existir sola físicamente, o dos o más unidades están integradas en una unidad.
Modalidades de la invención pueden comprender además un aparato, por ejemplo, codificador y/o decodificador, los cuales comprenden circuitos de procesamiento configurados para llevar a cabo uno de los métodos y/o procesos en la presente descritos.
Modalidades del codificador 100 y/o decodificador 200 pueden ser implementados como hardware, firmware, software o cualquier combinación de los mismos. Por ejemplo, la funcionalidad del codificador/codificación o decodificador/decodificación puede realizarse por medio de circuitos de procesamiento con o sin firmware o software, por ejemplo, un procesador, un microcontrolador, un procesador de señal digital (DSP), una matriz de compuerta de campo programable (FPGA), un circuito integrado de aplicación específica (ASIC), o similares.
La funcionalidad del codificador 100 (y método de codificación 100 correspondiente) y/o decodificador 200 (y método de decodificación 200 correspondiente) pueden implementarse por medio de instrucciones de programa almacenadas en un medio legible por ordenador. Las instrucciones del programa, cuando se ejecutan, ocasionan que circuitos de procesamiento, ordenador, procesador o similar, lleven a cabo los pasos de los métodos de codificación y/o decodificación. El medio legible por ordenador puede ser cualquier medio, incluyendo medios de almacenamiento no transitorio, en los cuales el programa es almacenado tal como un disco Blu-ray, DVD, CD, unidad (flash) USB, disco duro, almacenamiento de servidor disponible por medio de una red, etc.
Una modalidad de la invención comprende o es un programa de ordenador comprendiendo código de programa para realizar cualquiera de los métodos en la presente descritos, cuando se ejecutan en un ordenador.
Una modalidad de la invención comprende o es un medio legible por ordenador comprendiendo un código de programa que, cuando se ejecuta por medio de un procesador, ocasiona que un sistema de ordenador lleve a cabo cualquiera de los métodos en la presente descritos.
Una modalidad de la invención comprende o es un conjunto de chips que llevan a cabo cualquiera de los métodos descritos en la presente.
Lista de signos de referencia
100 Codificador
102 Entrada (por ejemplo, puerto de entrada, interfaz de entrada)
Bloque de imagen
Cálculo residual [unidad o paso]
Bloque residual
Transformación (por ejemplo, adicionalmente comprendiendo escalamiento) [unidad o paso] Coeficientes transformados
Cuantificación [unidad o paso]
Coeficientes cuantificados
Cuantificación inversa [unidad o paso]
Coeficientes descuantificados
Transformación inversa (por ejemplo, adicionalmente comprendiendo escalamiento) [unidad o paso] Bloque transformado inverso
Reconstrucción [unidad o paso]
Bloque reconstruido
Memoria tampón (Linea) [unidad o paso]
Muestras de referencia
Filtro de bucle [unidad o paso]
Bloque filtrado
Memoria tampón de imágenes decodificadas (DPB) [unidad o paso]
Inter estimación (o inter estimación de imagen) [unidad o paso]
Parámetros de inter estimación (por ejemplo, imagen de referencia/índice de imagen de referencia, vector de movimiento/desplazamiento)
Inter predicción (o inter predicción de imagen) [unidad o paso]
Bloque de inter predicción
Intra estimación (o intra estimación de imagen) [unidad o paso]
Parámetros de intra predicción (por ejemplo, modo de intra predicción)
Intra predicción (intra predicción de cuadro/imagen) [unidad o paso]
Bloque de intra predicción
Selección de modo [unidad o paso]
Bloque de predicción (ya sea bloque de inter predicción 145 o bloque de intra predicción 155) Codificación por entropía [unidad o paso]
Datos de imagen codificada (por ejemplo, flujo de bits)
Salida (puerto de salida, interfaz de salida)
Decodificador
Entrada (puerto/interfaz)
Decodificación por entropía
Coeficientes cuantificados
Cuantificación inversa
Coeficientes descuentificados
Transformación inversa (escalamiento)
Bloque transformado inverso
Reconstrucción (unidad)
Bloque reconstruido
Memoria tampón (Línea)
Muestras de referencia
Filtro de bucle (en filtro de bucle)
Bloque filtrado
Memoria tampón de imágenes decodificadas (DPB)
Imagen decodificada
Salida (puerto/interfaz)
Inter predicción (inter predicción de cuadro/imagen)
Bloque de inter predicción
Intra predicción (intra predicción de cuadro/imagen)
Bloque de intra predicción
Selección de modo
Bloque de predicción (bloque de inter predicción 245 o bloque de intra predicción 255)
Sistema de codificación
Dispositivo fuente
Fuente de imagen
Datos de imagen (sin procesar)
Unidad de pre-procesamiento/pre-procesador
Datos de imagen pre-procesada
Unidad/interfaz de comunicación
Dispositivo de destino
Unidad/interfaz de comunicación
Unidad de post-procesamiento/post- procesador
Datos de imagen post-procesada
Unidad/dispositivo de visualización
Datos de imagen transmitidos/recibidos/comunicados(codificados)

Claims (16)

REIVINDICACIONES
1. Un aparato para filtrar una serie de muestras (115; 215) de una imagen utilizando un filtro de bucle (120; 220) con coeficientes multiplicadores adaptativos representados por números enteros, el aparato que comprende circuitos de procesamiento que están configurados para
determinar el valor de cada coeficiente multiplicador del filtro de bucle (120; 220) a fin de estar dentro de un conjunto de valores permitidos de manera que la representación binaria del valor absoluto de cada coeficiente multiplicador con un número predeterminado L de dígitos incluya al menos un “cero”, y en donde la representación binaria es del bit mas significativo al bit menos significativo en orden, y
filtrar el conjunto de muestras (115;215) de una imagen con el filtro de bucle (120; 220);
en donde la representación binaria del valor absoluto de cada coeficiente multiplicador incluye como máximo dos “unos”.
2. Un aparato de conformidad con la reivindicación 1, en donde el valor absoluto más alto del conjunto de valores permitidos se restringe a un valor máximo predeterminado Nmax.
3. Un aparato de conformidad con las reivindicaciones 1 o 2, en donde la representación binaria del valor absoluto de cada coeficiente multiplicador incluye como máximo dos “unos”.
4. Un aparato de conformidad con cualquiera de las reivindicaciones 1 a 3, en donde el conjunto de muestras de una imagen es un conjunto de muestras (115;215) de una imagen de video.
5. Un aparato de conformidad con la reivindicación 4, en donde dicho aparato se configura para adaptar individualmente los coeficientes multiplicadores para cada imagen y cada pixel.
6. Un método para filtración de un conjunto de muestras (115;215) de una imagen utilizando un filtro de bucle (120; 220) con coeficientes multiplicadores adaptativos representados por números enteros, el método que comprende los pasos de
determinar (S80; S92, S94) el valor de cada coeficiente multiplicador del filtro de bucle (120; 220) para estar dentro un conjunto de valores permitidos de manera que la representación binaria del valor absoluto de dichos coeficientes multiplicadores con un número predeterminado L de dígitos incluya al menos un “cero”, en donde la representación binaria es del bit mas significativo al bit menos significativo en orden, y
filtrar (S82; S96) el conjunto de muestras (115;215) de una imagen con el filtro de bucle (120; 220);
en donde la representación binaria del valor absoluto de cada coeficiente multiplicador incluye como máximo dos “unos”.
7. Un aparato para codificar un conjunto de muestras actual (103) de una imagen que incluye una pluralidad de pixeles, el aparato qe comprende:
un codificador con un decodificador (110, 112, 114) para reconstruir el conjunto actual, y
el aparato de conformidad con cualquiera de las reivindicaciones 1 a 5 para filtración del conjunto reconstruido (115).
8. Un aparato de conformidad con la reivindicación 7, que comprende además circuitos de procesamiento que se configuran para
mapear los valores de los coeficientes multiplicadores a palabras código binarias; e
incluir las palabras código en un flujo de bits (330) para ser transmitidas a un aparato de decodificación (200).
9. Un aparato de conformidad con la reivindicación 8, en donde la longitud de dichas palabras código depende del número de valores de coeficientes multiplicadores distintosl.
10. Un aparato de conformidad con la reivindicación 8 o 9, en donde los circuitos de procesamiento están configurados además para
llevar a cabo una predicción de los coeficientes multiplicadores del filtro de bucle (120); y
determinar coeficientes multiplicadores residuales comparando los valores ya determinados con los valores predichos resultantes de la predicción, en donde el mapeo a palabras código binarias se aplica a los coeficientes multiplicadores residuales.
11. Un aparato de conformidad con la reivindicación 10, en donde los circuitos de procesamiento están además configurados para generar información de control de predicción e incluir la información de control de predicción en el flujo de bits (330).
12. Un aparato para decodificar un conjunto actual codificado de muestras (171) de una imagen incluyendo una pluralidad de pixeles, el aparato que comprende:
un decodificador (204, 210, 212, 214) para reconstruir el conjunto actual, y
el aparato de conformidad con cualquiera de las reivindicaciones 1 a 5 para filtrar el conjunto reconstruido (215).
13. Un aparato de conformidad con la reivindicación 12, en donde dichos circuitos de procesamiento además están configurados para obtener coeficientes multiplicadores de palabras código binarias incluidas en un flujo de bits recibido (330) aplicando una operación de mapeo.
14. Un aparato de conformidad con la reivindicación 13, en donde
dichos coeficientes multiplicadores obtenidos son coeficientes multiplicadores residuales que representan una diferencia entre los valores de coeficiente reales y coeficientes multiplicadores predichos de acuerdo con un esquema de predicción; y
los circuitos de procesamiento están configurados para determinar los valores de los coeficientes multiplicadores del filtro (220) reconstruyéndolos a partir de los coeficientes multiplicadores residuales obtenidos.
15. Un aparato de conformidad con la reivindicación 14, en donde
el esquema de predicción está indicado por medio de información de control de predicción incluida además en el flujo de bits recibido (330); y
los circuitos de procesamiento están configurados para utilizar además la información de control de predicción en la reconstrucción.
16. Un aparato de conformidad con cualquiera de las reivindicaciones 13 a 15, en donde la determinación mediante los circuitos de procesamiento incluye, además
llevar a cabo una determinación respecto a si el valor determinado de cada coeficiente multiplicador, obtenido directamente del flujo de bits recibido (330) por medio de la operación de mapeo o por reconstrucción de los coeficientes multiplicadores residuales obtenidos, está o no dentro del conjunto de valores permitidos; y, en caso de no ser así,
convertir el valor determinado a un valor más cercano que está dentro del conjunto de valores permitidos.
ES18713685T 2018-03-09 2018-03-29 Método y aparato para filtración de imagen con coeficientes multiplicadores adaptativos Active ES2905572T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP2018055979 2018-03-09
PCT/EP2018/058090 WO2019170258A1 (en) 2018-03-09 2018-03-29 Method and apparatus for image filtering with adaptive multiplier coefficients

Publications (1)

Publication Number Publication Date
ES2905572T3 true ES2905572T3 (es) 2022-04-11

Family

ID=61800553

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18713685T Active ES2905572T3 (es) 2018-03-09 2018-03-29 Método y aparato para filtración de imagen con coeficientes multiplicadores adaptativos

Country Status (14)

Country Link
US (3) US11265538B2 (es)
EP (2) EP4037315A1 (es)
JP (3) JP7124100B2 (es)
KR (3) KR20240040128A (es)
CN (3) CN111869208B (es)
AU (2) AU2018412414B2 (es)
BR (1) BR112020018410A2 (es)
CA (1) CA3092900A1 (es)
ES (1) ES2905572T3 (es)
HU (1) HUE057655T2 (es)
MX (1) MX2020009369A (es)
PL (1) PL3756346T3 (es)
PT (1) PT3756346T (es)
WO (1) WO2019170258A1 (es)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020097076A1 (en) 2018-11-05 2020-05-14 Usic, Llc Systems and methods for autonomous marking identification
US11467582B2 (en) 2018-11-05 2022-10-11 Usic, Llc Systems and methods for an autonomous marking apparatus
US11936916B2 (en) * 2019-06-25 2024-03-19 Lg Electronics Inc. Image decoding method using lossless coding in image coding system and apparatus therefor

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200501565A (en) * 2003-05-15 2005-01-01 Neuro Solution Corp Digital filter and design method, design apparatus, and digital filter design program thereof
CN1964490A (zh) * 2005-11-09 2007-05-16 松下电器产业株式会社 一种滤波器及滤波方法
EP2048886A1 (en) * 2007-10-11 2009-04-15 Panasonic Corporation Coding of adaptive interpolation filter coefficients
RU2010119176A (ru) 2007-10-14 2011-11-20 Нокиа Корпорейшн (Fi) Реализация адаптивного фильтра изображений с фиксированной точкой с высокой эффективностью кодирования
CN101163246B (zh) * 2007-11-30 2010-06-23 北京航空航天大学 一种数字电视多媒体广播传输系统激励器
US8805100B2 (en) * 2010-06-03 2014-08-12 Sharp Kabushiki Kaisha Filter device, image decoding device, image encoding device, and filter parameter data structure
JP5685908B2 (ja) * 2010-11-30 2015-03-18 富士通株式会社 ループフィルタ
US8917950B2 (en) * 2011-01-18 2014-12-23 Sony Corporation Simplifying parametric loop filters
CN102857751B (zh) * 2011-07-01 2015-01-21 华为技术有限公司 一种视频编解码方法和装置
AU2012303976B2 (en) * 2011-08-31 2015-08-13 Mediatek Inc. Method and apparatus for adaptive loop filter with constrained filter coefficients
US10129540B2 (en) * 2012-04-10 2018-11-13 Texas Instruments Incorporated Reduced complexity coefficient transmission for adaptive loop filtering (ALF) in video coding
US20140010278A1 (en) * 2012-07-09 2014-01-09 Motorola Mobility Llc Method and apparatus for coding adaptive-loop filter coefficients
US9047665B2 (en) * 2013-08-21 2015-06-02 Panasonic Intellectual Property Management Co., Ltd. Image processing apparatus
CN103700072A (zh) * 2013-12-17 2014-04-02 北京工业大学 一种基于自适应小波阈值和双边滤波器的图像去噪方法
US10057574B2 (en) * 2015-02-11 2018-08-21 Qualcomm Incorporated Coding tree unit (CTU) level adaptive loop filter (ALF)
CN104734668B (zh) * 2015-03-31 2017-11-07 中国科学院微电子研究所 一种插值滤波器
CN105808206B (zh) * 2016-03-04 2019-01-08 广州海格通信集团股份有限公司 基于ram实现乘法运算的方法及其系统
JP7094076B2 (ja) * 2016-08-19 2022-07-01 沖電気工業株式会社 映像符号化装置、プログラム及び方法、並びに、映像復号装置、プログラム及び方法、並びに、映像伝送システム
CN107295353B (zh) * 2017-08-15 2019-12-31 电子科技大学 视频编码参考块滤波方法

Also Published As

Publication number Publication date
JP2022172137A (ja) 2022-11-15
HUE057655T2 (hu) 2022-06-28
EP3756346B1 (en) 2021-12-29
RU2020133183A3 (es) 2022-04-11
JP2021515494A (ja) 2021-06-17
KR20220153105A (ko) 2022-11-17
US11265538B2 (en) 2022-03-01
MX2020009369A (es) 2020-12-11
PL3756346T3 (pl) 2022-02-21
US20220224895A1 (en) 2022-07-14
CN113965765A (zh) 2022-01-21
AU2018412414A1 (en) 2020-10-15
AU2018412414B2 (en) 2023-05-11
EP3756346A1 (en) 2020-12-30
KR20200123826A (ko) 2020-10-30
RU2020133183A (ru) 2022-04-11
JP7124100B2 (ja) 2022-08-23
US20200413054A1 (en) 2020-12-31
US11765351B2 (en) 2023-09-19
JP7384974B2 (ja) 2023-11-21
CN114125444B (zh) 2022-10-11
PT3756346T (pt) 2022-02-03
KR102464520B1 (ko) 2022-11-07
CN114125444A (zh) 2022-03-01
BR112020018410A2 (pt) 2020-12-22
KR20240040128A (ko) 2024-03-27
CA3092900A1 (en) 2019-09-12
US20230388493A1 (en) 2023-11-30
CN111869208B (zh) 2021-10-26
AU2023214322A1 (en) 2023-08-31
EP4037315A1 (en) 2022-08-03
JP2024020330A (ja) 2024-02-14
WO2019170258A1 (en) 2019-09-12
CN111869208A (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
CN111819852A (zh) 用于变换域中残差符号预测的方法及装置
CN111801941B (zh) 用于利用自适应乘数系数进行图像滤波的方法及装置
JP7384974B2 (ja) 適応乗算係数を用いた画像フィルタリングのための方法および装置
BR112021009911A2 (pt) codificador, decodificador e métodos correspondentes usando armazenamento de mv compacto
CN113615194A (zh) 使用抽取预测块的dmvr
CN113243106B (zh) 一种用于视频图像的预测块的帧内预测的设备和方法
CN111263166B (zh) 一种视频图像预测方法及装置
BR112020026183A2 (pt) Método de codificação de vídeo, codificador, decodificador e produto de programa de computador
WO2020015841A1 (en) Method and apparatus of reference sample interpolation for bidirectional intra prediction
CN113316939A (zh) 一种标志位的上下文建模方法及装置
BR112020026879A2 (pt) Dispositivo e método para intra predição
RU2772313C2 (ru) Способ и устройство для фильтрации изображений с адаптивными коэффициентами множителя