ES2633476T3 - Filtrado de tipo interpolación de posiciones de píxeles enteros en la codificación de vídeo - Google Patents
Filtrado de tipo interpolación de posiciones de píxeles enteros en la codificación de vídeo Download PDFInfo
- Publication number
- ES2633476T3 ES2633476T3 ES14184120.5T ES14184120T ES2633476T3 ES 2633476 T3 ES2633476 T3 ES 2633476T3 ES 14184120 T ES14184120 T ES 14184120T ES 2633476 T3 ES2633476 T3 ES 2633476T3
- Authority
- ES
- Spain
- Prior art keywords
- pixel
- filter
- coefficients
- video
- positions
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N19/122—Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/192—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
- H04N19/635—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by filter definition or implementation details
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Un método para realizar un proceso de compensación de movimiento durante la codificación o decodificación de un bloque de vídeo dentro de una trama codificada de una secuencia de vídeo, comprendiendo el método: obtener bloques de píxeles desde una o más tramas de vídeo de referencia en el proceso de compensación de movimiento, en el que los bloques de píxeles comprenden bloques de referencia reconstruidos que se decodificaron previamente e incluyen valores de píxeles enteros correspondientes a posiciones de píxeles enteros dentro de los bloques de píxeles; aplicar un filtrado a un valor de píxel entero de los valores de píxeles enteros basándose en otros valores de píxeles enteros dentro de los bloques de píxeles y un valor de píxel entero original del valor de píxel entero para generar un valor de píxel entero ajustado, en el que el valor de píxel entero ajustado corresponde a una posición de píxel entero rodeada por otras posiciones de píxeles enteros a las que corresponden los otros valores de píxeles enteros, y generar un bloque de predicción en el proceso de compensación de movimiento durante la codificación o decodificación del bloque de vídeo basado, al menos en parte, en el valor de píxel entero ajustado; estando el método caracterizado por que un filtro de interpolación de 5 por 5 en forma de**Fórmula** se usa para filtrar el píxel entero, en el que pFP es el valor de píxel entero ajustado, Pi,j es el valor de píxel entero en la posición (i, j), hFPi,j es el coeficiente para la posición (i, j), y oFP es un desfase de filtro.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Filtrado de tipo interpolacion de posiciones de pfxeles enteros en la codificacion de video CAMPO TECNICO
Esta divulgacion se refiere a la codificacion y decodificacion de video digital y, mas particularmente, a tecnicas de filtrado aplicadas para generar datos predictivos utilizados en la codificacion y decodificacion de video.
ANTECEDENTES
Las capacidades del video digital pueden incorporarse en una amplia gama de dispositivos, incluyendo televisiones digitales, sistemas de radiodifusion directa digitales, sistemas de radiodifusion inalambricos, asistentes digitales personales (PDA), ordenadores portatiles o de escritorio, camaras digitales, dispositivos de grabacion digitales, dispositivos de videojuegos, consolas de videojuegos, telefonos celulares o de radio por satelite, y similares. Los dispositivos de video digital implementan tecnicas de compresion de video, tales como las descritas en estandares definidos por las normas MpEg-2, MPEG-4 o ITU-T H.264/MPEG-4, parte 10, Codificacion avanzada de video (AVC), para transmitir y recibir informacion de video digital de manera mas eficiente. Las tecnicas de compresion de video pueden realizar una prediccion espacial y/o una prediccion temporal para reducir o eliminar la redundancia inherente a las secuencias de video.
La intercodificacion basada en bloques es una tecnica de codificacion muy util que se basa en la prediccion temporal para reducir o eliminar la redundancia temporal entre bloques de video de unidades codificadas sucesivas de una secuencia de video. Las unidades codificadas pueden comprender tramas de video, fragmentos de tramas de video, grupos de imagenes u otra unidad definida de bloques de video codificados. Para la intercodificacion, un codificador de video realiza estimacion de movimiento y compensacion de movimiento para rastrear el movimiento de los bloques de video correspondientes de dos o mas unidades codificadas adyacentes. La estimacion de movimiento genera vectores de movimiento, que indican un desplazamiento de bloques de video en relacion con los correspondientes bloques de video de prediccion de una o mas tramas de referencia u otras unidades codificadas. La compensacion de movimiento utiliza los vectores de movimiento para generar bloques de video de prediccion a partir de la una o mas tramas de referencia u otras unidades codificadas. Despues de la compensacion de movimiento, los bloques de video residuales se forman restando bloques de video de prediccion de los bloques de video originales que se estan codificando.
El codificador de video tambien puede aplicar procedimientos de codificacion de transformada, cuantificacion y entropfa para reducir aun mas la velocidad de bits asociada con la transmision de bloques residuales. Las tecnicas de transformada pueden comprender transformadas de coseno discretas (DCT) o procesos conceptualmente similares. De forma alternativa, pueden utilizarse transformadas de ondfcula, transformadas enteras u otros tipos de transformadas. A tftulo de ejemplo, en un proceso de DCT, un conjunto de valores de pixel se convierte en coeficientes de transformada, que puede representar la energfa de los valores de pixel en el dominio de la frecuencia. La cuantificacion se aplica a los coeficientes de transformada, y generalmente implica un proceso que reduce el numero de bits asociados con cualquier coeficiente de transformada dado. La codificacion por entropfa comprende uno o mas procesos que comprimen colectivamente una secuencia de modos de codificacion, informacion de movimiento, patrones de bloques codificados y coeficientes de transformada cuantificados. Entre los ejemplos de codificacion por entropfa se incluyen, pero no se limitan a, la codificacion de longitud variable adaptativa al contenido (CAVLC) y la codificacion aritmetica binaria adaptativa al contexto (CABAC).
Un bloque de video codificado puede representarse mediante informacion de prediccion que se puede utilizar para crear o identificar un bloque predictivo, y un bloque residual de datos indicativos de diferentes entre el bloque que se esta codificando y el bloque predictivo. La informacion de prediccion puede comprender uno o mas vectores de movimiento que se utilizan para identificar el bloque de datos predictivo. Dados los vectores de movimiento, el decodificador puede ser capaz de reconstruir los bloques predictivos que se utilizaron para codificar el residuo. Por lo tanto, dado un conjunto de bloques residuales y un conjunto de vectores de movimiento (y posiblemente sintaxis adicional), el decodificador puede reconstruir una trama de video que se codifico originalmente. La intercodificacion basada en estimacion de movimiento y compensacion de movimiento puede alcanzar muy buena compresion, porque las tramas de video sucesivas u otros tipos de unidades codificadas a menudo son muy similares. Una secuencia de video codificada puede comprender bloques de datos residuales, vectores de movimiento y posiblemente otros tipos de sintaxis.
Se han desarrollado tecnicas de interpolacion para mejorar el nivel de compresion que puede lograrse en la intercodificacion. En este caso, los datos predictivos generados durante la compensacion de movimiento, que se usan para codificar un bloque de video, pueden interpolarse a partir de los pfxeles de bloques de video de la trama de video u otra unidad codificada utilizada en la estimacion de movimiento. La interpolacion se realiza a menudo para generar valores de medio pixel predictivos (medio pel) y valores de cuarto de pixel predictivos (cuarto de pel). Los valores de medio y de cuarto pel estan asociados con ubicaciones de subpfxeles. Pueden usarse vectores de movimiento fraccional para identificar bloques de video en la resolucion de subpfxeles con el fin de capturar el
5
10
15
20
25
30
35
40
45
50
55
60
65
movimiento fraccional en una secuencia de video y, de este modo, proporcionar bloques predictivos que son mas similares a los bloques de video que se estan codificando los bloques de video de enteros. El documento EP1641274 A1 describe un enfoque para reducir la transmision de errores de prediccion eliminando el grano de pelfcula de aquellas imagenes que se usan como imagenes de referencia para la codificacion predictiva. Esto se consigue incluyendo un filtro de separacion junto con un filtro de desbloqueo en el bucle de decodificacion.
SUMARIO
En general, esta divulgacion describe tecnicas de filtrado aplicadas por un codificador y un decodificador durante la fase de prediccion de un proceso de codificacion y/o decodificacion de video. Las tecnicas de filtrado descritas pueden mejorar la precision de los datos predictivos utilizados durante la interpolacion fraccional y, en algunos casos, pueden mejorar los datos predictivos de bloques de enteros de pfxeles. Hay varios aspectos de esta descripcion, incluyendo un soporte de filtro de doce pfxeles util que se puede usar para interpolacion, tecnicas que utilizan simetrfa de coeficiente y simetrfa de pfxeles para reducir la cantidad de datos que se necesitan enviar entre un codificador y un decodificador para configurar el soporte de filtro para interpolacion y tecnicas para filtrar datos en ubicaciones de pfxeles enteros de una manera similar a la interpolacion de subpfxeles. Otros aspectos de esta divulgacion se refieren a tecnicas para codificar informacion en el flujo de datos para transportar el tipo de filtro utilizado y, posiblemente, los coeficientes de filtro utilizados. Tambien se describen tecnicas de codificacion predictiva para coeficientes de filtro. Estos y otros aspectos de esta divulgacion resultaran evidentes a partir de la siguiente descripcion.
En un ejemplo, esta divulgacion proporciona un metodo que comprende obtener bloques de pfxeles, en el que los bloques de pfxeles incluyen valores de pfxeles enteros correspondientes a posiciones de pfxeles enteros dentro de los bloques de pfxeles, filtrar los valores de pfxeles enteros basados en otros valores de pfxeles enteros dentro del bloque de pfxeles para generar valores de pfxeles enteros ajustados, en el que los valores de pfxeles enteros ajustados corresponden a las posiciones de pfxeles enteros, y generar un bloque de prediccion basado en los valores de pfxeles enteros ajustados.
El filtrado de pfxeles enteros dentro de un proceso de compensacion de movimiento se conoce a partir del filtro de desbloqueo AVC/H.264 como se divulga en "Adaptive deblocking filter", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, vol. 13, n.° 7, 1 de julio de 2003.
Un concepto de filtrado de pfxeles enteros en un bucle de prediccion para reducir el ruido de una imagen de entrada tambien se conoce a partir del documento EP1641274.
En otro ejemplo, esta divulgacion proporciona un aparato que comprende un codificador de video que obtiene bloques de pfxeles, en el que los bloques de pfxeles incluyen valores de pfxeles enteros correspondientes a posiciones de pfxeles enteros dentro de los bloques de pfxeles, filtra los valores de pfxeles enteros basados en otros valores de pfxeles enteros dentro del bloque de pfxeles para generar valores de pfxeles enteros ajustados, en el que los valores de pfxeles enteros ajustados corresponden a las posiciones de pfxeles enteros, y genera un bloque de prediccion basado en los valores de pfxeles enteros ajustados.
En otro ejemplo, esta divulgacion proporciona un dispositivo que comprende medios para obtener bloques de pfxeles, en el que los bloques de pfxeles incluyen valores de pfxeles enteros correspondientes a posiciones de pfxeles enteros dentro de los bloques de pfxeles, medios para filtrar los valores de pfxeles enteros basados en otros valores de pfxeles enteros dentro del bloque de pfxeles para generar valores de pfxeles enteros ajustados, en el que los valores de pfxeles enteros ajustados corresponden a las posiciones de pfxeles enteros, y medios para generar un bloque de prediccion basado en los valores de pfxeles enteros ajustados.
Las tecnicas descritas en la presente divulgacion pueden implementarse en hardware, software, firmware o cualquier combinacion de estos. Si se implementa en software, el software puede ejecutarse en uno o mas procesadores, tales como un microprocesador, un circuito integrado especffico de la aplicacion (ASIC), una matriz de puertas programables in situ (FPGA) o un procesador de senales digitales (DSP). El software que ejecuta las tecnicas se puede almacenar inicialmente en un medio legible por ordenador y cargar y ejecutar en el procesador.
Por consiguiente, esta divulgacion tambien contempla un medio de almacenamiento legible por ordenador que comprende instrucciones que, al ejecutarse por un procesador, hacen que el procesador obtenga bloques de pfxeles, en el que los bloques de pfxeles incluyen valores de pfxeles enteros correspondientes a posiciones de pfxeles enteros dentro de los bloques de pfxeles, filtre los valores de pfxeles enteros basados en otros valores de pfxeles enteros dentro del bloque de pfxeles para generar valores de pfxeles enteros ajustados, en el que los valores de pfxeles enteros ajustados corresponden a las posiciones de pfxeles enteros, y genere un bloque de prediccion basado en los valores de pfxeles enteros ajustados.
Los detalles de uno o mas aspectos de la divulgacion se exponen en los dibujos adjuntos y la descripcion siguiente. Otras caracterfsticas, objetivos y ventajas de las tecnicas descritas en la presente divulgacion resultaran evidentes a partir de la descripcion y los dibujos, y a partir de las reivindicaciones.
5
10
15
20
25
30
35
40
45
50
55
60
65
BREVE DESCRIPCION DE LOS DIBUJOS
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificacion y decodificacion de video ejemplar que puede implementar las tecnicas de esta divulgacion.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de video que puede realizar las tecnicas de filtrado coherentes con esta divulgacion.
La FIG. 3 es un diagrama conceptual que ilustra posiciones de pfxeles enteros asociadas con datos de prediccion, y posiciones de subpfxeles asociadas con datos de prediccion interpolados.
La FIG. 4 es un diagrama conceptual que ilustra un soporte de filtro de 12 pfxeles con respecto a nueve ubicaciones de subpfxeles.
La FIG. 5 es un diagrama conceptual que ilustra un soporte de filtro horizontal de 6 pfxeles con respecto a tres ubicaciones de subpfxeles horizontales, y un soporte de filtro vertical de 6 pfxeles con respecto a tres ubicaciones verticales de subpfxeles.
La FIG. 6 es un diagrama conceptual que ilustra un soporte de filtro de cinco pfxeles por cinco pfxeles para filtrar una ubicacion de pfxeles enteros.
La FIG. 7 es un diagrama conceptual que ilustra cuatro posiciones de pfxeles enteros y quince posiciones de subpfxeles con sombreado para posiciones de pfxeles en grupos que pueden utilizar simetrfa de pfxeles para coeficientes de filtro coherentes con esta divulgacion.
La FIG. 8 es un diagrama conceptual que ilustra seis posiciones de soporte de pfxeles lineales horizontales con relacion a un subpixel, con sombreado que muestra simetrfa de coeficientes.
La FIG. 9 es un diagrama conceptual que ilustra seis posiciones de soporte de pfxeles lineales horizontales con relacion a un subpixel, con sombreado que muestra una falta de simetrfa de coeficientes.
La FIG. 10 es un diagrama conceptual que ilustra seis posiciones de soporte de pfxeles lineales verticales con relacion a un subpixel, con sombreado que muestra simetrfa de coeficientes.
La FIG. 11 es un diagrama conceptual que ilustra seis posiciones de soporte de pfxeles lineales verticales con relacion a un subpixel, con sombreado que muestra una falta de simetrfa de coeficientes.
La FIG. 12 es un diagrama conceptual que ilustra dos posiciones de soporte de pfxeles bidimensionales con relacion a un subpixel, con sombreado que muestra una falta de simetrfa de coeficientes.
La FIG. 13 es un diagrama conceptual que ilustra dos posiciones de soporte de pfxeles bidimensionales con relacion a un subpixel, con sombreado que muestra simetrfa de coeficientes.
La FIG. 14 es un diagrama conceptual que ilustra dos posiciones de soporte de pfxeles bidimensionales con relacion a un subpixel, con sombreado que muestra simetrfa de coeficientes.
La FIG. 15 es un diagrama conceptual que ilustra dos posiciones de soporte de pfxeles bidimensionales con relacion a un subpixel, con sombreado que muestra simetrfa de coeficientes.
La FIG. 16 es un diagrama de bloques que ilustra un ejemplo de un decodificador de video, que puede decodificar una secuencia de video que se codifica de manera descrita en el presente documento.
La FIG. 17 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un codificador de video que utiliza un soporte de filtro de doce pfxeles coherente con esta divulgacion.
La FIG. 18 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un decodificador de video que utiliza un soporte de filtro de doce pfxeles coherente con esta divulgacion.
La FIG. 19 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un codificador de video que utiliza simetrfa de coeficientes y simetrfa de pfxeles coherente con esta divulgacion.
La FIG. 20 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un decodificador de video que utiliza simetrfa de coeficientes y simetrfa de pfxeles coherente con esta divulgacion.
La FIG. 21 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un codificador de video que utiliza el
5
10
15
20
25
30
35
40
45
50
55
60
65
filtrado de ubicaciones de pfxeles enteros para generar valores de pfxeles enteros ajustados consistentes con esta divulgacion.
La FIG. 22 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un decodificador de video que utiliza el filtrado de ubicaciones de pfxeles enteros para generar valores de pfxeles enteros ajustados consistentes con esta divulgacion.
La FIG. 23 es un diagrama de flujo que ilustra una tecnica para la interpolacion definida por distorsion de velocidad para la codificacion de video basada en un filtro fijo o un filtro adaptativo.
La FIG. 24 es un diagrama de flujo que ilustra una tecnica para codificar coeficientes de filtro usando codificacion predictiva.
La FIG. 25 es otro diagrama de flujo que ilustra una tecnica para codificar coeficientes de filtro usando codificacion predictiva.
La FIG. 26 es un diagrama de flujo que ilustra una tecnica para decodificar coeficientes de filtro usando codificacion predictiva.
Las FIGS. 27 y 28 son graficos conceptuales que ilustran coeficientes de filtro que pueden codificarse de forma predictiva.
La FIG. 29 es un ejemplo ilustrativo de una matriz de coeficientes de filtro de pfxeles enteros para los que pueden usarse tecnicas de prediccion para la codificacion.
DESCRIPCION DETALLADA
Esta divulgacion describe tecnicas de filtrado aplicadas por un codificador y un decodificador durante la fase de prediccion de un proceso de codificacion y/o decodificacion de video. Las tecnicas de filtrado descritas pueden mejorar la precision de los datos predictivos utilizados durante la interpolacion fraccional y, en algunos casos, pueden mejorar los datos predictivos de bloques de enteros de pfxeles. Hay varios aspectos de esta descripcion, incluyendo un soporte de filtro de doce pfxeles util que se puede usar para interpolacion, tecnicas que utilizan simetrfa de coeficiente y simetrfa de pfxeles para reducir la cantidad de datos que se necesitan enviar entre un codificador y un decodificador para configurar el soporte de filtro para interpolacion y tecnicas para filtrar datos en ubicaciones de pfxeles enteros de una manera similar a la interpolacion de subpfxeles. Estas y otras tecnicas se describen en detalle a continuacion.
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificacion y decodificacion de video ejemplar 10 que puede usarse para implementar una o mas de las tecnicas de esta divulgacion. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que transmite video codificado a un dispositivo de destino 16 a traves de un canal de comunicacion 15. El dispositivo de origen 12 y el dispositivo de destino 16 pueden comprender cualquiera de una amplia gama de dispositivos. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 16 comprenden dispositivos de comunicacion inalambricos, tales como microtelefonos inalambricos, los denominados radiotelefonos celulares o via satelite, o cualquier dispositivo inalambrico que pueda comunicar informacion de video a traves de un canal de comunicacion 15, donde el canal de comunicacion 15 es inalambrico en este caso. Sin embargo, las tecnicas de esta divulgacion, que se refieren al filtrado y la generacion de datos predictivos durante la codificacion predictiva, no estan necesariamente limitadas a aplicaciones o configuraciones inalambricas. Las tecnicas tambien pueden ser utiles en una amplia gama de configuraciones y dispositivos diferentes, incluidos los dispositivos que se comunican a traves de cables ffsicos, fibras opticas u otros medios ffsicos o inalambricos. Ademas, las tecnicas de codificacion o decodificacion tambien pueden aplicarse en un dispositivo autonomo que no necesariamente se comunica con otro dispositivo.
En el ejemplo de la FIG. 1, el dispositivo de origen 12 puede incluir una fuente de video 20, un codificador de video 22, un modulador/demodulador (modem) 23 y un transmisor 24. El dispositivo de destino 16 puede incluir un receptor 26, un modem 27, un decodificador de video 28 y un dispositivo de visualizacion 30. De acuerdo con la presente divulgacion, el codificador de video 22 del dispositivo de origen 12 puede estar configurado para aplicar una o mas de las tecnicas de la presente divulgacion como parte de un proceso de codificacion de video. De manera similar, el decodificador de video 28 del dispositivo de destino 16 puede estar configurado para aplicar una o mas de las tecnicas de la presente divulgacion como parte de un proceso de decodificacion de video.
De nuevo, el sistema ilustrado 10 de la FIG. 1, es simplemente ejemplar. Las diversas tecnicas de la presente divulgacion pueden realizarse mediante cualquier dispositivo de codificacion que admita la codificacion predictiva basada en bloques, o mediante cualquier dispositivo de decodificacion que admita la decodificacion predictiva basada en bloques. El dispositivo de origen 12 y el dispositivo de destino 16 son simplemente ejemplos de dichos dispositivos de codificacion, en los que el dispositivo de origen 12 genera datos de video codificados para su transmision al dispositivo de destino 16. En algunos casos, los dispositivos 12, 16 pueden funcionar de manera
5
10
15
20
25
30
35
40
45
50
55
60
65
esencialmente simetrica, de modo que cada uno de los dispositivos 12, 16 incluya componentes de codificacion y de decodificacion de video. Por lo tanto, el sistema 10 puede dar soporte a una transmision de video unidireccional o bidireccional entre los dispositivos de video 12, 16, por ejemplo, para la transmision de video, la reproduccion de video, la radiodifusion de video o la videotelefoma.
La fuente de video 20 del dispositivo de origen 12 incluye un dispositivo de captacion de video, tal como una camara de video, un archivo de video que contiene video captado previamente o video procedente de un proveedor de contenido de video. Como una alternativa adicional, la fuente de video 20 puede generar datos basados en graficos de ordenador como el video de origen, o una combinacion de video en directo, video archivado y video generado por ordenador. En algunos casos, si la fuente de video 20 es una videocamara, el dispositivo fuente 12 y el dispositivo de destino 16 pueden formar los denominados telefonos con camara o videotelefonos. En cada caso, el video captado, precaptado o generado por ordenador puede codificarse mediante el codificador de video 22. La informacion de video codificada puede modularse entonces mediante un modem 23 segun una norma de comunicacion, por ejemplo, tal como acceso multiple por division de codigo (CDMA) u otra norma de comunicacion, y transmitirse al dispositivo de destino 16 a traves del transmitir 24 y el canal de comunicacion 15. El modem 23 puede incluir varios mezcladores, filtros, amplificadores u otros componentes disenados para la modulacion de senales. El transmisor 24 puede incluir circuitos disenados para transmitir datos, incluidos amplificadores, filtros y una o mas antenas.
El receptor 26 del dispositivo de destino 16 recibe informacion a traves del canal de comunicacion 15, y el modem 27 demodula la informacion. Como el transmisor 24, el receptor 26 puede incluir circuitos disenados para recibir datos, que incluyen amplificadores, filtros y una o mas antenas. En algunos casos, el transmisor 24 y/o el receptor 26 pueden incorporarse dentro de un unico componente de transceptor que incluye tanto circuitos de recepcion como de transmision. El modem 27 puede incluir varios mezcladores, filtros, amplificadores u otros componentes disenados para la demodulacion de senales. En algunos casos, los modems 23 y 27 pueden incluir componentes para realizar la modulacion y la demodulacion.
De nuevo, el proceso de codificacion de video realizado por el codificador de video 22 puede implementar una o mas de las tecnicas descritas en el presente documento durante la compensacion de movimiento. El proceso de decodificacion de video realizado por el decodificador de video 28 puede realizar tambien dichas tecnicas durante su fase de compensacion de movimiento del proceso de decodificacion. El termino "codificador" se utiliza en el presente documento para referirse a un dispositivo o aparato informatico especializado que realiza la codificacion o la decodificacion de video. El termino "codificador" se refiere en general a cualquier codificador de video, decodificador de video o codificador/decodificador combinado (codec). El termino "codificacion" se refiere a la codificacion o la decodificacion. El dispositivo de visualizacion 30 muestra los datos de video descodificados a un usuario y puede comprender cualquiera entre una variedad de dispositivos de visualizacion, tales como un tubo de rayos catodicos (CRT), una pantalla de cristal lfquido (LCD), una pantalla de plasma, una pantalla de diodos organicos emisores de luz (OLED) u otro tipo de dispositivo de visualizacion.
En el ejemplo de la FIG. 1, el canal de comunicacion 15 puede comprender cualquier medio de comunicacion inalambrico o cableado, tal como un espectro de radiofrecuencia (RF) o una o mas lmeas de transmision ffsica, o cualquier combinacion de medios inalambricos y cableados. El canal de comunicacion 15 puede formar parte de una red basada en paquetes, tal como una red de area local, una red de area extensa o una red global tal como Internet. El canal de comunicacion 15 representa generalmente cualquier medio de comunicacion adecuado, o un conjunto de diferentes medios de comunicacion, para transmitir datos de video desde el dispositivo de origen 12 hasta el dispositivo de destino 16. El canal de comunicacion 15 puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser util para facilitar la comunicacion desde el dispositivo de origen 12 al dispositivo de destino 16.
El codificador de video 22 y el decodificador de video 28 pueden funcionar de acuerdo con una norma de compresion de video, tal como la norma UIT-T H.264, de forma alternativa descrita como MPEG-4, Parte 10, Codificacion avanzada de video (AVC). Sin embargo, las tecnicas de la presente divulgacion no estan limitadas a ninguna norma de codificacion de video particular. Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de video 22 y el descodificador de video 28 pueden estar integrado, cada uno de ellos, con un codificador y descodificador de audio, y pueden incluir unidades adecuadas de multiplexado y demultiplexado, u otro hardware y software, para gestionar la codificacion, tanto de audio como de video, en un flujo de datos comun o en flujos de datos diferentes. Si procede, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexado UIT H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
El codificador de video 22 y el decodificador de video 28 pueden implementarse como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados espedficos de la aplicacion (ASIC), matrices de puertas programables in situ (FPGA), logica discreta, software, hardware, firmware o cualquier combinacion de estos. El codificador de video 22 y el decodificador de video 28 pueden incluirse cada uno en uno o mas codificadores o decodificadores, donde cualquiera de los cuales puede estar integrado como parte de un codec combinado que proporciona capacidades de codificacion y decodificacion en un respectivo dispositivo movil, dispositivo de abonado, dispositivo de radiodifusion, servidor o similares.
5
10
15
20
25
30
35
40
45
50
55
60
65
Una secuencia de video incluye tipicamente una serie de tramas de video. Un codificador de video 22 actua en bloques de video de tramas de video individuales con el fin de codificar los datos de video. Los bloques de video pueden presentar tamanos fijos o variables y pueden diferir en tamano de acuerdo con una norma de codificacion especificada. Cada trama de video incluye una serie de fragmentos. Cada fragmento puede incluir una serie de macrobloques, que pueden disponerse en subbloques. En un ejemplo, la norma UIT-T H.264 admite la intraprediccion en varios tamanos de bloque, tales como 16 por 16, 8 por 8 o 4 por 4 para componentes de luma, y 8x8 para componentes de croma, asf como interprediccion en varios tamanos de bloque, tales como 16 por 16, 16 por 8, 8 por 16, 8 por 8, 8 por 4, 4 por 8 y 4 por 4 para componentes de luma y tamanos escalados correspondientes para componentes de croma. Los bloques de video pueden comprender bloques de datos de pixel, o bloques de coeficientes de transformada, por ejemplo, tras un proceso de transformada tal como de transformada de coseno discreta (DCT) o un proceso de transformada conceptualmente similar.
Bloques de video mas pequenos pueden proporcionar una mejor resolucion y pueden usarse en ubicaciones de una trama de video que incluyen altos niveles de detalle. En general, los macrobloques y los diversos subbloques pueden considerarse como bloques de video. Ademas, un fragmento puede considerarse una serie de bloques de video, tales como macrobloques y/o subbloques. Cada fragmento puede ser una unidad independientemente decodificable de una trama de video. De forma alternativa, las propias tramas pueden ser unidades decodificables, o pueden definirse otras partes de una trama como unidades decodificables. El termino "unidad codificada" se refiere a cualquier unidad de una trama de video que puede decodificarse de manera independiente, tal como una trama completa, un fragmento de una trama, u otra unidad que pueda decodificarse de manera independiente definida de acuerdo con las tecnicas de codificacion utilizadas.
Para codificar los bloques de video, el codificador de video 22 realiza intra o interprediccion para generar un bloque de prediccion. El codificador de video 22 resta los bloques de prediccion de los bloques de video originales que se van a codificar para generar bloques residuales. De este modo, los bloques residuales son indicativos de diferencias de pixel a pixel entre los bloques que se codifican y los bloques de prediccion. El codificador de video 22 puede aplicar una transformada a los bloques residuales para generar bloques de coeficientes de transformada. Siguiendo las tecnicas de codificacion de intra o interprediccion y de transformada, el codificador de video 22 realiza la cuantificacion. La cuantificacion se refiere en general a un proceso en el que los coeficientes se cuantifican para reducir posiblemente la cantidad de datos utilizados para representar los coeficientes. Despues de la cuantificacion, la codificacion por entropfa se puede realizar de acuerdo con una metodologfa de codificacion por entropfa, tal como la codificacion de longitud variable adaptativa al contexto (CAVLC) o la codificacion aritmetica binaria adaptativa al contexto (CABAC). Mas detalles de cada etapa del proceso de codificacion realizado por el codificador de video 22 se describiran con mas detalle a continuacion en la FIG. 2.
En el dispositivo de destino 16, el decodificador de video 28 recibe los datos de video codificados. El decodificador de video 28 realiza la decodificacion por entropfa de los datos de video de acuerdo con una metodologfa de codificacion por entropfa, tal como la CAVLC o la CABAC, para obtener los coeficientes cuantificados. El decodificador de video 28 aplica las funciones de cuantificacion inversa (decuantificacion) y de transformada inversa para reconstruir el bloque residual en el dominio del pixel. El decodificador 28 de video genera tambien un bloque de prediccion basado en informacion de control o informacion de sintaxis (por ejemplo, modalidad de codificacion, vectores de movimiento, sintaxis que define coeficientes de filtro y similares) incluidos en los datos de video codificados. El decodificador de video 28 suma el bloque de prediccion con el bloque residual reconstruido para generar un bloque de video reconstruido para su visualizacion. Mas detalles de cada etapa del proceso de codificacion realizado por el codificador de video 22 se describiran con mas detalle a continuacion en la FIG. 16.
De acuerdo con las tecnicas de esta divulgacion, el codificador de video 22 y el decodificador de video 28 pueden utilizar la una o mas tecnicas de filtrado de interpolacion durante la compensacion de movimiento. En particular, de acuerdo con un aspecto de esta divulgacion, el codificador de video 22 y/o el decodificador de video 28 puede obtener un bloque de pfxeles, en el que el bloque de pfxeles incluye valores de pfxeles enteros correspondientes a posiciones de pfxeles enteros dentro del bloque de pfxeles, calculan valores de subpfxeles para posiciones de subpfxeles asociadas con el bloque de pfxeles en base a los valores de pfxeles enteros, en el que el calculo de los valores de subpfxeles comprende aplicar un filtro de interpolacion que define una matriz bidimensional de posiciones de soporte de filtro que corresponde a un conjunto de doce o mas posiciones de pfxeles enteros que rodean las posiciones de subpfxeles de una forma radial, y generar un bloque de prediccion basado en al menos algunos de los valores de subpfxeles. Un ejemplo de la matriz bidimensional de posiciones de soporte de filtro que corresponde a un conjunto de doce o mas posiciones de pfxeles enteros se explica con mayor detalle a continuacion.
De acuerdo con otro aspecto de esta divulgacion, el codificador de video 22 y/o el decodificador de video 28 pueden utilizar aspectos de simetrfa para reducir la cantidad de datos que necesitan para comunicarse entre el dispositivo de origen 12 y el dispositivo de destino 16 para la comunicacion de coeficientes de filtro utilizados en la interpolacion. El codificador de video 22 puede determinar ocho conjuntos de coeficientes de filtro para quince ubicaciones de subpfxeles diferentes, en el que los ocho conjuntos de coeficientes de filtro se generan basandose en la simetrfa de coeficientes y la simetrfa de pfxeles entre quince ubicaciones de subpfxeles, y emiten los ocho conjuntos de coeficientes de filtro a otro dispositivo como parte de un flujo de bits codificado. De esta manera, los ocho conjuntos,
5
10
15
20
25
30
35
40
45
50
55
60
65
junto con aspectos de simetrfa de pfxeles y simetrfa de coeficientes, pueden definir todos los coeficientes de filtro para las quince posiciones de pfxeles de medio pel y cuarto de pel. Ademas, puede existir simetrfa de pfxeles entre diferentes de las quince ubicaciones de subpfxeles en una dimension vertical y en una dimension horizontal, pero la simetrfa de pfxeles puede no existir en una dimension diagonal para al menos algunas de las ubicaciones de subpfxeles de quince conjuntos. Esta falta de simetrfa de pfxeles en la dimension diagonal para al menos algunas de las quince ubicaciones puede mejorar las interpolaciones y la calidad de video en la codificacion y decodificacion de video.
El decodificador de video 28 del dispositivo de destino 16 puede recibir los ocho conjuntos de coeficientes de filtro como parte de un flujo de bits de video codificado, generar quince conjuntos de coeficientes de filtro correspondientes a quince ubicaciones de subpfxeles diferentes basadas en los ocho conjuntos de coeficientes de filtro, generar datos predictivos interpolados para decodificacion de video en base a uno de los quince conjuntos de coeficientes de filtro, en el que los datos predictivos interpolados corresponden a una de las quince ubicaciones de subpfxeles diferentes, y decodificar uno o mas bloques de video en base a los datos predictivos interpolados.
De acuerdo con otro aspecto de esta divulgacion, el codificador de video 22 y/o el decodificador de video 28 pueden utilizar el filtrado de tipo interpolacion con respecto a posiciones de pfxeles enteros con el fin de generar valores de pfxeles enteros ajustados. Este tipo de filtrado de interpolacion puede mejorar la compresion especfficamente durante los cambios de iluminacion, la transicion o desvanecimiento de escena, puede eliminar el ruido y facilitar la nitidez del marco de la imagen, y puede ayudar a mejorar la codificacion del movimiento del objeto fino entre tramas de video sucesivas, particularmente cuando no se impone simetrfa en los coeficientes de filtro.
Las tecnicas de filtrado de tipo interpolacion del codificador de video 22 y/o el decodificador de video 28 pueden incluir obtener bloques de pfxeles, en las que los bloques de pfxeles incluyen valores de pfxeles enteros correspondientes a posiciones de pfxeles enteros dentro de los bloques de pfxeles, filtrar los valores de pfxeles enteros basados en otros valores de pfxeles enteros dentro del bloque de pfxeles para generar valores de pfxeles enteros ajustados, en el que los valores de pfxeles enteros ajustados corresponden a las posiciones de pfxeles enteros, y generar un bloque de prediccion basado en los valores de pfxeles enteros ajustados.
De acuerdo con otro aspecto de esta divulgacion, el codificador de video 22 puede generar primeros datos predictivos interpolados para codificar datos de video basados en un primer filtro de interpolacion, generar segundos datos predictivos interpolados para la codificacion de video de los datos de video basados en un segundo filtro de interpolacion, seleccionar entre los primeros datos predictivos interpolados y los segundos datos predictivos interpolados basados en un analisis de distorsion de velocidad, codificar los datos de video basados en la seleccion y codificar la sintaxis para indicar la seleccion. El primer filtro de interpolacion puede comprender un filtro de interpolacion fijo, y el segundo filtro de interpolacion puede comprender un filtro de interpolacion adaptativo, pero esta divulgacion no esta necesariamente limitada a estos ejemplos.
Ademas, tambien se pueden aplicar filtros de interpolacion adicionales para generar datos predictivos interpolados adicionales, que tambien se pueden considerar en el analisis de distorsion de velocidad. En otras palabras, las tecnicas de esta divulgacion no se limitan a generar solo primeros y segundos datos predictivos interpolados basados en dos filtros de interpolacion, sino que podrfan aplicarse para generar cualquier pluralidad de datos predictivos interpolados basados en cualquier numero de filtros de interpolacion. Es importante destacar que se usan datos predictivos interpolados por analisis de distorsion de velocidad para identificar que filtro seleccionar.
En un ejemplo, un metodo puede comprender generar una pluralidad de versiones diferentes de datos predictivos para codificar datos de video basados en una pluralidad de diferentes filtros de interpolacion, seleccionar entre la pluralidad de versiones diferentes de datos predictivos basados en un analisis de distorsion de velocidad, codificar los datos de video basados en la seleccion, y codificar la sintaxis para indicar la seleccion.
Esta divulgacion tambien contempla una tecnica para codificar coeficientes de filtro. Por ejemplo, el codificador de video 22 puede identificar un conjunto de coeficientes de filtro para la interpolacion de datos predictivos en codificacion de video, generar valores residuales asociados con el conjunto de coeficientes de filtro basados en la codificacion predictiva del conjunto de coeficientes de filtro relativos a coeficientes de filtro asociados a un filtro de interpolacion fijo, aplicar la cuantificacion a los valores residuales, y emitir los valores residuales cuantificados como parte de un flujo de bits codificado.
El decodificador de video 28 puede recibir valores residuales asociados con un conjunto de coeficientes de filtro, generar el conjunto de coeficientes de filtro usando decodificacion predictiva basandose en el conjunto de valores residuales y coeficientes de filtro asociados a un filtro de interpolacion fijo, y aplicar el conjunto de coeficientes de filtro para interpolar datos predictivos utilizados para la decodificacion predictiva de bloques de video.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de video 50 que puede realizar las tecnicas de filtrado coherentes con esta divulgacion. El codificador de video 50 es un ejemplo de dispositivo o aparato informatico de video, denominado "codificador" en el presente documento. El codificador de video 50 puede corresponder al codificador de video 22 del dispositivo 20, o a un codificador de video de un dispositivo diferente. El
5
10
15
20
25
30
35
40
45
50
55
60
65
codificador de video 50 puede realizar intra e intercodificacion bloques dentro de tramas de video, aunque los componentes de intracodificacion no se muestran en la FIG. 2 a fin de facilitar la ilustracion. La intracodificacion se basa en la prediccion espacial para reducir o eliminar la redundancia espacial en el video de una trama de video dada. La intercodificacion se basa en la prediccion temporal para reducir o eliminar la redundancia temporal en el video dentro de tramas adyacentes de una secuencia de video. El modo intra (modo I) puede referirse al modo de compresion con base espacial, y los modos inter, tal como de prediccion (modo P) o bidireccional (modo B) pueden referirse a los modos de compresion con base temporal. Las tecnicas de esta divulgacion se aplican durante la intercodificacion, y por lo tanto, las unidades de intracodificacion, tales como la unidad de prediccion espacial, no se ilustran en la FIG. 2 con fines de simplicidad y facilidad de ilustracion.
Como se muestra en la FIG. 2, el codificador de video 50 recibe un bloque de video dentro de una trama de video a codificar. En el ejemplo de la FIG. 2, el codificador de video 50 incluye una unidad de prediccion 32, una memoria 34, un sumador 48, una unidad de transformada 38, una unidad de cuantificacion 40 y una unidad de codificacion por entropfa 46. Para la reconstruccion de bloques de video, el codificador de video 50 incluye ademas una unidad de cuantificacion inversa 42, una unidad de transformacion inversa 44 y un sumador 51. Tambien puede incluirse un filtro de desbloqueo (no mostrado) para filtrar lfmites de bloque a fin de eliminar artefactos de pixelado del video reconstruido. Si se desea, el filtro de desbloqueo filtrara tfpicamente la salida del sumador 51.
La unidad de prediccion 32 puede incluir una unidad de estimacion de movimiento (ME) 35 y una unidad de compensacion de movimiento (MC) 37. El filtro 37 puede incluirse en la unidad de prediccion 32, y una o ambas de las unidades de ME 35 y MC 37 pueden recurrir a este para realizar la interpolacion o filtrado de tipo interpolacion como parte de la estimacion de movimiento y/o la compensacion de movimiento, de acuerdo con esta divulgacion. El filtro 37 puede representar en realidad una pluralidad de filtros diferentes para facilitar numerosos tipos diferentes de interpolacion y filtrado tipo interpolacion como se describe en el presente documento. Por lo tanto, la unidad de prediccion 32 puede incluir una pluralidad de filtros de interpolacion o de filtros tipo interpolacion. Durante el proceso de codificacion, el codificador de video 50 recibe un bloque de video a codificar (denominado "BLOQUE DE VIDEO" en la FIG. 2), y la unidad de prediccion 32 realiza la codificacion entre predicciones para generar un bloque de prediccion (denominado "BLOQUE DE PRED." en la FIG. 2). Especfficamente, la unidad de ME 35 puede realizar una estimacion de movimiento para identificar el bloque de prediccion en la memoria 34, y la unidad de MC 37 puede realizar una compensacion de movimiento para generar el bloque de prediccion.
Se considera tfpicamente que la estimacion de movimiento es el proceso de generar vectores de movimiento, que estiman un movimiento para bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de un bloque de prediccion de una trama de prediccion o referencia (u otra unidad codificada, por ejemplo, un fragmento) con respecto al bloque que se va a codificar en la trama actual (u otra unidad codificada). La trama de referencia (o parte de la trama) puede estar situada temporalmente antes o despues de la trama de video (o parte de la trama de video) a la que pertenece el bloque de video actual. La compensacion de movimiento se considera tfpicamente el proceso de extraer o generar el bloque de prediccion de la memoria 34, o posiblemente interpolar o generar de otro modo los datos predictivos filtrados, basandoseen el vector de movimiento determinado mediante la estimacion de movimiento.
La unidad de ME 35 selecciona el vector de movimiento apropiado para el bloque de video que se va a codificar, comparando el bloque de video con los bloques de video de una o mas tramas de referencia (por ejemplo, una trama previa y/o posterior). La unidad de ME 35 puede realizar la estimacion de movimiento con precision de pixel fraccionario, a veces denominada estimacion de movimiento de pixel fraccionario, pel fraccionario, o subpfxel. Como tal, las expresiones estimacion de movimiento de pixel fraccionario, pel fraccionario y subpfxel pueden usarse indistintamente. En la estimacion de movimiento de pixel fraccionario, la unidad de ME 35 puede seleccionar un vector de movimiento que indica un desplazamiento a una ubicacion distinta de una ubicacion de pixel entero. De esta manera, la estimacion de movimiento de pixel fraccionario permite a la unidad de prediccion 32 rastrear el movimiento con mayor precision que las ubicaciones de pixel entero (o pixel completo) y, por tanto, generar un bloque de prediccion mas preciso. La estimacion de movimiento de pixel fraccionario puede tener una precision de medio pixel, una precision de un cuarto de pixel, una precision de un octavo de pixel o cualquier precision mas fina. La unidad de ME 35 puede recurrir a uno o mas filtros 39 para cualquier interpolacion necesaria durante el proceso de estimacion de movimiento.
Para realizar una compensacion de movimiento de pixel fraccionario, la unidad MC 37 puede realizar una interpolacion (a veces denominada filtrado de interpolacion) para generar datos a una resolucion de subpfxeles (denominada en el presente documento como valores de subpfxeles o de pixel fraccionario). La unidad MC 37 puede recurrir a uno o mas 39 para esta interpolacion. La unidad de prediccion 32 puede realizar la interpolacion (o filtrado de tipo interpolacion de pfxeles enteros) usando las tecnicas descritas en el presente documento.
Una vez seleccionado el vector de movimiento para el bloque de video a codificar por la unidad ME 35, la unidad MC 37 genera el bloque de video de prediccion asociado con ese vector de movimiento. La unidad MC 37 puede extraer el bloque de prediccion de la memoria 34 en base al vector de movimiento determinado por la unidad MC 35. En el caso de un vector de movimiento con precision de pixel fraccionario, la unidad MC 37 filtra los datos de la memoria 34 para interpolar dichos datos a una resolucion de subpfxeles, por ejemplo, recurriendo a uno o mas filtros 39 para
5
10
15
20
25
30
35
40
45
50
55
60
65
este proceso. En algunos casos, la tecnica o modo de filtrado de interpolacion que se utilizo para generar los datos de prediccion de subpfxeles se puede indicar como uno o mas elementos de sintaxis de interpolacion para la unidad de codificacion de entropfa 46 para su inclusion en el flujo de bits codificado. De hecho, algunos aspectos de esta divulgacion se refieren al uso de simetna de pfxeles y simetna de coeficientes para reducir la cantidad de sintaxis que se necesita transmitir.
Una vez que la unidad de prediccion 32 ha generado el bloque de prediccion, el codificador de video 50 forma un bloque de video residual (denominado "BLOQUE RESID." en la FIG. 2) restando el bloque de prediccion del bloque de video original que esta siendo codificado. El sumador 48 representa el componente o los componentes que realizan esta operacion de sustraccion. La unidad de transformada 38 aplica una transformada, tal como una transformada discreta del coseno (DCT) o una transformada conceptualmente similar, al bloque residual, generando un bloque de video que comprende coeficientes de bloque de transformada residual. La unidad de transformada 38 puede llevar a cabo otras transformadas, tales como las definidas por la norma H.264, que son conceptualmente similares a la DCT. Tambien podnan usarse transformaciones de ondfculas, transformaciones de enteros, transformaciones de subbandas u otros tipos de transformaciones. En cualquier caso, la unidad de transformada 38 aplica la transformada al bloque residual, generando un bloque de coeficientes de transformada residuales. La transformada puede convertir la informacion residual de un dominio de pixel en un dominio de frecuencia.
La unidad de cuantificacion 40 cuantifica los coeficientes de transformada residuales para reducir todavfa mas la velocidad de bits. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos o todos los coeficientes. Tras la cuantificacion, la unidad de codificacion por entropfa 46 realiza la codificacion por entropfa de los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificacion por entropfa 46 puede realizar la CAVLC, la CABAC u otro procedimiento de codificacion por entropfa.
La unidad de codificacion por entropfa 46 tambien puede codificar uno o mas elementos de sintaxis de prediccion obtenidos a partir de la unidad de prediccion 32 u otro componente del codificador de video 50. El uno o mas elementos de sintaxis de prediccion pueden incluir un modo de codificacion, uno o mas vectores de movimiento, una tecnica de interpolacion que se utilizo para generar los datos de subpfxeles, un conjunto o subconjunto de coeficientes de filtro, u otra informacion asociada con la generacion del bloque de prediccion. La unidad de prediccion y cuantificacion de coeficientes 41 puede codificar y cuantificar de forma predictiva la sintaxis de prediccion, tal como coeficientes de filtro, de acuerdo con algunos aspectos de esta divulgacion. Tras la codificacion por entropfa realizada por la unidad de codificacion por entropfa 46, el video codificado y los elementos sintacticos pueden transmitirse a otro dispositivo o archivarse para su posterior transmision o recuperacion.
La unidad de cuantificacion inversa 42 y la unidad de transformacion inversa 44 aplican la cuantificacion inversa y la transformacion inversa, respectivamente, para reconstruir el bloque residual en el dominio de pfxeles, por ejemplo, para su uso posterior como un bloque de referencia. El bloque residual reconstruido (denominado "BLOQUE RESlD. RECON. "en la FIG. 2) puede representar una version reconstruida del bloque residual proporcionado a la unidad de transformada 38. El bloque residual reconstruido puede diferir del bloque residual generado por el sumador 48, debido a la perdida de detalle causada por las operaciones de cuantificacion y cuantificacion inversa. El sumador 51 suma el bloque residual reconstruido al bloque de prediccion con compensacion de movimiento, generado por la unidad de prediccion 32, para generar un bloque de video reconstruido para su almacenamiento en la memoria 34. La unidad de prediccion 32 puede utilizar el bloque de video reconstruido como bloque de referencia que se puede utilizar para codificar posteriormente un bloque en una trama de video subsiguiente o una unidad codificada posterior.
Como se ha descrito anteriormente, la unidad de prediccion 32 puede realizar la estimacion de movimiento con una precision de pixel fraccionario (o subpfxel). Cuando la unidad de prediccion 32 utiliza una estimacion de movimiento de pfxeles fraccionada, la unidad de prediccion 32 puede generar datos a una resolucion de subpfxeles (por ejemplo, valores de pfxeles de subpfxel o fraccionarios) utilizando operaciones de interpolacion descritas en esta divulgacion. En otras palabras, las operaciones de interpolacion se utilizan para calcular valores en posiciones entre las posiciones de pfxeles enteros. Las posiciones de subpfxel situadas a mitad de la distancia entre las posiciones de pfxeles enteros pueden denominarse posiciones de medio pixel (medio pixel), las posiciones de subpfxel situadas a mitad de distancia entre una posicion de pfxeles enteros y una posicion de medio pixel pueden referirse a las posiciones de cuarto de pixel (cuarto de pixel), las posiciones de subpfxel situadas a mitad de la distancia entre una posicion de pfxeles enteros (o posicion de medio pixel) y una posicion de cuarto de pixel se denominan posiciones de un octavo de pixel (un octavo de pel), y similares.
La FIG. 3 es un diagrama conceptual que ilustra posiciones de pfxeles enteros (o pfxeles completos) asociadas con datos de prediccion, y posiciones de subpfxeles (o pixel fraccionario) asociadas con datos de prediccion interpolados. En la ilustracion conceptual de la FIG. 3, los diferentes cuadros representan ubicaciones o posiciones de pfxeles y subpfxeles dentro de una trama o un bloque de una trama. Las letras mayusculas (en los cuadros con lmeas continuas) representan ubicaciones de pfxeles enteros, mientras que las letras pequenas (en los cuadros con lmeas discontinuas) representan las ubicaciones de subpfxeles. En particular, las ubicaciones de pfxeles A1-A6, B1- B6, C1-C6, D1-D6, E1-E6 y F1-F6 representan una matriz de 6 por 6 de posiciones de pfxeles enteros dentro de un marco, un fragmento u otra unidad codificada. Las ubicaciones de subpfxeles "a" a "o" representan quince
5
10
15
20
25
30
35
40
45
50
55
60
ubicaciones de subpfxeles asociadas con el pixel entero C3, por ejemplo, entre ubicaciones de pixeles enteros C3, C4, D3 y D4. Pueden existir ubicaciones de subpfxeles similares para cada posicion de pixel entero. Las ubicaciones de los subpfxeles "a" a "o" representan cada posicion de pixel de medio pel y cuarto de pel asociada con el pixel entero C3.
Las ubicaciones de pixeles enteros pueden estar asociadas con un elemento sensor ffsico, tal como un fotodiodo cuando los datos de video se generaron originalmente. El fotodiodo puede medir una intensidad de una fuente de luz en la ubicacion del sensor y asociar un valor de intensidad de pixel con la posicion de pixel entero. De nuevo, cada ubicacion de pixeles enteros puede tener un conjunto asociado de quince ubicaciones de subpfxeles (o posiblemente mas). El numero de ubicaciones de subpfxeles asociado con ubicaciones de pixeles enteros puede depender de la precision deseada. En el ejemplo ilustrado en la FIG. 3, la precision deseada es la precision de un cuarto de pixel, en cuyo caso, cada una de las ubicaciones de pixeles enteros corresponde con quince posiciones diferentes de subpfxeles. Pueden asociarse mas o menos posiciones de subpfxeles a cada ubicacion de pixel entero en base a la precision deseada. Para una precision de medio pixel, por ejemplo, cada ubicacion de pixel entero puede corresponder con tres posiciones de subpfxel. Como otro ejemplo, cada una de las ubicaciones de pixeles enteros puede corresponder con sesenta y tres posiciones de subpfxel para una precision de un octavo de pixel. Cada ubicacion de pixel puede definir uno o mas valores de pixel, por ejemplo, uno o mas valores de luminancia y crominancia.
Y puede representar luminancia, y Cb y Cr pueden representar dos valores diferentes de crominancia de un espacio de color YCbCr tridimensional. Cada ubicacion de pixel puede definir realmente tres valores de pixeles para un espacio de color tridimensional. Sin embargo, las tecnicas de la presente divulgacion pueden referirse a la prediccion con respecto a una dimension a fin de simplificar. En la medida en que se describen tecnicas con respecto a los valores de pixel en una dimension, se pueden ampliar tecnicas similares a las otras dimensiones.
En el ejemplo de la FIG. 3, las ubicaciones de subpfxeles asociadas con el pixel entero "C3" se ilustran para una precision de un cuarto de pixel. Las quince posiciones de subpfxel asociadas con el pixel C3 estan etiquetadas como "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", y "o". La mayorfa de las otras ubicaciones fraccionarias asociadas con otras ubicaciones de pixeles enteros no se muestran por simplicidad (distintas de las usadas para generar una o mas de las 15 ubicaciones fraccionarias diferentes asociadas con la ubicacion de pixeles C3, como se describe con mas detalle a continuacion). Las ubicaciones de subpfxeles "b", "h" y "j" se pueden denominar ubicaciones de medio pixel y las ubicaciones de subpfxeles "a", "c", "d", "e", "f", "g", "i", "k", "l", "m", y "o" se pueden denominar ubicaciones de un cuarto de pixel.
La unidad de prediccion 32 del codificador de video 40 puede determinar valores de pixel para las ubicaciones de subpfxeles "a" a "o" utilizando el filtrado de interpolacion por la unidad MC 37. De acuerdo con la norma ITU-T H.264, por ejemplo, la unidad de prediccion 32 puede determinar valores de pixeles para ubicaciones de medio pixel usando un filtro de interpolacion de 6 taps, tal como un filtro Wiener. En el caso de la norma H.264, los coeficientes de filtro para el filtro de interpolacion de 6 taps son tfpicamente [1, -5, 20, 20, -5, 1], aunque pueden utilizarse otros coeficientes. La unidad de prediccion 32 puede aplicar el filtro de interpolacion primero en la direccion horizontal y luego en la direccion vertical, o viceversa. Para posiciones de medio pixel "b" y "h", cada tap puede corresponder a una posicion de pixel entero en la direccion horizontal y vertical, respectivamente. En particular, para la posicion "b" de medio pixel, los taps del filtro de 6 taps corresponden a C1, C2, C3, C4, C5 y C6. Del mismo modo, para la posicion de medio pixel "h", los taps del filtro de 6 taps corresponden a A3, B3, c3, D3, E3 y F3. Por ejemplo, los valores de pixel para las posiciones de subpfxel "b" y "h" se pueden calcular usando las ecuaciones (1) y (2):
b = ((Cl 5*C2 F20*C3 + 20*C4-5*C5 - C6) l 16)/32 (1)
h - ((A3 5*B3 120*C3 : 20*D3 5*E3 4 F3)4 16)/32 (2)
Para la posicion de medio pixel "j", los taps del filtro de 6 taps corresponden a posiciones interpoladas horizontalmente entre las posiciones C1-C6 y D1-D6, o verticalmente entre las posiciones A3-F3 y A4-F4. La posicion de medio pixel "j" se puede calcular con un filtro de 6 taps que utiliza valores de pixeles previamente interpolados de las posiciones de medio pixel, por ejemplo, de acuerdo con una de las ecuaciones (3) o (4):
j = ((aa 5*bb 120*b l 20*hh- ■ 5*ii b jj) + 16)/32 (3)
j ((cc - 5*dd 120*h I 20*ee-5*ff+gg)+ 16)/32 (4)
donde (como se ilustra en la FIG. 3) aa corresponde a una interpolacion entre A3 y A4, bb corresponde a una interpolacion entre B3 y B4, b corresponde a una interpolacion entre C3 y C4, hh corresponde a una interpolacion entre D3 y D4, ii corresponde a una interpolacion entre E3 y E4 y jj corresponde a una interpolacion entre F3 y F4. En la ecuacion 4, cc corresponde a una interpolacion entre C1 y d1, dd corresponde a una interpolacion entre C2 y
5
10
15
20
25
30
35
40
45
50
55
60
D2, h corresponde a una interpolacion entre C3 y D3, ee corresponde a una interpolacion entre C4 y D4, ff corresponde a una interpolacion entre C5 y D5 y gg corresponde a una interpolacion entre C6 y D6.
De acuerdo con el estandar H.264, la unidad de prediccion 32 puede determinar valores de pfxeles en ubicaciones de cuarto de pixel "a", "c", "d", "e", "f", "g", "i", "k", "l", "m", "n" y "o" utilizando un filtro de interpolacion bilineal y los valores de pfxeles de las ubicaciones circundantes de medio pixel y entero. Por ejemplo, la unidad de prediccion 32 puede determinar un valor de pixel asociado con la posicion de subpfxel "a" usando valores de pixel de C3 y "b", determinar un valor de pixel asociado con la posicion de subpfxel "c" usando valores de pixel de "b" y C4, y similares.
El filtro real que es aplicado por la unidad MC 37 para generar datos interpolados en las ubicaciones de subpfxeles puede estar sujeto a una amplia diversidad de implementaciones. Como un ejemplo, la unidad de prediccion 32 puede usar el filtrado adaptativo de interpolacion (AIF), como se describe a continuacion, para definir los valores interpolados. El comite ITU-T SG16/Q.6/VCEG (Grupo de expertos en codificacion de video) ha estado explorando tecnologfas de codificacion que ofrecen mayor eficiencia de codificacion que H.264 y, en particular, AIF. AIF ofrece una gran ganancia de codificacion sobre el filtrado de interpolacion utilizado en el estandar H.264, especialmente en secuencias de video de alta resolucion (por ejemplo, 720i/p o 1080i/p). En AIF, el filtro de interpolacion para cada posicion de subpfxel se calcula analfticamente para cada trama de video minimizando la energfa de error de prediccion. Esto ayuda a abordar el solapamiento, la cuantificacion y los errores de estimacion de movimiento, el ruido de la camara u otro artefacto contenido en las tramas de video originales y de referencia. Los coeficientes de filtro adaptativo derivados analfticamente para cada trama entonces se predicen, se cuantifican, se codifican y se envfan en el flujo de bits de video. Algunas de las tecnicas de esta divulgacion podrfan funcionar dentro de un esquema AIF, asf como muchos otros esquemas de interpolacion.
Existen muchos tipos diferentes de esquemas AIF coherentes con aspectos de esta divulgacion. Por ejemplo, un primer esquema es un AIF bidimensional no separable (NS-AIF), un segundo es un AIF separable (S-AIF), y un tercero es un AIF con filtros direccionales (D-AIF). Aunque cada uno de estos esquemas AIF utiliza diferentes tecnicas de interpolacion y soporte, los tres esquemas AIF pueden usar procesos analfticos similares para derivar los coeficientes del filtro, lo cual se explica a continuacion usando AIF no separable como ejemplo.
1.SP
Supongamos que un filtro bidimensional no separable de 6 x 6 tiene los coeficientes "u donde i,j = 0...5 y SP representa una de las 15 posiciones de subpfxel ("a" a "o") mostradas en la FIG. 3. Cabe apreciar que 6 de las 15 posiciones de Wsubpfxel, es decir, "a", "b", "c", "d", "h" y "l", son posiciones de subpfxeles unidimensionales (1D), y la unidad de prediccion 32 puede usar un filtro de interpolacion de 6 taps para interpolar dichos datos. Las posiciones de subpfxel "a", "b", "c", "d", "h" y "l", son 1D en el sentido de que estan situadas en una lfnea horizontal o vertical entre dos posiciones de pfxeles enteros. Ademas, se asume que los pfxeles de prediccion en las posiciones de pfxeles enteros (A1 a F6 en la FIG. 3) en la trama de referencia toman los valores de pfxeles de P,, donde i,j =
0...5. Es decir, A1 toma el valor de P00, ..., A6 toma del valor de P50, ..., F1 toma el valor de P50, ..., y F6 toma el valor de P5,5. Despues, el valor interpolado p en la posicion de subpfxel SP, SP e {a,...,o}, se puede calcular mediante la unidad de prediccion 32 usando la siguiente ecuacion
Se espera que Sx,y sea el valor de pixel en la trama de video actual en la posicion (x, y).
x = x + [rnraj - FO, y = y+\jnvy\~ FO»
donde (mvx,mvy) es el vector de movimiento, (LmvxJ,LmvyJ) es la componente entera del vector de movimiento, y FO es el desfase de filtro. El valor (x,y) es la posicion de pixel correspondiente en las tramas de referencia. Por ejemplo, en el caso del filtro de 6 taps, FO = 6/2 - 1= 2. Para cada posicion de subpfxel SP , la energfa de error de prediccion (eSP)2 entre el valor de pixel real en la trama actual y el valor interpolado puede acumularse por la unidad de prediccion 32 para todos los pfxeles que tienen precision de vector de movimiento correspondiente a la posicion de subpfxel SP. La energfa de error de prediccion (eSP)2 puede calcularse mediante la unidad de prediccion 32 usando la siguiente ecuacion:
W=EEta - pfj=szk, -££ KI (6)
x y x y \ f=0>0 J
Para cada una de las posiciones de subpixel a a o, la unidad MC 37 puede establecer un conjunto individual de
SP 2
ecuaciones calculando la derivada de (e ) con respecto a los coeficientes de filtro '■>. El numero de ecuaciones, en este caso, es igual al numero de coeficientes de filtro utilizados para la posicion de subpfxel actual SP. Para cada
5
10
15
20
25
30
35
40
45
50
posicion de subpixel bidimensional (2D) "e", "f", "g", "i", "j", "k", "m", "n", y "o", la unidad 32 puede usar un filtro de interpolacion bidimensional de 6 por 6 taps. Las posiciones de subpfxel "e", "f", "g", "i", "j", "k", "m", "n", y "o", son bidimensionales en el sentido de que no se situan en una lfnea vertical o lfnea horizontal entre dos posiciones de pfxeles enteros. En este caso, un sistema de treinta y seis ecuaciones con treinta y seis incognitas puede ser resuelto por la unidad MC 37. Las posiciones de subpfxel monodimensionales restantes "a", "b", "c", "d", "h", y "1" solo requieren un filtro de interpolacion monodimensional (por ejemplo, filtro de 6 taps monodimensional). En el caso de un filtro monodimensional de 6 taps, un sistema de seis ecuaciones puede ser resuelto por la unidad MC 37.
El filtro o filtros 39 puede representar un filtro o un conjunto de muchos filtros diferentes que pueden ser utilizados por la unidad MC 37 para generar los datos predictivos.
De este modo, un proceso ejemplar para derivar y aplicar los filtros AIF puede tener las siguientes etapas, que pueden realizarse por la unidad de prediccion 32:
1. Estimar los vectores de movimiento (mvx,mvy) para cada bloque de video a codificar. Durante la estimacion de movimiento, puede aplicarse un filtro de interpolacion fijo (por ejemplo, el proceso de interpolacion de H.264/AVC).
2. Usar estos vectores de movimiento, acumular energia de error de prediccion para cada posicion de subpixel
hsl‘
SP sobre la trama de video actual. Despues, calcular los coeficientes de filtro adaptativo J para cada posicion de subpfxel SP independientemente minimizando la energia de error de prediccion como en las dos ecuaciones de energia de prediccion anteriores.
3. Estimar nuevos vectores de movimiento. Durante este proceso de estimacion de movimiento, pueden aplicarse los filtros de interpolacion adaptativa calculados en la etapa 2. Utilizando los filtros de interpolacion adaptativa, se reducen los errores de estimacion de movimiento, causados por el solapamiento, el ruido de la camara, etc., y se consigue una mejor prediccion de movimiento.
Diferentes esquemas AIF pueden utilizar el mismo proceso analftico que el dado anteriormente. Las diferencias entre los diferentes esquemas radican principalmente en el numero de coeficientes de filtro unicos usados, ya sean los filtros de interpolacion son separables o no separables, y se utilice el soporte de filtro (es decir, posiciones de pfxeles enteros usadas para interpolar al menos una porcion de subpfxeles). En cada uno de estos esquemas, se pueden imponer ciertas restricciones de simetrfa en los filtros AIF para reducir el numero de coeficientes de filtro que necesitan codificarse y enviarse en el flujo de bits de video.
Para NS-AIF, por ejemplo, la unidad MC 37 de la unidad de prediccion 32 puede interpolar posiciones de subpfxel monodimensionales "a", "b", "c", "d", "h", y "l" usando un interpolacion filtro monodimensional de 6 taps (tambien conocido como un filtro de 6 posiciones ya que cada tap corresponde a una posicion de pixel entero), que requiere seis coeficientes. Los seis coeficientes de los filtros de 6 posiciones usados para interpolar el subpfxel monodimensional corresponden cada uno a una de las posiciones de pfxeles enteros ilustradas en la FIG. 3. Por ejemplo, para las posiciones de subpfxel "a", "b" y "c", las seis posiciones de pfxeles enteros correspondientes a los coeficientes son C1, C2, C3, C4, C5 y C6, y para las posiciones de subpfxel "d", "h" y "l", las seis posiciones de pfxeles enteros correspondientes a los coeficientes son A3, B3, C3, d3, E3 y F3. Estas posiciones de pfxeles enteros representan el "soporte de filtro" del filtro de interpolacion.
La unidad de prediccion 32 puede interpolar las posiciones de subpfxel bidimensionales "e", "f", "g", "i", "j", "k", "m", "n", y "o" usando un filtro de interpolacion bidimensional de 6 por 6, que requiere treinta y seis coeficientes de filtro. Los treinta y seis coeficientes del filtro de interpolacion bidimensional de 6 x 6 utilizados para interpolar el subpfxel bidimensional corresponden cada uno a las posiciones de los pfxeles enteros A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 y F1-F6. Estas posiciones de pfxeles enteros representan el "soporte de filtro" del filtro de interpolacion. Si no se impone ninguna restriccion adicional, por ejemplo, sin coeficiente o simetrfa de pfxeles, el codificador de video 50 puede codificar y transmitir nueve conjuntos de treinta y seis coeficientes para las posiciones de subpfxel
5
10
15
20
25
30
35
40
45
50
55
bidimensionales y seis conjuntos de seis coeficientes para las posiciones de subpixel monodimensionales, para un total de 360 coeficientes. La codificacion y el envfo de ese numero de coeficientes en el flujo de bits de video puede dar lugar a costosas sobrecargas de bits. La alta sobrecarga de bits puede, a su vez, aumentar la velocidad de bits para un nivel dado de distorsion, lo cual es indeseable.
Para reducir la sobrecarga de bits asociada con el envfo de los coeficientes de filtro, pueden imponerse ciertas restricciones de simetria a los filtros de interpolacion para reducir el numero de coeficientes de filtro unicos que necesitan ser enviados al decodificador 28. Pueden imponerse dos tipos de simetria, es decir, simetria de pfxeles y simetria de coeficientes, en solitario o en combinacion. La simetria de pfxeles impone el mismo conjunto de coeficientes de filtro (y las versiones reflejadas, volteadas y/o giradas del conjunto) para diferentes posiciones de subpfxeles. La simetria de pfxeles tambien puede denominarse simetria de subpfxeles en la medida en que dicha simetria de pfxeles se aplique con respecto a los coeficientes de filtro asociados con dos o mas ubicaciones de subpfxeles. La simetria de coeficientes, por otra parte, hace que un filtro de interpolacion dado sea simetrico en una cierta direccion (por ejemplo, direccion horizontal, direccion vertical o ambas) para las diversas posiciones de soporte de filtro con respecto a otras posiciones de soporte de filtro para un determinado valor de subpixel a interpolar.
La simetria de pfxeles se puede utilizar en NS-AIF. Con referenda de nuevo a la FIG. 3, se espera que
sea el conjunto de coeficientes de filtro para la posicion de subpfxel "a", entonces el conjunto de coeficientes de filtro
ha ha ha
para la posicion de subpfxel "c" es 4^ es decir, el mismo coeficiente en orden inverso o volteado horizontalmente. Es decir, el valor de pixel de prediccion pa en la posicion de subpfxel "a" y el valor de pixel de prediccion pc en la posicion de subpfxel "c" se pueden calcular usando (8) y (9), respectivamente.
p = h; • C + h‘‘ ■ C2 + hi ■ C, h hi * C4 + hi ■ C5 + K ■ C(: (8)
r>- - K ■ c, - k ■ c2+ki ■ c3+ha2- c, ■ h; c +K ■ c6 (9)
Las posiciones de subpfxel "d" y "1" pueden interpolarse utilizando el mismo conjunto de coeficientes de filtro de interpolacion que las posiciones de subpfxeles "a" y "c", respectivamente. Como tal, las posiciones de subpfxeles "a" y "c" pueden tener simetria de pfxeles con respecto a las posiciones de subpfxeles "d" y "l".
Un aspecto de esta divulgacion es eliminar realmente la simetria de pfxeles entre las posiciones de subpfxeles "a" y "c" en relacion con las posiciones de subpfxeles "d" y "1". Ademas, se puede evitar la simetria de pfxeles para la posicion de subpfxeles "f" con respecto a la posicion de subpfxel "i". Ademas, se puede evitar la simetria de pfxeles para la posicion de subpfxel "k" con relacion a la posicion de subpfxel "n". En tales casos, la correlacion diagonal puede ser baja, lo que hace ineficiente o ineficaz para imponer simetria diagonal en estos casos.
)/' te 7 C 11 Id ir
"0,0 ’ "0,1 "5,0 > "5,1 ’"'’"5,5
Como otro ejemplo, se espera que bidimensional de 6 por 6 para la posicion de subpixel
h° If If If If If
"0.5 * "0,4 ***** "0,0* * * ‘ * "5,5 *"5,4 ***** "5.
sea el conjunto de coeficientes de filtro
"e". Entonces el conjunto de coeficientes de filtro para la
posicion g es coeficientes de filtro
(version horizontalmente volteada). De manera similar, el conjunto de
para la posicion de subpixel "m" es ^versj^n Verticalmente
h& he he he he he
invertida), y el conjunto de coeficientes de filtro para la posicion de subpixel "o" es 5'5’ M"1 ’ n,” o,4)—j o,o
(primero volteado horizontalmente y despues volteado verticalmente). Como tal, las posiciones de subpfxeles "e", "g", "m" y "o" tienen simetria de pfxeles. La simetria entre las posiciones de subpfxeles "b" y "h" y entre las posiciones "f", "i", "k" y "n" se imponen de una manera similar a la de los ejemplos dados anteriormente. Bajo tal restriccion de simetria de pfxeles, quedan solo cinco grupos de conjuntos de filtros unicos, un primer conjunto de coeficientes de filtro para el grupo de subpfxeles "a", "c", "d" y "l", un segundo conjunto de coeficientes de filtro para un grupo de subpfxeles "b" y "h", un tercer conjunto de coeficientes de filtro para el grupo de subpfxeles "e", "g", "m" y "o", un cuarto conjunto de coeficientes de filtro para el grupo "f , "I", "k" y "n", y un quinto conjunto de coeficientes de filtro para el grupo de subpfxeles "j".
Ademas, NS-AIF puede imponer restriccion de simetria de coeficientes en algunos de estos conjuntos de filtros, en solitario o en combinacion con la simetria de subpfxeles descrita anteriormente. En algunos casos, la simetria de coeficientes diagonales puede ser evitada a proposito, por ejemplo, eliminando cualquier restriccion de simetria de coeficientes diagonales. En un caso, no se impone ninguna simetria de coeficientes al filtro para el primer grupo de posiciones de subpfxeles, que incluye ubicaciones de subpfxeles "a", "c", "d" y "l". Sin embargo, el segundo grupo de posiciones de subpfxeles, que incluye el coeficiente "b" y "h", puede tener una simetria de coeficientes de acuerdo con la ecuacion (10).
h\-hi
rt-ti:
hi-hi
00)
5
10
15
20
25
30
35
40
45
50
55
Del mismo modo, los coeficientes para los filtros de interpolacion para el tercer, cuarto y quinto grupos de posiciones de subpfxeles, que incluyen posiciones de subpfxel "e", "f" y "j", respectivamente, pueden tener una simetrfa de coeficientes tal como se da en las ecuaciones (11), (12) y (13), respectivamente.
para °" '
^=^’para^ = 0-5
para
ij 0...2 i + j
(11)
(12)
(13)
Bajo estas restricciones de simetrfa de pfxeles y simetrfa de coeficientes descritas anteriormente, el numero de coeficientes de filtro unicos puede reducirse de 360(sin restriccion de simetrfa) a 6 (a) + 3 (b) + 21 (e) + 18 (f) + 6 (j) = 54 coeficientes, es decir, 6 coeficientes para el grupo que incluye la posicion de subpfxel "a", 3 coeficientes para el grupo que incluye la posicion de subpfxel "b", 21 coeficientes para el grupo que incluye la posicion de subpfxel "e", 18 coeficientes para el grupo que incluye la posicion de subpfxel "f", y 6 coeficientes para el grupo que incluye la posicion de subpfxel "j". Por lo tanto, en NS-AIF, el codificador de video 22 puede codificar y transmitir cincuenta y cuatro coeficientes en lugar de 360, como en el caso de no tener restricciones de simetrfa. Como se ha descrito anteriormente, los cincuenta y cuatro coeficientes pueden ser resueltos analfticamente basandose en la ecuacion (7) anterior. El codificador de video 50 puede entonces predecir, cuantificar, codificar (por ejemplo, usando el codigo Exp-Golomb firmado), y enviar los coeficientes en el flujo de bits. Los detalles adicionales sobre la codificacion predictiva de coeficientes de filtro se analizan en mayor detalle a continuacion. La unidad de prediccion y cuantificacion de coeficientes 41 puede utilizarse para la codificacion predictiva y la cuantificacion de coeficientes de filtro consistentes con esta descripcion.
En otro esquema AIF, es decir, S-AIF, la unidad de prediccion 32 puede usar filtros de interpolacion separables en la direccion horizontal y en la direccion vertical, en lugar de filtros de interpolacion no separables como se usan en NS- AIF. Para las posiciones de subpfxeles monodimensionales, la unidad de prediccion 32 (por ejemplo, la unidad MC 37 de la unidad de prediccion 32) aplica solo filtros direccionales horizontales o solo filtros direccionales verticales dependiendo de la ubicacion de subpfxeles. En un ejemplo, los filtros direccionales horizontales y verticales comprenden filtros de 6 posiciones (o 6 taps). La unidad de prediccion 32 aplica filtros direccionales horizontales para posiciones de subpfxel "a", "b" y "c" con posiciones de pfxeles enteros C1, C2, C3, C4, C5 y C6 (vease la FIG. 3) como soporte de filtro y aplica filtros direccionales verticales para las posiciones de subpfxeles "d", "h" y "l" con las posiciones de pfxeles enteros A3, B3, C3, D3, E3 y F3 (vease la FIG. 3) como soporte del filtro. Para las posiciones de subpfxeles restantes, es decir, las posiciones de subpfxeles bidimensionales, la unidad de prediccion 32 aplica primero filtrado horizontal, seguido de filtrado vertical o filtrado vertical, seguido de filtrado horizontal. De nuevo, los coeficientes de filtro utilizados para los filtros separables horizontales y verticales se pueden calcular de acuerdo con la ecuacion (7) anterior. Sin simetrfa, S-AIF puede reducir el numero de coeficientes que deben codificarse y enviarse a 144 coeficientes a partir de 360 coeficientes, como es el caso de NS-AIF sin simetrfa.
S-AIF puede ademas imponer una o mas restricciones de simetrfa en al menos algunos de los filtros de interpolacion. A diferencia de la simetrfa de subpfxeles de NS-AIF, con S-AIF, los conjuntos de filtros utilizados para las posiciones de subpfxeles "a" y "c" no son simetricos, es decir, versiones horizontalmente invertidas entre si. En su lugar, los coeficientes de los conjuntos de filtros utilizados para las posiciones de subpfxeles "a" y "c" se derivan
KM>-M „
independientemente entre si como 11 ’ 1 ’ ' y °’ 1 ’5, respectivamente. Para cada posicion de subpixel que
tiene movimiento vertical, la simetrfa de subpfxeles es similar a NS-AIF. Es decir, los coeficientes para las posiciones de subpfxeles "d" y "l", los coeficientes para las posiciones de subpfxeles "e" y "m", los coeficientes para las posiciones de subpfxeles "f" y "n", y los coeficientes para las posiciones de subpfxeles "g" y "o" son versiones volteadas verticalmente entre si, respectivamente. Por ejemplo, si los coeficientes del filtro vertical para la posicion
de subpixel "d" son
KM?
entonces los coeficientes del filtro vertical para la posicion de subpfxel "I" son
KM
1 h3
4 ’■■■■"[) . Por lo tanto, la simetrfa de subpfxeles utilizada en S-AIF solo tiene simetrfa vertical de subpfxeles en una dimension. Sin embargo, S-AIF no tiene simetrfa horizontal de subpfxeles. La simetrfa de subpfxeles en S-AIF puede reducir el numero de coeficientes que necesitan ser codificados y enviados de 144 coeficientes a 102 coeficientes.
S-AIF, como NS-AIF, tambien puede utilizar la simetrfa de coeficientes para reducir aun mas el numero de coeficientes que necesitan ser codificados y enviados por el codificador de video 50. La simetrfa de coeficientes utilizada en S-AIF puede ser la misma que en NS-AIF, excepto que en S-AIF solo hay filtros monodimensionales (horizontales o verticales) de 6 taps. En otras palabras, no hay filtros bidimensionales de 6 por 6. En S-AIF, para
5
10
15
20
25
30
35
40
45
50
55
60
65
cada posicion de subpfxel SP, SP e {b, h, i, j, k}, los coeficientes de filtro pueden tener simetrfa como se indica en la ecuacion (14).
hf=hf = =b:
SP
3
(14)
Por lo tanto, tanto con simetrfa de subpfxeles como con simetrfa de coeficientes, los filtros S-AIF pueden tener once conjuntos de filtros exclusivos monodimensionales de 6 taps, cinco de los cuales son filtros simetricos que tienen cada uno tres coeficientes unicos. Los seis filtros restantes pueden tener cada uno seis coeficientes unicos. En este caso, el codificador de video 22 puede cuantificar, predecir, codificar y enviar un total de cincuenta y un coeficientes de filtro unicos en el flujo de bits de video.
En otro esquema AIF, la unidad de prediccion D-AIF 32 utiliza filtros direccionales para las posiciones de subpfxeles bidimensionales "e", "f", "g", "i", "j", "k", "m", "n", y "o". Los filtros direccionales pueden comprender filtros de seis taps, y los coeficientes pueden tener simetrfa de manera que solo se necesita transmitir un subconjunto de los coeficientes. Como se describe en el presente documento, el soporte de filtro se refiere a las posiciones de pfxeles de la trama de referencia que se utiliza para interpolar las posiciones de subpfxeles. La unidad MC 37 puede calcular las posiciones de los subpfxeles "e" y "o" con un filtro de interpolacion diagonal de 6 posiciones (o 6 taps) que tiene
posiciones de pfxeles enteros A1, B2, C3, D4, E5 y F6 como soporte de filtro. La unidad de prediccion 32 puede
calcular las posiciones de subpfxeles "g" y "m" con un filtro de interpolacion diagonal de 6 posiciones que tiene
posiciones de pfxeles enteros A6, B5, C4, D3, E2 y F1 como soporte de filtro. La unidad de prediccion 32 puede
calcular las posiciones de subpfxeles "f", "i", "j", "k" y "n" con un filtro de interpolacion diagonal de 12 posiciones que tiene posiciones de pfxeles enteros A1, B2, c3, D4, E5 , F6, A6, B5, C4, D3, E2 y F1 como soporte de filtro.
D-AIF puede usar el mismo subpfxel y simetrfa de coeficientes como se ha descrito anteriormente con respecto a NS-AlF. En cuando a la simetrfa de subpfxeles, hay cinco conjuntos unicos de coeficientes de filtro para interpolar las quince posiciones de subpfxeles con posiciones de subpfxel "a", "c", "d" y "1" que comparten los mismos coeficientes de filtro (por ejemplo, versiones espiradas, volteadas y/o giradas), posiciones de subpfxeles "e", "g", "m" y "o" que comparten los mismos coeficientes de filtro (por ejemplo, versiones reflejadas, volteadas y/o giradas), posiciones de subpfxeles "b" y "h" que comparten los mismos coeficientes de filtro (siendo "b" un filtro horizontal y siendo "h" un filtro vertical), posiciones de subpfxeles "f", "i", "k" y "n" que comparten los mismos coeficientes de filtro (por ejemplo, versiones reflejadas, volteadas y/o giradas), y la posicion de subpfxel "j" tiene su propio conjunto de coeficientes de filtro.
En terminos de simetrfa de coeficientes, los coeficientes de filtro para el primer grupo de subpfxeles que incluyen "a", "c", "d" y "1", usan un filtro monodimensional de 6 posiciones que tiene seis coeficientes unicos (es decir, siendo el primer grupo no simetrico), los coeficientes de filtro para el segundo grupo de subpfxeles "b" y "h" utilizan un filtro monodimensional de 6 posiciones que tiene tres coeficientes unicos, (es decir, b es simetrico), y un tercer conjunto de coeficientes de filtro para el grupo de subpfxeles "e", "g", "m" y "o" utiliza un filtro direccional de 6 posiciones que tiene seis coeficientes unicos. Un cuarto conjunto de coeficientes de filtro para el grupo "f", "i", "k" y "n" utiliza un filtro de 12 taps que tiene 6 coeficientes unicos y un quinto conjunto de coeficientes de filtro para el grupo "j" que tiene tres coeficientes unicos. El numero total de coeficientes unicos en el esquema D-AIF es 6(a) + 3(b) + 6(e) + 6(f) + 3(j) = 24 coeficientes. Estos coeficientes de filtro pueden predecirse, cuantificarse, codificarse y enviarse en el flujo de bits de video.
La unidad MC 37 de la unidad de prediccion 32 puede utilizar una o mas de las tecnicas de interpolacion descritas en el presente documento para mejorar la precision de la interpolacion de posiciones de subpfxeles y/o reducir el numero de coeficientes de filtro de interpolacion que necesitan codificarse y transmitirse. A continuacion se describe con mas detalle un util soporte de filtro de doce pfxeles con una forma radial que se puede utilizar para la interpolacion, tecnicas que utilizan simetrfa de coeficientes y simetrfa de pfxeles para reducir la cantidad de datos necesarios a enviar entre un codificador y un decodificador para configurar el soporte de filtro para la interpolacion, tecnicas para eliminar algunos aspectos de simetrfa en relacion con las tecnicas convencionales, y tecnicas para filtrar datos en ubicaciones de pfxeles enteros de una manera similar a la interpolacion de subpfxeles. Tambien se describen tecnicas de desfase. Ademas, tambien se describen tecnicas para seleccionar entre filtros de interpolacion, y tecnicas para codificar de forma predictiva coeficientes de filtro.
La FIG. 4 es un diagrama conceptual que ilustra un soporte de filtro de doce pfxeles con respecto a nueve ubicaciones de subpfxeles. De acuerdo con esta descripcion, la unidad MC 37 puede calcular valores de subpfxeles para las posiciones de subpfxeles "e", "f", "g", "i", "j", "k", "m", "n", y "o" en funcion de los valores de pfxeles enteros sombreados. En este caso, el calculo de los valores de subpfxeles comprende aplicar un filtro de interpolacion que define una matriz bidimensional de posiciones de soporte de filtro correspondientes a un conjunto de doce (o posiblemente mas) posiciones de pfxeles enteros que rodean las posiciones de subpfxel como se ilustra en la FIG.
4. Las posiciones de soporte del filtro se muestran con sombreado y letras mayusculas, y las posiciones de subpfxeles se muestran como cuadros con lfneas discontinuas y letras minusculas. La unidad Me 37 puede interpolar pfxeles de esta manera para cada pixel de un bloque de video, y puede generar un bloque de prediccion basado en la interpolacion de los valores de subpfxeles. El soporte de filtro de 12 posiciones tiene una forma radial y
5
10
15
20
25
30
35
40
45
50
55
60
65
tiene una respuesta de frecuencia similar al soporte de filtro de posicion 36 utilizado en NS-AIF pero con una complejidad de interpolacion mucho menor.
Como puede apreciarse a partir de la FIG. 3, los valores de subpfxeles pueden comprender quince valores de medio pel y cuarto de pel. El filtro de interpolacion que define la matriz bidimensional de las posiciones de soporte de filtro se aplica para definir nueve de los quince valores de medio pel y cuarto de pel como se muestra en la FIG. 4.
El conjunto de doce o mas posiciones de pfxeles enteros que rodean las posiciones de subpfxeles se muestran con sombreado en la FIG. 4, y puede incluir cuatro posiciones de pfxeles enteros C3, C4, D3 y D4 que rodean los nueve valores de medio pel y cuarto de pel, y ocho posiciones de pfxeles enteros B3, B4, C2, C5, D2, D5, E3 y E4 que rodean las cuatro posiciones de pfxeles enteros. Cada una de las posiciones de soporte del filtro en la matriz bidimensional de las posiciones de soporte del filtro mostradas en la FIG. 4 esta dentro de dos posiciones de pfxeles enteros con respecto a las posiciones de subpfxeles. Dicho filtrado puede formar parte de la compensacion de movimiento durante un proceso de codificacion de video por el codificador de video 50 (FIG. 2) o durante un proceso de decodificacion de video por el decodificador de video 60 (FIG. 16). Durante el proceso de codificacion de video, la unidad de prediccion 32 envfa una pluralidad de conjuntos de valores de coeficientes a la unidad de codificacion por entropfa 46 como parte de los elementos de sintaxis de prediccion. Como se muestra en la FIG. 4, el conjunto de doce o mas posiciones de pfxeles enteros que rodean las posiciones de subpfxeles tiene una forma radial y puede comprender un conjunto de posiciones de pfxeles enteros espacialmente mas cercanos a los nueve valores de medio pel y cuarto de pel definidos por el filtro de interpolacion (por ejemplo, el filtro o filtros 39 en la FIG. 2).
La unidad de codificacion por entropfa 46 puede codificar los conjuntos de valores de coeficientes y emitir los valores de coeficiente del filtro de interpolacion como parte de un flujo de bits codificado, que puede ser transmitido entonces a otro dispositivo. Cada una de la pluralidad de conjuntos de valores de coeficientes definidos con respecto a cada ubicacion de subpixel diferente mostrada en la FIG. 4 puede definir diferentes ponderaciones para las doce o mas posiciones de pfxeles enteros. La simetrfa de pfxeles puede existir de tal forma que M conjuntos de valores de coeficientes definen N ponderaciones diferentes para las doce o mas posiciones de pfxeles enteros, en donde M y N son numeros enteros positivos y N es mayor que M. En otras palabras, la simetrfa de pfxeles puede permitir que parte de las ubicaciones de pfxeles se basen en ponderaciones reflejadas, invertidas o giradas de otras ubicaciones de pfxeles de manera que los coeficientes no necesiten codificarse para ubicaciones que tienen simetrfa de pfxeles con otras ubicaciones de subpfxeles.
La FIG. 5 es un diagrama conceptual que ilustra un soporte de filtro horizontal de seis pfxeles con respecto a tres ubicaciones de subpfxeles horizontales, y un soporte de filtro vertical de seis pfxeles con respecto a tres ubicaciones verticales de subpfxeles. Las ubicaciones de soporte de filtro estan sombreadas con letras mayusculas y las ubicaciones de subpfxeles no estan sombreadas, tienen letras minusculas y lfneas discontinuas. La unidad MC 37 puede calcular los valores de subpfxeles para las ubicaciones "a", "b" y "c" aplicando un filtro de interpolacion lineal que define un conjunto unidimensional de posiciones de soporte de filtro C1-C6. La unidad MC 37 tambien puede calcular los valores de subpfxeles para las ubicaciones "d", "h" y "1" aplicando un filtro de interpolacion lineal que define una matriz unidimensional de posiciones de soporte de filtro A3-F3. De esta manera, se pueden usar filtros de interpolacion lineal para seis de los quince valores de medio pel y cuarto de pel mostrados en la FIG. 3.
La FIG. 6 es un diagrama conceptual que ilustra un soporte de filtro de cinco pfxeles por cinco pfxeles para filtrar una ubicacion de pfxeles enteros. En este caso, se puede aplicar un filtrado tipo interpolacion con respecto a las ubicaciones de pfxeles enteros con el fin de generar valores de pfxeles enteros ajustados. En la FIG. 6, por ejemplo, el valor de pixel entero en la posicion C3 puede filtrarse en base a un conjunto de pfxeles de cinco a cinco pfxeles A1-A5, B1-B5, C1-C5, D1-D5 y E1-E5. Se pueden definir otros soportes de filtro para el filtrado de enteros. En este caso, si la unidad ME 35 identifica un bloque de pfxeles enteros, la unidad MC 37 puede filtrar cada pixel en base a una matriz de pfxeles de cinco por cinco mostrada en la FIG. 6 (u otro soporte de filtro) para generar valores de pfxeles enteros filtrados. De esta manera, el filtrado de tipo interpolacion puede aplicarse a pfxeles enteros, lo que puede mejorar la codificacion en momentos de cambios de iluminacion o de transicion o desvanecimiento de escena. Ademas, el filtrado de enteros puede eliminar el ruido y facilitar la nitidez del marco de la imagen, y puede ayudar a mejorar la codificacion del movimiento del objeto fino entre tramas de video sucesivas, particularmente cuando no se impone simetrfa en los coeficientes de filtro. El filtrado de pel enteros tambien puede ser
extremadamente util para mejorar la calidad y/o compresion de las secuencias de video que tienen cambios de
enfoque.
Por lo tanto, el codificador de video 22 y/o el decodificador de video 28 pueden utilizar el filtrado de tipo interpolacion con respecto a posiciones de pfxeles enteros con el fin de generar valores de pfxeles enteros ajustados. El codificador de video 22 o decodificador de video 28 puede, por ejemplo, obtener bloques de pfxeles, en el que los bloques de pfxeles incluyen valores de pfxeles enteros correspondientes a posiciones de pfxeles enteros dentro del bloque de pfxeles. El codificador de video 22 o el decodificador de video 28 puede filtrar los valores de pfxeles enteros basados en otros valores de pfxeles enteros dentro de los bloques de pfxeles para generar valores de
pfxeles enteros ajustados, en el que los valores de pfxeles enteros ajustados corresponden a las posiciones de
pfxeles enteros, y generar un bloque de prediccion basado en los valores de pfxeles enteros ajustados. El bloque de prediccion puede usarse entonces para codificar o decodificar un bloque de video, dependiendo de si el proceso se
5
10
15
20
25
30
35
40
45
50
55
60
65
realiza durante la codificacion o decodificacion.
Si la tecnica se realiza durante un proceso de codificacion, el codificador de video 22 puede generar un bloque de video residual como diferencia entre un bloque de video actual que esta siendo codificado y el bloque de prediccion. El codificador de video 22 tambien puede codificar un conjunto de coeficientes de filtro por unidad codificada para filtrado de enteros o, posiblemente, codificar dos o mas conjuntos de coeficientes de filtro por unidad codificada para filtrado entero en diferentes ubicaciones dentro de la unidad codificada. En el ejemplo de la FIG. 6, los soportes de filtro para el filtrado de numeros enteros pueden definir un filtro bidimensional, por ejemplo, un filtro de 5 por 5 con desfase. Ademas, puede existir simetrfa de coeficientes entre al menos algunos coeficientes utilizados para el filtrado de tal manera que solo un subconjunto de los 25 coeficientes diferentes son necesarios para determinar los 25 coeficientes para el filtro. Pueden usarse muchos otros tamanos y formas de filtro de acuerdo con el filtrado de pel enteros.
Si se realiza el filtrado de pel enteros durante un proceso de decodificacion, la tecnica puede comprender generar un bloque de video reconstruido como una suma de un bloque de video residual asociado con un bloque de video actual que esta siendo decodificado y el bloque de prediccion. En este caso, el dispositivo de decodificacion (por ejemplo, el dispositivo de destino 16) puede recibir un conjunto de coeficientes de filtro por unidad codificada para filtrar numeros enteros, o puede recibir dos o mas conjuntos de coeficientes de filtro por unidad codificada para filtrado de enteros en diferentes ubicaciones dentro de la unidad codificada. Cada unidad codificada puede tener uno o mas conjuntos de coeficientes de filtrado de pel enteros, asf como conjuntos de coeficientes de filtracion de subpel, por ejemplo, ocho conjuntos que se pueden usar para generar los quince conjuntos para posiciones de medio pel y cuarto de pel.
De nuevo, el filtrado de interpolacion de valores de pfxeles enteros puede mejorar la compresion especfficamente durante los cambios de iluminacion, la transicion o desvanecimiento de escena, puede eliminar el ruido y facilitar la nitidez del marco de la imagen, y puede ayudar a mejorar la codificacion del movimiento del objeto fino entre tramas de video sucesivas, particularmente cuando no se impone simetrfa en los coeficientes de filtro. Ademas, el filtrado de pel enteros tambien es extremadamente util, por ejemplo, para mejorar la compresion, en secuencias de video que tienen cambios de enfoque.
Convencionalmente, el filtrado de tipo interpolacion no se realiza para posiciones de pfxeles enteros en AIF. En su lugar, la posicion correspondiente de pfxeles enteros en la trama de referencia se utiliza simplemente "tal cual". Sin embargo, de acuerdo con esta divulgacion, se puede usar un filtro para ubicaciones de pfxeles enteros de una manera que es similar a las interpolaciones. El filtrado de interpolacion en posiciones de pfxeles enteros es tecnicamente un nombre incorrecto, ya que los valores de pfxeles de posiciones de pfxeles enteros ya existen. Por lo tanto, el filtrado de posiciones de pfxeles enteros se denomina en el presente documento filtrado de tipo interpolacion, y se puede ver simplemente filtrando los valores de pfxeles enteros para generar nuevos valores de pfxeles ajustados.
A diferencia del filtrado de interpolacion para posiciones de subpfxeles, donde el objetivo es obtener los valores inexistentes en la trama de referencia, los pfxeles en las posiciones enteras en la trama de referencia ya existen. Sin embargo, la aplicacion de filtrado en las posiciones de pfxeles enteros en la trama de referencia ofrece una serie de beneficios. Por ejemplo, cuando las posiciones de pfxeles enteros contienen un desfase, el filtrado de las posiciones de pfxeles enteros puede permitir una mejor captura de los cambios de iluminacion entre tramas. Ademas, el filtrado en las posiciones de pfxeles enteros puede permitir que las posiciones de pfxeles enteros capturen efectos especiales tales como transicion y desvanecimiento. El filtrado en las posiciones de pfxeles enteros tambien puede eliminar ciertos ruidos de senal (como el ruido de la camara) y/o realizar la nitidez, si es necesario. Ademas, si no se impone ninguna simetrfa en el filtro de pfxeles enteros, el filtro de pfxeles enteros puede ayudar a capturar el movimiento del objeto fino, como el movimiento del objeto que no es un multiplo de un cuarto de pixel. Por ultimo, el filtrado de pfxeles enteros tambien puede ser util para mejorar la compresion de secuencias de video cuando se producen cambios de enfoque.
En algunos casos, el filtrado de interpolacion de posiciones de pfxeles enteros puede depender de vectores de movimiento. En otras palabras, la unidad MC 37 de la unidad de prediccion 32 puede aplicar de forma adaptativa el filtrado de interpolacion basado en el vector de movimiento identificado por la unidad ME 35. Por ejemplo, el filtrado de interpolacion de posiciones de pfxeles enteros se puede realizar cuando el vector de movimiento apunta a una posicion de pixel entero. El filtrado de interpolacion puede dar como resultado un valor de pixel ajustado para la posicion de pfxeles enteros. Cuando el vector de movimiento apunta a una posicion de subpixel, no se realiza ningun filtrado de posiciones de pfxeles enteros con respecto a los valores de pfxeles enteros, pero puede utilizarse el filtrado para la interpolacion de los valores de subpfxeles. De esta manera, el filtrado de pfxeles enteros puede considerarse adaptativo basado en vectores de movimiento.
Para las posiciones de pfxeles enteros, se puede derivar un filtro de interpolacion de 5 por 5 en la forma de la ecuacion (15) usando el mismo proceso analftico usado para derivar los filtros de posicion de subpfxeles.
5
10
15
20
25
30
35
40
45
50
55
60
FP
P
1=0 y=o
(15)
donde pFP es el valor de pixel entero filtrado, Py es el valor de pixel entero en la posicion (i, j), hFP,j es el coeficiente para la posicion (i, j), y oFP es un desfase de filtro. En algunos casos, el filtro de interpolacion para posiciones de pfxeles enteros puede no tener un desfase de filtro (es decir, oFP = 0). En otros casos, el desfase de filtro oFP puede utilizar cualquiera de una serie de tecnicas.
Pueden definirse diferentes desfases para cada posicion de subpixel, por ejemplo, pueden definirse quince distancias diferentes para cada posicion de subpixel mostrada en la FIG. 3. Se puede definir otro desfase para pfxeles enteros, llevando el numero total de desplazamientos a dieciseis. La Solicitud de Patente de Estados Unidos
pendiente junto con la presente y comunmente asignada n.° de serie_____, presentada por Karczewicz et al., y
titulada "OFFSETS AT SUBPIXeL RESOLUTION" con el numero de registro 081399U2, que se presento el mismo dfa que la presente solicitud, y que se incorpora en el presente documento por referencia, proporciona muchos detalles adicionales sobre el uso de muchos desfases para diferentes ubicaciones de pfxeles y subpfxeles.
Con el fin de reducir el numero de coeficientes de filtro a transmitir, la simetrfa de coeficientes como en la ecuacion (16) puede imponerse al filtro de pfxeles enteros.
^ = fhTj=hZj=hZA.j,f0T i,j = 0..A
(16)
Tambien pueden usarse otras formas de simetrfa de coeficientes. Si la simetrfa de coeficiente se impone puede ser decidido por el codificador y senalado al decodificador. Si se utiliza la simetrfa como en (16) en el filtro de pfxeles enteros, entonces puede ser necesario enviar 9 coeficientes de filtro y 1 desfase al decodificador.
La codificacion de los desfases puede hacerse codificando primero un desfase entero y luego codificando cada desplazamiento fraccionario. En este caso, el desfase de enteros y los desfases fraccionarios se codifican de manera diferente. El desfase de enteros puede codificarse usando codigo Golomb exponencial firmado. Dependiendo de la magnitud del desfase de enteros, los desfases fraccionarios pueden cuantificarse de manera diferente que el desfase de enteros. Por ejemplo, pueden aplicarse niveles mas gruesos de cuantificacion en los desplazamientos fraccionarios cuando un desplazamiento entero tiene una gran magnitud. Despues de la cuantificacion, los desfases fraccionarios pueden codificarse usando codigos de longitud fija. Como ejemplo, el siguiente pseudo-codigo puede ilustrar como se puede codificar un determinado desplazamiento fraccionario usando diferentes codigos de longitud fija definidos en base al valor de desfase entero.
Se espera que offsetI sea el desfase de enteros Se espera que offsetF sea el desfase fraccional
Se espera que offsetFbits sea el numero de bits usado para cuantificar offsetF Se espera que abs(a) sea el valor absoluto de if(abs(offsetI) = 0)
offsetFbits = 5 else if(abs(offsetI) < 3) offsetFbits = 4 else if(abs(offsetI) < 7) offsetFbits = 2
else
offsetFbits = 0
En este caso, el codificador de video 50 puede usar una unidad de prediccion y cuantificacion de coeficientes 41 que para cada uno de los valores de desplazamiento asigna un primer numero de bits a una porcion entera de un valor de desfase dado y asigna un segundo numero de bits a una porcion fraccionada del valor de desfase dado, en el que el primer y segundo numeros de bits se determinan basandose en una magnitud de la porcion entera. En este caso, las versiones cuantificadas de los valores de desfase pueden enviarse desde la unidad de prediccion 32 como elementos de sintaxis de prediccion despues de que la cuantificacion de los valores de desplazamiento se lleve a cabo de forma consistente con el pseudo-codigo anterior. En cualquier caso, el codificador de video 50 puede codificar el primer numero de bits de manera diferente que el segundo numero de bits.
La FIG. 7 es un diagrama conceptual que ilustra cuatro posiciones de pfxeles enteros y quince posiciones de subpfxeles con sombreado para posiciones de pfxeles en grupos que pueden utilizar simetrfa de pfxeles para coeficientes de filtro coherentes con esta divulgacion. En particular, la FIG. 7 ilustra las posiciones de subpixel "a" a "o" correspondientes a la posicion de pixel entero C3. Las posiciones de subpfxeles enteros mostradas en la FIG. 7 corresponden a las de las FIGS. 4 y 5. Es decir, las ubicaciones de subpfxeles "e", "f", "g", "i", "j", "k", "m", "n", y "o" pueden tener valores determinados por un soporte de doce pfxeles como se muestra en la FIG. 4, mientras que las
5
10
15
20
25
30
35
40
45
50
55
60
65
ubicaciones de subpfxeles "a", "b" y "c" y las ubicaciones de subpfxeles "d", "h" y "1" pueden tener valores determinados por soportes de pfxeles horizontales y lineales mostrados en la FIG. 5.
En este escenario, la simetrfa de pfxeles puede imponerse de tal manera que los coeficientes de filtro para la ubicacion de pfxeles "a" sean simetricos con respecto a los coeficientes de filtro para la ubicacion de pfxeles "c". De forma similar, la simetrfa de pfxeles puede imponerse de tal manera que los coeficientes de filtro para la ubicacion de pfxeles "d" sean simetricos con respecto a los coeficientes de filtro para la ubicacion de pfxeles "1". La simetrfa de pfxeles puede imponerse de tal manera que los coeficientes de filtro para la ubicacion de pfxeles "e" sean simetricos con respecto a los coeficientes de filtro para ubicaciones de pfxeles "g", "m" y "o", y la simetrfa de pfxeles puede imponerse de tal manera que los coeficientes de filtro para la ubicacion de pfxeles "i" son simetricos con respecto a los coeficientes de filtro para ubicaciones de pfxeles "k", y la simetrfa de pfxeles puede imponerse de tal manera que los coeficientes de filtro para la ubicacion de pfxeles "f" sean simetricos con respecto a los coeficientes de filtro para ubicaciones de pfxeles "n". Por lo tanto, solo se necesitan comunicar ocho conjuntos de valores de coeficientes como parte de un flujo de bits de video para permitir que un decodificador genere conjuntos completos de valores de coeficiente para las 15 ubicaciones de pfxeles. Ademas, para cualquier conjunto dado de coeficientes, la simetrfa de coeficiente puede permitir que solamente se envfe un subconjunto de los valores de coeficiente, y el decodificador puede generar el conjunto completo de valores de coeficiente para una ubicacion de pixel dada en base al subconjunto y la simetrfa de coeficientes.
Un aspecto de esta divulgacion es eliminar realmente cualquier simetrfa de pfxeles entre las posiciones de subpfxeles "a" y "c" en relacion con las posiciones de subpfxeles "d" y "l". Ademas, se puede evitar la simetrfa de pfxeles para la posicion de subpfxeles "f" con respecto a la posicion de subpixel "i". Ademas, se puede evitar la simetrfa de pfxeles para la posicion de subpixel "k" con relacion a la posicion de subpixel "n". En tales casos, la correlacion diagonal puede ser baja, lo que hace ineficiente o ineficaz para imponer simetrfa diagonal. De esta manera, los ocho conjuntos de coeficientes utilizados para generar los quince conjuntos de coeficientes pueden ser un conjunto mayor que algunas tecnicas convencionales en la medida en que se evita la simetrfa en la dimension diagonal para algunas de las ubicaciones de los pfxeles. En algunos casos, la simetrfa de pfxeles diagonales y la simetrfa de coeficientes diagonales pueden eliminarse o evitarse para permitir la variacion en las dimensiones verticales.
Con referencia de nuevo a la FIG. 1, el codificador de video 22 puede determinar ocho conjuntos de coeficientes de filtro y utilizar los ocho conjuntos de coeficientes de filtro para generar los quince conjuntos de coeficientes de filtro correspondientes a quince ubicaciones de subpfxeles diferentes basadas en la simetrfa de coeficiente y simetrfa de pfxeles, y emitir los ocho conjuntos de coeficientes de filtro como parte de un flujo de bits codificado. Pueden emitirse ocho conjuntos de coeficientes de filtro para cada unidad codificada del flujo de bits codificado, o posiblemente se pueden producir varias apariciones de los ocho conjuntos de coeficientes de filtro para diferentes areas de una unidad codificada.
Los quince conjuntos corresponden a cada ubicacion de subpixel de media pel y cuarto de pel mostrada en la FIG. 3, y los ocho conjuntos, la simetrfa de coeficientes y la simetrfa de pfxeles definen soportes de filtro para cada ubicacion de subpixel de medio pel y cuarto de pel. El decodificador de video 28 del dispositivo de destino 16 puede recibir ocho conjuntos de coeficientes de filtro como parte de un flujo de bits de video codificado, generar quince conjuntos de coeficientes de filtro correspondientes a quince ubicaciones de subpfxeles diferentes basadas en los ocho conjuntos de coeficientes de filtro, generar datos predictivos interpolados para decodificacion de video en base a uno de los quince conjuntos de coeficientes de filtro, en el que los datos predictivos interpolados corresponden a una de las quince ubicaciones de subpfxeles diferentes, y decodificar uno o mas bloques de video en base a los datos predictivos interpolados.
Al menos algunos de los ocho conjuntos de coeficientes de filtro pueden tener una simetrfa de coeficientes de tal forma que un conjunto dado con simetrfa de coeficientes comprende un subconjunto de los coeficientes de filtro asociados con un soporte de filtro para una ubicacion de subpfxeles dada asociada con el conjunto dado. De este modo, el decodificador de video 28 puede generar los quince conjuntos de coeficientes de filtro basados al menos en parte en la simetrfa de pfxeles entre dos o mas ubicaciones de subpfxeles diferentes. Ademas, el decodificador de video 28 puede generar los quince conjuntos de coeficientes de filtro basados al menos en parte en la simetrfa de pfxeles entre dos o mas ubicaciones de subpfxeles diferentes, y en base, al menos en parte, a la simetrfa de coeficientes definida para un conjunto dado de modo que el conjunto dado con simetrfa de coeficientes comprende un subconjunto de los coeficientes de filtro asociados con un soporte de filtro para una ubicacion de subpfxeles dada asociada con el conjunto dado.
De nuevo, los quince conjuntos corresponden a cada ubicacion de subpixel de media pel y cuarto de pel. La simetrfa de pfxeles puede existir entre diferentes de los quince conjuntos de coeficientes de filtro en una dimension vertical y en una dimension horizontal, pero la simetrfa de pfxeles no existe en una dimension diagonal para al menos algunos de los quince conjuntos de coeficientes de filtro. Como se explica con mayor detalle a continuacion, dos de los ocho conjuntos pueden definir tres de los quince conjuntos para un soporte de filtro horizontal, dos de los ocho conjuntos pueden definir tres de los quince conjuntos para un soporte de filtro vertical, y cuatro de los ocho conjuntos pueden definir nueve de los quince conjuntos para un soporte de filtro bidimensional. El soporte bidimensional puede
5
10
15
20
25
30
35
40
45
50
55
60
65
comprender un soporte de filtro de 12 posiciones util que rodea nueve posiciones de subpfxeles en una forma radial.
Especfficamente, los datos predictivos interpolados pueden comprender quince valores de medio pel y cuarto de pel, por ejemplo, mostrados en la FIG. 7, en los que el filtro de interpolacion define una matriz bidimensional de doce posiciones de soporte de filtro, por ejemplo, mostradas en la FIG. 4, que se aplican para definir nueve de los quince valores de medio pel y cuarto de pel y, por ejemplo, tambien mostrados en la FIG. 4. La generacion de los datos predictivos interpolados puede comprender ademas la aplicacion de filtros de interpolacion lineal que definen conjuntos unidimensionales de posiciones de soporte de filtro para seis de los quince valores de medio pel y cuarto de pel, por ejemplo, como se muestra en la FIG. 5.
La simetrfa horizontal y la falta de simetrfa diagonal se puede observar con respecto a las posiciones de subpfxeles "a" y "c" o con respecto a las posiciones de subpfxeles "i" y "k". En este caso, las posiciones de subpfxeles enteros "a" y "c" son simetricas a lo largo de un eje X horizontal, pero la simetrfa no existe a lo largo de un eje diagonal para estos pfxeles de modo que las ubicaciones de subpfxeles "d" y "1" no son simetricas con respecto a las posiciones de subpfxeles "a" y "c" respectivamente. De forma similar, las posiciones de subpfxeles "i" y "k" son simetricas a lo largo de un eje X horizontal, pero no existe simetrfa a lo largo del eje diagonal para estos pfxeles de modo que las ubicaciones de subpfxeles "f" y "n" no son simetricas con respeto a las posiciones de subpfxeles "i" y "k" respectivamente.
La simetrfa de pfxeles significa que un primer conjunto de coeficientes con respecto a la primera posicion de subpfxel es simetrica con respecto a un segundo conjunto de coeficientes con respecto a la segunda posicion de subpfxel. Por ejemplo, la ubicacion de pixel "a" tiene simetrfa de pfxeles con respecto a la ubicacion de pixel "c", y la ubicacion de pixel "d" tiene simetrfa de pfxeles con respecto a la ubicacion de pixel "1". La ubicacion de pixel "f" tiene simetrfa de pfxeles con respecto a la ubicacion de pixel "n", y la ubicacion de pixel "i" tiene simetrfa de pfxeles con respecto a la ubicacion de pixel "k". La ubicacion de pixel "e" tiene simetrfa de pfxeles con respecto a las ubicaciones de pfxeles "g", "m" y "o". El sombreado mostrado en la FIG. 7 muestra esta simetrfa de pfxeles, por ejemplo, con sombreado comun correspondiente a ubicaciones de pfxeles que son simetricas con respecto a otras ubicaciones de pfxeles. En este caso, los coeficientes para ocho ubicaciones de pfxeles (junto con aspectos de simetrfa de pfxeles) pueden definir coeficientes para las 15 ubicaciones de pfxeles. Ademas, dentro de un conjunto dado de coeficientes, puede existir una simetrfa de coeficientes de tal forma que solo un subconjunto de los coeficientes de ese conjunto de coeficientes necesita comunicarse con el flujo de bits.
El codificador de video 22 puede generar datos de video codificados basados en datos predictivos interpolados, en el que los datos predictivos interpolados comprenden quince valores de medio pel y cuarto de pel, en el que el filtro de interpolacion define una matriz bidimensional de doce posiciones de soporte de filtro que se aplican para definir nueve de los quince valores de medio pel y cuarto de pel. La generacion de los datos de video codificados basados en datos predictivos interpolados puede comprender ademas la aplicacion de filtros de interpolacion lineal que definen conjuntos unidimensionales de posiciones de soporte de filtro para seis de los quince valores de medio pel y cuarto de pel.
La FIG. 8 es un diagrama conceptual que ilustra seis posiciones de soporte de pfxeles lineales horizontales C1-C6 con relacion a una posicion de subpfxel "b", con sombreado que muestra simetrfa de coeficientes. En este caso, la simetrfa de coeficientes significa que solo se necesitan tres coeficientes de filtro para C1, C2 y C3 para definir el conjunto completo de coeficientes para las posiciones de soporte de filtro C1-C6. C1 es simetrica con C6, C2 es simetrica con C5 y C3 es simetrica con C4. Por lo tanto, solo se deben comunicar tres coeficientes como parte de un flujo de bits de video codificado para definir el conjunto de seis coeficientes necesarios para interpolar la posicion de subpfxel "b".
La FIG. 9 es un diagrama conceptual que ilustra seis posiciones de soporte de pfxeles lineales horizontales con relacion a un subpfxel, con sombreado que muestra una falta de simetrfa de coeficientes. Por lo tanto, los seis coeficientes son necesarios para definir el conjunto de coeficientes para el soporte del filtro con respecto a la posicion de subpfxel "a". Sin embargo, como se ha indicado anteriormente, la simetrfa de pfxeles significa que estos mismos coeficientes con respecto a la posicion de subpfxel "a" tambien se pueden usar para derivar el soporte de filtro para la posicion de subpfxel "c" (vease la FIG. 7). Por lo tanto, solo se deben comunicar seis coeficientes como parte de un flujo de bits de video codificado para definir dos conjuntos diferentes de seis coeficientes necesarios para interpolar la posicion de subpfxel "a" y "c".
La FIG. 10 es un diagrama conceptual que ilustra seis posiciones de soporte de pfxeles lineales verticales A3, B3, C3, D3, E3 y F3 con relacion a un subpfxel "h", con sombreado que muestra simetrfa de coeficientes. En este caso, la simetrfa de coeficientes significa que solo se necesitan tres coeficientes de filtro para A3, B3 y C3 para definir el conjunto completo de coeficientes para las posiciones de soporte de filtro A3, B3, C3, D3, E3 y F3. a3 es simetrica con F3, B3 es simetrica con E3 y C3 es simetrica con D3. Por lo tanto, solo se deben comunicar tres coeficientes como parte de un flujo de bits de video codificado para definir el conjunto de seis coeficientes necesarios para interpolar la posicion de subpfxel "h".
5
10
15
20
25
30
35
40
45
50
55
60
65
relacion a un subpfxel, con sombreado que muestra una falta de simetrfa de coeficientes.
Por lo tanto, los seis coeficientes son necesarios para definir el conjunto de coeficientes para el soporte del filtro con respecto a la posicion de subpfxel "d". Sin embargo, como se ha indicado anteriormente, la simetrfa de pfxeles significa que estos mismos coeficientes con respecto a la posicion de subpfxel "d" tambien se pueden usar para derivar el soporte de filtro para la posicion de subpfxel "l" (vease la FIG. 7). Por lo tanto, solo se deben comunicar seis coeficientes como parte de un flujo de bits de video codificado para definir dos conjuntos diferentes de seis coeficientes necesarios para interpolar la posicion de subpfxel "d" y "l".
La FIG. 12 es un diagrama conceptual que ilustra doce posiciones de soporte de pfxeles bidimensionales (las posiciones de pfxeles enteros mostradas con letras mayusculas y sombreado) con relacion a una posicion de subpfxel "e". El sombreado muestra una falta de cualquier simetrfa de coeficientes. Por lo tanto, los doce coeficientes son necesarios para definir el conjunto de coeficientes para el soporte del filtro con respecto a la posicion de subpfxel "e". Sin embargo, como se ha indicado anteriormente, la simetrfa de pfxeles significa que estos mismos coeficientes con respecto a la posicion de subpfxel "e" tambien se pueden usar para derivar el soporte de filtro para las posiciones de subpfxeles "g", "m" y "o" (vease la FIG. 7). Por lo tanto, 12 coeficientes definen la posicion de subpfxel "e" de soporte de filtro y estos mismos coeficientes pueden utilizarse para derivar el conjunto de coeficientes para posiciones de subpfxel "g", "m" y "o".
La FIG. 13 es un diagrama conceptual que ilustra doce posiciones de soporte de pfxeles bidimensionales (las posiciones de pfxeles enteros mostradas con letras mayusculas) con relacion a un subpfxel "e", con un sombreado que muestra simetrfa de coeficientes. En este caso, la simetrfa de coeficientes significa que los coeficientes de filtro para las posiciones de soporte de filtro B3, B4, C2, C3, C4 y C5 pueden usarse para definir los coeficientes de filtro para las posiciones de soporte de filtro E3, E4, D2, D3, D4 y D5. B3 es simetrica con E3, B4 es simetrica con E4, C2 es simetrica con D2, C3 es simetrica con D3, C4 es simetrica con D4 y C5 es simetrica con D5. Por lo tanto, solo se deben comunicar seis coeficientes como parte de un flujo de bits de video codificado para definir el conjunto de doce coeficientes necesarios para interpolar la posicion de subpfxel "i". Ademas, como se ha indicado anteriormente, la posicion de subpfxel "i" puede tener simetrfa de pfxeles con respecto a la posicion de subpfxel "k". Por lo tanto, el mismo subconjunto de seis coeficientes puede definir los conjuntos completos de doce coeficientes de filtro para las posiciones de subpfxeles "i" y "k".
La FIG. 14 es un diagrama conceptual que ilustra doce posiciones de soporte de pfxeles bidimensionales (las posiciones de pfxeles enteros mostradas con letras mayusculas) con relacion a un subpfxel "f", con un sombreado que muestra simetrfa de coeficientes. En este caso, la simetrfa de coeficientes significa que los coeficientes de filtro para las posiciones de soporte de filtro C2, D2, B3, C3, D3 y E3 pueden usarse para definir los coeficientes de filtro para las posiciones de soporte de filtro C5, D5, B4, C4, D4 y E4. C2 es simetrica con C5, D2 es simetrica con D5, B3 es simetrica con B4, C3 es simetrica con C4, D3 simetrica con D4 y E3 es simetrica con E4. Por lo tanto, solo se deben comunicar seis coeficientes como parte de un flujo de bits de video codificado para definir el conjunto de doce coeficientes necesarios para interpolar la posicion de subpfxel "f". Ademas, como se ha indicado anteriormente, la posicion de subpfxel "f" puede tener simetrfa de pfxeles con respecto a la posicion de subpfxel "n". Por lo tanto, el mismo subconjunto de seis coeficientes puede definir los conjuntos completos de doce coeficientes de filtro para las posiciones de subpfxeles "f" y "n".
La FIG. 15 es un diagrama conceptual que ilustra doce posiciones de soporte de pfxeles bidimensionales (las posiciones de pfxeles enteros mostradas con letras mayusculas) con relacion a un subpfxel "j", con un sombreado que muestra simetrfa de coeficientes. En este caso, la simetrfa de coeficientes significa que solo se necesitan tres coeficientes de filtro para B3, C2 y C3 para definir el conjunto completo de doce coeficientes para las posiciones de soporte de filtro B3, B4, C2, C3, C4, c5, D2, D3, D4, D5, E3 y E4. C3 es simetrica con C4, D3 y D4, C2 es simetrfa con D2, C5 y E4, y B3 es simetrica con B4, E3 y D5. Por lo tanto, solo se deben comunicar tres coeficientes como parte de un flujo de bits de video codificado para definir el conjunto de doce coeficientes necesarios para interpolar la posicion de subpfxel "j".
La FIG. 16 es un diagrama de bloques que ilustra un ejemplo de un decodificador de video, que puede decodificar una secuencia de video que se codifica de manera descrita en el presente documento. El decodificador de video 60 es un ejemplo de dispositivo o aparato informatico de video especializado, denominado "codificador" en el presente documento. El decodificador de video 60 incluye una unidad de decodificacion por entropfa 52 que realiza la decodificacion por entropfa del flujo de bits recibido para generar coeficientes cuantificados y los elementos sintacticos de prediccion. Los elementos sintacticos de prediccion pueden incluir un modo codificacion, uno o mas vectores de movimiento, informacion que identifica una tecnica de interpolacion utilizada para generar los datos de subpfxeles, coeficientes para utilizar en el filtrado de interpolacion y otra informacion asociada con la generacion del bloque de prediccion.
Los elementos sintacticos de prediccion, por ejemplo, los coeficientes, se transmiten a la unidad de prediccion 55. Si se utiliza la prediccion para codificar los coeficientes en relacion con los coeficientes de un filtro fijo, o en relacion unos con otros, la unidad de prediccion de coeficientes y cuantificacion inversa 53 puede decodificar los elementos sintacticos para definir los coeficientes reales. Ademas, si se aplica la cuantificacion a cualquiera de la sintaxis de
5
10
15
20
25
30
35
40
45
50
55
60
65
prediccion, la unidad de prediccion de coeficientes y de cuantificacion inversa 53 puede tambien eliminar dicha cuantificacion. Los coeficientes de filtro, por ejemplo, pueden codificarse mediante prediccion y cuantificarse de acuerdo con la presente divulgacion, y en este caso, la unidad de prediccion de coeficientes y cuantificacion inversa 60 puede utilizarse por la unidad de cuantificacion inversa 53 para decodificar mediante prediccion y decuantificar dichos coeficientes.
La unidad de prediccion 55 puede generar datos de prediccion basandose en los elementos sintacticos de prediccion y uno o mas bloques previamente decodificados que se almacenan en la memoria 62, de la misma manera que se ha descrito con detalle anteriormente con respecto a la unidad de prediccion 32 del codificador de video 50. En particular, la unidad de prediccion 55 puede realizar una o mas de las tecnicas de filtrado de interpolacion de esta divulgacion durante la compensacion de movimiento para generar un bloque de prediccion con una precision particular, tal como precision de un cuarto de pixel. Asf pues, el decodificador de video 60 puede utilizar una o mas de las tecnicas de la presente divulgacion en la generacion de un bloque de prediccion. La unidad de prediccion 55 puede incluir una unidad de compensacion de movimiento que comprende filtros utilizados para tecnicas de filtracion de interpolacion y similares a la interpolacion segun la presente divulgacion. El componente de compensacion de movimiento no se muestra en la FIG. 16 con fines de simplicidad y facilidad de ilustracion.
La unidad de cuantificacion inversa 56 realiza la cuantificacion inversa, es decir, decuantifica, los coeficientes cuantificados. El proceso de cuantificacion inversa puede ser un proceso definido por la decodificacion H.264. La unidad de transformada inversa 58 aplica una transformada inversa, por ejemplo una DCT inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada, con el fin de generar bloques residuales en el dominio del pixel. El sumador 64 suma el bloque residual con el correspondiente bloque de prediccion generado por la unidad de prediccion 55 para formar una version reconstruida del bloque original codificado por el codificador de video 50. Si se desea, tambien puede aplicarse un filtro de desbloqueo para filtrar los bloques descodificados con el fin de eliminar distorsiones de efecto pixelado. Los bloques de video decodificados se almacenan a continuacion en el almacenamiento de trama de referencia 62, que proporciona bloques de referencia para la compensacion de movimiento posterior y tambien proporciona video decodificado para activar el dispositivo de visualizacion (tal como el dispositivo 30 de la FIG. 1). 1).
Las tecnicas NS-AIF pueden calcular valores de pfxeles para las posiciones de subpfxeles bidimensionales utilizando un filtro de interpolacion que tiene soporte de filtro de 36 posiciones (es decir, un soporte de filtro bidimensional 6x6). S-AIF utiliza posiciones de pfxeles enteros separables como soporte de filtro para el filtrado de interpolacion primero en una direccion horizontal en lugar de en una dimension vertical. D-AIF utiliza un filtro de interpolacion menos complejo para calcular las posiciones de subpfxeles bidimensionales que NS-AIF. En D-AIF, las posiciones de subpfxeles bidimensionales se calculan utilizando un filtro de interpolacion que tiene un soporte de filtro de 6 posiciones o un soporte de filtro diagonal de 12 posiciones.
Un inconveniente de utilizar el soporte de filtro diagonal como en D-AIF es que las posiciones de pfxeles enteros usadas en el filtrado estan muy lejos de la posicion actual a interpolar. A medida que aumenta la distancia entre la posicion actual a interpolar y las posiciones de los pfxeles utilizados como soporte de filtro, disminuye la correlacion espacial de pfxeles. Como tal, el soporte de filtro diagonal usado en D-AIF es menos adecuado para formar una prediccion exacta.
Con el fin de proporcionar una mejor prediccion utilizando pfxeles con mayor correlacion con la posicion a interpolar (es decir, posiciones de pfxeles que estan mas cerca o una distancia mas corta de la posicion a interpolar), manteniendo la misma baja complejidad ofrecida por D-AIF, el soporte de filtro de 12 posiciones mostrado en la FIG. 4 puede usarse para la interpolacion. Las posiciones de pfxeles enteros utilizadas en el soporte de filtro de 12 posiciones descrito en esta divulgacion incluyen las cuatro posiciones de pfxeles enteros que rodean las posiciones de subpfxeles, es decir, las posiciones C3, C4, D3 y D4 de pfxeles enteros, que pueden denominarse como posiciones de pfxeles enteros de "esquina" cuando se situan cerca de las esquinas de las posiciones de subpfxeles bidimensionales. Ademas de las posiciones de pfxeles enteros de esquina, tambien se pueden usar en el soporte de filtro una o mas posiciones de pfxeles enteros inmediatamente adyacentes a las posiciones de pfxeles enteros de esquina. Las posiciones de pfxeles enteros inmediatamente adyacentes a las posiciones de pfxeles enteros de esquina pueden incluir posiciones de pfxeles enteros directamente por encima (hacia la parte superior o norte) o directamente por debajo (hacia la parte inferior o sur) de las posiciones de pfxeles enteros de esquina, asf como posiciones de pfxeles enteros directamente a la izquierda (o al oeste) o directamente a la derecha (o al este) de la esquina de las posiciones de pfxeles enteros. En el ejemplo ilustrado en la FIG. 4, el soporte de filtro de 12 posiciones puede incluir ubicaciones de pfxeles enteros B3, B4, C2, C3, C4, C5, D2, D3, D4, D5, E3 y E4. Todas estas posiciones de pfxeles enteros estan situadas dentro de dos posiciones de pfxeles enteros del subpixel a interpolar.
El soporte de filtro de acuerdo con las tecnicas de esta divulgacion puede, sin embargo, incluir ubicaciones adicionales de pfxeles enteros. Por ejemplo, el soporte de filtro puede incluir ubicaciones de pfxeles enteros que estan situadas dentro de tres posiciones de pfxeles enteros de la posicion de subpixel a interpolar que forman una forma radial.
5
10
15
20
25
30
35
40
45
50
55
60
65
Incluso las posiciones de un cuarto de pixel o una resolucion mas fina pueden interpolarse basandose en posiciones de pixeles enteros situadas dentro de al menos dos posiciones de pixeles enteros. De esta manera, las tecnicas de soporte de filtro de esta divulgacion proporcionan una mejor prediccion de interpolacion usando pixeles enteros con mayor correlacion con la posicion a interpolar, manteniendo al mismo tiempo la misma baja complejidad ofrecida por D-AIF.
Como se ha descrito anteriormente, la simetrfa de subpfxeles puede reforzar el mismo conjunto de coeficientes de filtro (y las versiones reflejadas, invertidas y/o giradas del conjunto) para un grupo de una o mas posiciones de subpfxeles. Utilizando un proceso analftico, tal como el de la ecuacion (5), se pueden usar coeficientes de filtro de interpolacion para todas las posiciones de subpfxeles, por ejemplo, quince posiciones de subpfxeles en el caso de una precision de un cuarto de pixel. El analisis de correlacion entre los quince conjuntos de coeficientes de filtro de interpolacion revela una correlacion relativamente fuerte entre los coeficientes de filtro de las posiciones de subpfxeles (ambas posiciones de subpfxeles monodimensionales y bidimensionales) en la misma dimension (por ejemplo, dimension vertical u horizontal). Por el contrario, la correlacion entre los coeficientes de filtro de las posiciones de subpfxeles en diferentes direcciones diagonales puede ser notablemente mas debil.
Por ejemplo, puede haber una alta correlacion entre los coeficientes de filtro para las posiciones de subpixel "a" y "c", que estan ambas en la dimension horizontal. Como otro ejemplo, puede haber una alta correlacion entre los coeficientes de filtro para las posiciones de subpixel "d" y "l", que estan ambas en la dimension vertical. Sin embargo, puede haber poca o ninguna correlacion entre los coeficientes de filtro para las posiciones de subpixel "a", que esta en la dimension horizontal, y la posicion de subpixel "d", que esta en la dimension vertical. Basandose en estas observaciones de las correlaciones, la simetrfa de subpfxeles puede disenarse de manera que no se imponga una simetrfa de subpfxeles para coeficientes de filtro de posiciones de subpfxeles en dimensiones diagonales. Esto conduce a ocho conjuntos de coeficientes, como se describe en el presente documento, que pueden ser mas conjuntos de los necesarios para algunos procedimientos convencionales. Al eliminar la simetrfa de pixeles diagonales para algunas ubicaciones de pixeles, tal como se describe en el presente documento, la codificacion y la compresion de video pueden mejorarse.
Una vez mas, la FIG. 7 muestra las posiciones de los pixeles con los mismos sombreados que pertenecen a un grupo de posiciones de subpfxeles que tienen simetrfa subpfxeles. En particular, las posiciones de subpfxeles "a" y "c" forman un primer grupo que tiene simetrfa de subpfxeles, las posiciones de subpfxeles "d" y "l" forman un segundo grupo que tiene simetrfa de subpfxeles, las posiciones de subpfxeles "e", "g", "m", y "o" forman un tercer grupo que tiene simetrfa de subpfxeles, las posiciones de subpfxeles "f" y "n" forman un cuarto grupo que tiene simetrfa de subpfxeles, y las posiciones de subpfxeles "i" y "k" forman un quinto grupo que tiene simetrfa de subpfxeles. Las posiciones de subpfxeles "b", "h" y "j" no tienen simetrfa de subpfxeles con ninguna otra posicion de subpixel. Como tal, las posiciones de subpfxeles "b", "h" y "j" pueden considerarse como pertenecientes a sus propios grupos; un sexto, septimo y octavo grupo, respectivamente. Cada grupo de coeficientes (que pueden ser subconjuntos debido a la simetrfa de coeficientes) puede comunicarse una vez por unidad codificada, o posiblemente multiples veces por unidad codificada si se definen diferentes tipos de filtrado para diferentes areas o caracterfsticas de una unidad codificada. Los coeficientes para el filtrado de tipo interpolacion de pel enteros tambien se pueden enviar una o varias veces por unidad codificada.
En NS-AIF y D-AIF existen simetrfas de subpfxeles entre posiciones de subpfxeles en la misma dimension, por ejemplo, dos posiciones de subpfxeles en la dimension vertical o dos posiciones de subpfxeles en la dimension horizontal. En algunos NS-AIF y D-AIF convencionales, la simetrfa tambien existe diagonalmente entre las posiciones de subpfxeles en diferentes dimensiones. Por ejemplo, existe simetrfa de subpfxeles entre la posicion de subpixel "a" en la dimension vertical y la posicion de subpixel "d" en la direccion horizontal en algunos NS-AIF y D- AIF convencionales. Con la simetrfa de subpfxeles en dimensiones horizontales, verticales y diagonales, se pueden utilizar hasta cinco conjuntos unicos de coeficientes de filtro de interpolacion para una precision de un cuarto de pixel.
Por otro lado, para algunos tipos de S-AIF, existe una simetrfa de subpfxeles entre las posiciones de subpfxeles en la direccion (o dimension) vertical, pero no las posiciones de subpfxeles en la dimension horizontal. En otras palabras, la simetrfa de subpfxeles no siempre existe para posiciones de subpfxeles en la misma dimension. La simetrfa de subpfxeles tampoco existe en las dimensiones diagonales. La simetrfa de algunos esquemas S-AIF, por lo tanto, requiere mas conjuntos de coeficientes de interpolacion. En particular, para la precision de un cuarto de pixel, algunos esquemas S-AIF requieren once conjuntos unicos de coeficientes de interpolacion.
El esquema de simetrfa de subpfxeles descrito en esta divulgacion, e ilustrado en la FIG. 7, puede dar como resultado una prediccion mas precisa que la simetrfa de subpfxeles descritas anteriormente para algunos tipos de NS-AIF y D-AIF. En particular, el esquema de simetrfa de subpfxeles de la FIG. 7 impone una simetrfa de subpfxeles en una dimension (por ejemplo, en la direccion horizontal o vertical), pero no impone simetrfa de subpfxeles simultaneamente en ambas dimensiones (por ejemplo, en diagonal).
Al no imponer la simetrfa de subpfxeles para las posiciones de subpfxeles en diagonal, la debil correlacion entre los coeficientes de filtro de interpolacion y las posiciones de subpfxeles en diferentes dimensiones no esta integrada en
5
10
15
20
25
30
35
40
45
50
la interpolacion. Aunque pueden ser necesarios mas conjuntos de coeficientes de interpolacion (por ejemplo, ocho en lugar de cinco), los datos de prediccion interpolados resultantes pueden ser mas precisos. La simetrfa de coeficientes diagonales tambien se puede evitar o eliminar, de la misma manera.
La unidad de prediccion 32 tambien puede imponer la simetrfa de coeficientes como se ha descrito anteriormente. En particular, se impone la simetrfa de coeficientes para los coeficientes de filtro en una dimension (por ejemplo, la direccion horizontal o vertical), pero no para ambas dimensiones en diagonal. Por ejemplo, los coeficientes de filtro para la posicion de subpfxel "e" no estan obligados a ser diagonalmente simetricos como en el esquema NS-AIF descrito anteriormente y representado en la ecuacion (11). La simetrfa de coeficientes se resume a continuacion en las ecuaciones (17)-(21).
= H-u = , for h 3 = 0-3 . (21)
Ha de apreciarse que para las posiciones de subpfxeles "f, "i" y "j", algunos coeficientes de filtro, es decir,
hJ =hJ
nij rh,i-j
h,
SP
= hSF ^hSP =hSP
fin i ii-i r\ 'h
%o ““0,3 “"3,o —"3,3 son equivalentes a cero en casos en los que puede usarse el filtro de 12 posiciones descrito en detalle con respecto a la FIG. 4. Como tal, la simetrfa de subpfxeles y de coeficientes descrita en esta divulgacion se puede usar junto con o separadamente de las tecnicas de soporte de filtro. Cuando se utiliza junto con el soporte de filtro de 12 posiciones descrito en la FIG. 4, hay 6(a) + 3(b) + 6(d) + 3(h) + 12(e) + 6(f) + 6(i) + 3(j) = 45 coeficientes unicos para estas posiciones de subpfxeles que deben ser enviados al decodificador, es decir, 6 coeficientes para el grupo que incluye la posicion de subpfxel "a", 3 coeficientes para el grupo que incluye la posicion de subpfxel "b", 6 coeficientes para el grupo que incluye la posicion de subpfxel "d", 3 coeficientes para el grupo que incluye la posicion de subpfxel "h", 12 coeficientes para el grupo que incluye la posicion de subpfxel "e", 6 coeficientes para el grupo que incluye la posicion de subpfxel "f", 6 coeficientes para el grupo que incluye la posicion de subpfxel "i", y 3 coeficientes para el grupo que incluye la posicion de subpfxel "j".
La FIG. 17 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un codificador de video que utiliza un soporte de filtro de doce pfxeles coherente con esta divulgacion. La tecnica de la FIG. 17 se describira desde la perspectiva del codificador de video 50 de la FIG. 2, aunque otros dispositivos pueden realizar tecnicas similares. Como se muestra en la FIG. 17, la unidad MC 37 de la unidad de prediccion 32 obtiene un bloque de pfxeles de la memoria 34 que incluye valores de pfxeles enteros correspondientes a posiciones de pfxeles enteros (171). El filtro o filtros 39 calculan valores de subpfxeles basandose en un soporte de filtro que comprende doce o mas posiciones que rodean las posiciones de subpfxeles (172). Como se explica con mayor detalle anteriormente, el soporte de filtro de doce posiciones puede utilizarse para generar nueve de las quince posibles interpolaciones de subpfxeles, mientras que el filtrado lineal horizontal y lineal vertical puede utilizarse para generar seis de las quince posibles interpolaciones de subpfxeles.
La unidad MC 37 genera entonces un bloque de prediccion basado en los valores de subpfxeles calculados (173). En particular, la unidad MC 37 puede generar y emitir un bloque de prediccion interpolado que comprende valores de subpfxeles interpolados. El sumador 48 puede entonces codificar un bloque de video actual basado en el bloque de prediccion interpolado (174), por ejemplo, restando el bloque de prediccion interpolado del bloque de video que se codifica para generar un bloque residual. El bloque residual puede entonces transformarse y cuantificarse por la unidad de transformada 38 y la unidad de cuantificacion 40, respectivamente. Despues de la codificacion por entropfa por la unidad de codificacion por entropfa 46, el codificador de video 50 puede emitir una informacion de flujo de bits de video codificado y de filtro (175). La informacion de filtro, como se describe en el presente documento, puede comprender ocho conjuntos de coeficientes utilizados para generar los quince conjuntos de coeficientes para quince posiciones de subpel. La informacion del filtro puede emitirse una vez por unidad codificada, o posiblemente varias veces por unidad codificada si diferentes areas de una unidad codificada usan diferentes tipos de interpolacion de subpel.
La FIG. 18 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un decodificador de video que utiliza un soporte de filtro de doce pfxeles coherente con esta divulgacion. Por lo tanto, el proceso de la FIG. 18 puede
5
10
15
20
25
30
35
40
45
50
55
60
65
considerarse el proceso de decodificacion recfproco al proceso de codificacion de la FIG. 17. La FIG. 18 se describira desde la perspectiva del decodificador de video 60 de la FIG. 16, aunque otros dispositivos pueden realizar tecnicas similares. Como se muestra en la FIG. 18, el decodificador de video 60 recibe una informacion de bloques de video codificados y de filtro (181). La unidad de decodificacion por entropfa 52 puede decodificar por entropfa esta informacion recibida. La unidad de prediccion 55 realiza una compensacion de movimiento de interpolacion de acuerdo con las tecnicas de esta divulgacion. En particular, la unidad de prediccion 55 obtiene un bloque de pfxeles de la memoria 62 que incluye valores de pfxeles enteros correspondientes a posiciones de pfxeles enteros (182). La unidad de prediccion 55 puede usar vectores de movimiento recibidos para determinar como realizar la interpolacion. En base a los vectores de movimiento, la unidad de prediccion 55 puede calcular subpfxeles basandose en un soporte de filtro que comprende doce o mas posiciones que rodean las posiciones de subpixel (183). De esta manera, la unidad de prediccion 55 utiliza la interpolacion para generar el bloque de prediccion (184). El bloque de prediccion puede utilizarse para decodificar un bloque de video residual recurriendo al sumador 64 para anadir el bloque de prediccion al bloque residual (185). Los diversos aspectos de interpolacion descritos en el presente documento, incluyendo el uso de un soporte de filtro de doce posiciones que rodea las posiciones de subpfxeles en una forma radial, pueden mejorar la codificacion de video proporcionando datos de interpolacion de mejor calidad que las tecnicas convencionales.
La FIG. 19 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un codificador de video que utiliza simetrfa de coeficientes y simetrfa de pfxeles coherente con esta divulgacion. La tecnica de la FIG. 19 se describira desde la perspectiva del codificador de video 50 de la FIG. 2, aunque otros dispositivos pueden realizar tecnicas similares. Como se muestra en la FIG. 19, la unidad de prediccion 32 del codificador de video 50 define ocho conjuntos de coeficientes de filtro para quince posiciones de subpfxel basadas en simetrfa de coeficientes y simetrfa de pfxeles, como se describe en el presente documento (201). En particular, la unidad de prediccion 32 puede utilizar simetrfa de pfxeles para reducir los conjuntos de coeficientes de quince a ocho, y puede reducir aun mas el numero de coeficientes para algunos o los ocho conjuntos basandose en la simetrfa de coeficientes entre los coeficientes de conjuntos dados. La unidad de prediccion 32 puede entonces codificar datos de video usando filtros de interpolacion (tales como el filtro o filtros 39) y los ocho conjuntos de coeficientes de filtro (202). El codificador de video 50 puede emitir datos de video codificados y los ocho conjuntos de coeficientes de filtro (203). Los ocho conjuntos de coeficientes, que estan codificados y se emiten en el flujo de bits, se pueden enviar con cada unidad codificada (por ejemplo, cada trama o fragmento) para que un dispositivo de decodificacion pueda ser informado de los coeficientes del filtro que se utilizaran para la interpolacion. Como alternativa, se pueden codificar y enviar diferentes grupos de ocho conjuntos de coeficientes con cada unidad codificada para permitir diferentes tipos de interpolaciones en diferentes lugares en una unidad codificada.
La FIG. 20 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un decodificador de video que utiliza simetrfa de coeficientes y simetrfa de pfxeles coherente con esta divulgacion. En este caso, la unidad de prediccion 55 del decodificador de video 60 recibe ocho conjuntos de coeficientes de filtro (191), y genera los quince conjuntos de coeficientes de filtro basandose en los ocho conjuntos, simetrfa de coeficientes y simetrfa de pfxeles. La unidad de prediccion 60 puede entonces programar sus filtros de interpolacion y aplicar dichos filtros de interpolacion para generar adecuadamente datos predictivos interpolados (193). El decodificador de video 60 puede entonces decodificar bloques de video basandose en los datos predictivos (194), por ejemplo, recurriendo al sumador 64 para anadir datos predictivos correctos interpolados por la unidad de prediccion 55 a un bloque residual a decodificar.
La FIG. 21 es un diagrama de flujo que ilustra el funcionamiento ejemplar de un codificador de video que utiliza el filtrado de ubicaciones de pfxeles enteros para generar valores de pfxeles enteros ajustados consistentes con esta divulgacion. Esto se ha analizado anteriormente como filtrado de tipo interpolacion en la medida en que es similar a las interpolaciones, pero no genera valores subenteros. Mas bien, este proceso genera nuevos valores enteros que se filtran en funcion del valor entero original y otros valores enteros que rodean el valor entero original.
La FIG. 21 se describira desde la perspectiva del codificador de video 50 de la FIG. 2, aunque otros dispositivos pueden realizar tecnicas similares. Como se muestra en la FIG. 21, la unidad MC 37 de la unidad de prediccion 32 obtiene un bloque de pfxeles de la memoria 34 que incluye valores de pfxeles enteros correspondientes a ubicaciones de pfxeles enteros (211). El filtro o filtros 39 de la unidad de prediccion 32 filtran los valores de pfxeles enteros basandose en otros valores de pfxeles enteros del bloque de pfxeles para generar valores de pfxeles enteros ajustados (212). La unidad de prediccion 32 genera un bloque de prediccion basado en los valores de pfxeles enteros ajustados (213), y el codificador de video 50 codifica un bloque de video basado en el bloque de prediccion (214), por ejemplo, recurriendo al sumador 48 para restar el bloque de prediccion del bloque de video que se esta codificando para generar un bloque residual. Despues de la transformacion y cuantificacion del bloque residual mediante la unidad de transformada 38 y la unidad de cuantificacion 40, y despues de la codificacion por entropfa por la unidad de codificacion por entropfa 46, el codificador de video 50 envfa la informacion de bloque de video codificado y de filtro (215). Como con la interpolacion subpel, el filtrado de tipo interpolacion con respecto a las ubicaciones de pfxeles enteros puede implicar la salida y comunicacion de la informacion de filtro una vez por unidad codificada, o posiblemente varias veces por unidad codificada si diferentes areas de una unidad codificada usan diferentes tipos de filtrado de tipo interpolacion de enteros.
5
10
15
20
25
30
35
40
45
50
55
60
65
filtrado de ubicaciones de pfxeles enteros para generar valores de pfxeles enteros ajustados consistentes con esta divulgacion. La unidad de prediccion 55 del decodificador de video 60 recibe bloques de video codificados y tambien recibe informacion de filtro (por ejemplo, una vez por unidad codificada) (221). La unidad de prediccion 55 obtiene un bloque de pfxeles de la memoria 62 que incluye valores de pfxeles enteros correspondientes a posiciones de pfxeles enteros (222). La unidad de prediccion 55 recurre a un filtro (no mostrado) como parte de la compensacion de movimiento para filtrar los valores de pfxeles enteros basandose en otros valores de pfxeles enteros del bloque de pfxeles para generar valores de pfxeles enteros ajustados (223). La unidad de prediccion 55 genera un bloque de prediccion basado en los valores de pfxeles enteros ajustados (224). El decodificador de video 60 puede entonces decodificar bloques de video basandose en el bloque de prediccion, por ejemplo, recurriendo al sumador 64 para anadir el bloque predictivo interpolado por la unidad de prediccion 55 a un bloque de video residual a decodificar (225).
La FIG. 23 es un diagrama de flujo que ilustra una tecnica para la interpolacion definida por distorsion de velocidad para codificacion de video basada en dos conjuntos de filtros candidatos. En este caso, la unidad MC 37 de la unidad de prediccion 32 puede generar dos o mas conjuntos diferentes de datos predictivos, un conjunto basado en el primer conjunto de filtros de interpolacion candidatos y otro conjunto basado en el segundo conjunto de filtros de interpolacion candidatos. La unidad MC 37 puede entonces utilizar un analisis basado en distorsion de velocidad para seleccionar que filtro de interpolacion producira los mejores resultados desde la perspectiva de la velocidad y la distorsion. De esta manera, la unidad MC 37 no solo considera que conjunto de datos predictivos producira los mejores resultados (es decir, la menor distorsion), sino que tambien tendra en cuenta el hecho de que un conjunto de filtros candidatos puede requerir menos sobrecarga de bits para transportar sus coeficientes de filtro al decodificador.
Como se muestra en la FIG. 23, la unidad MC 37 de la unidad de prediccion 32 genera los primeros datos predictivos interpolados para codificar datos de video basandose en un primer filtro de interpolacion (231). El primer filtro de interpolacion, en un ejemplo, comprende un filtro de interpolacion fijo que corresponde a un filtro definido por un estandar de codificacion de video particular, tal como un filtro que corresponde a un filtro de interpolacion ITU-T H.264. Para mayor precision, en algunos casos, el filtro de interpolacion fijo puede corresponder a un filtro de interpolacion ITU-T H.264 sin redondeo intermedio de valores de medio pixel que se utilizan para generar valores de cuarto de pixel. En este caso, el filtro de interpolacion fijo puede generar valores de medio pixel y puede redondear hacia arriba dichos valores con fines de interpolacion a la resolucion de medio pixel. Sin embargo, en la medida en que tales valores de medio pixel tambien se usaran para la interpolacion a la resolucion de cuarto de pixel, la unidad Mc 37 puede almacenar versiones no redondeadas de los valores de medio pixel y utilizar las versiones no redondeadas de los valores de medio pixel para cualquier interpolacion a la resolucion de cuarto de pixel. La
Solicitud de Patente de Estados Unidos pendiente junto con la presente y comunmente asignada n.° de serie_____,
presentada por Karczewicz et al., y titulada "ADVANCED INTERPOLATION TECHNIQUES FOR MOTION COMPENSATION IN VIDEO CODING" con el numero de registro 081399U1, que se presento el mismo dfa que la presente solicitud, y que se incorpora en el presente documento por referencia, proporciona muchos detalles adicionales sobre el filtrado de interpolacion sin redondeo intermedio de valores de medio pixel que se usan para generar valores de cuarto de pixel.
A continuacion, la unidad MC 37 de la unidad de prediccion 32 genera los segundos datos predictivos interpolados para codificar video de los datos de video basandose en un segundo filtro de interpolacion (232). En un ejemplo, el segundo filtro de interpolacion puede comprender un filtro de interpolacion adaptativo. En este caso, en consonancia con la interpolacion adaptativa, la unidad MC 37 puede definir los coeficientes de filtro que se van a utilizar. En particular, la unidad MC 37 puede ejecutar un proceso de interpolacion adaptativa en el que la unidad MC 37 comienza con coeficientes de filtro preestablecidos, genera datos predictivos preliminares y luego ajusta los coeficientes de filtro en un proceso adaptativo para que dichos coeficientes de filtro definan datos predictivos mas deseables.
Una vez que la unidad MC 37 de la unidad de prediccion 32 ha generado tanto los primeros como segundos datos predictivos interpolados, la unidad MC 37 puede seleccionar entre los primeros datos predictivos interpolados y los segundos datos predictivos interpolados en base a un analisis de distorsion de velocidad (233). De esta manera, la unidad MC 37 no solo considera que conjunto de datos predictivos producira los mejores resultados (es decir, la menor distorsion), sino que la unidad MC 37 tambien tiene en cuenta las diferentes cantidades de datos (es decir, las diferentes velocidades de bits) que se requeriran para el primer filtro de interpolacion con respecto al segundo filtro de interpolacion. En particular, si se utiliza el filtro de interpolacion fijo (por ejemplo, como primer filtro de interpolacion), el codificador de video 50 no necesitara codificar coeficientes de filtro en el flujo de bits, mientras que si se utiliza el filtro de interpolacion adaptativo (por ejemplo, como el segundo filtro de interpolacion), el codificador de video 50 necesitara codificar coeficientes de filtro. En consecuencia, el analisis de distorsion de velocidad puede determinar que conjunto de datos predictivos producira los mejores resultados (es decir, el menor coste de distorsion de velocidad), teniendo en cuenta el hecho de que el uso del filtro de interpolacion fijo no requiere bits adicionales para transmitir coeficientes de filtro al decodificador.
Mas especfficamente, la seleccion entre los primeros datos predictivos interpolados y los segundos datos predictivos interpolados basandose en un analisis de distorsion de velocidad (233) puede comprender el calculo de un primer
5
10
15
20
25
30
35
40
45
50
55
60
65
coste de distorsion de velocidad asociado con los datos de video si los datos de video se codifican a traves de los primeros datos predictivos interpolados, calcular un segundo coste de distorsion de velocidad asociado con los datos de video si los datos de video se codifican a traves de los segundos datos predictivos interpolados, y seleccionar entre los primeros datos predictivos interpolados y los segundos datos predictivos interpolados en base a primer y segundo coste de distorsion de velocidad.
El coste de distorsion de velocidad asociado con los datos de video si los datos de video estan codificados a traves de los primeros datos predictivos interpolados puede comprender una primera metrica de diferencia, por ejemplo, error cuadratico medio (MSE) de valores de pfxeles o suma de diferencia absoluta (SAD) de valores de pfxeles o suma de diferencia cuadratica (SSD) de valores de pfxeles indicativos de diferencias entre los datos de video y los primeros datos predictivos interpolados, mas un primer valor que cuantifica el coste asociado con la codificacion de coeficientes de filtro. En este caso, si el primer filtro de interpolacion es un filtro de interpolacion fijo, el primer valor que cuantifica el coste puede definirse como cero. De forma similar, el segundo coste de distorsion de velocidad puede comprender una segunda metrica de diferencia indicativa de diferencias entre los datos de video y los segundos datos predictivos interpolados (MSE, SAD o SSD), mas un segundo valor que cuantifica el coste asociado con la codificacion de coeficientes de filtro. En el caso en el que el segundo filtro de interpolacion es un filtro de interpolacion adaptativo, el segundo valor que cuantifica el coste asociado con la codificacion de coeficientes de filtro puede comprender el numero de bits (r) necesario para codificar coeficientes de filtro de interpolacion adaptativos, o posiblemente este numero (r) multiplicado por un multiplicador lagrangiano (X).
Despues de seleccionar entre los primeros datos predictivos interpolados y los segundos datos predictivos interpolados en base a un analisis de distorsion de velocidad (233), la unidad MC 37 de la unidad de prediccion 32 codifica los datos de video basados en la seleccion (234) y codifica la sintaxis para indicar la seleccion (235). La sintaxis puede comprender un indicador de un bit o un indicador de multiples bits que define si el decodificador debe usar el primer filtro de interpolacion o el segundo filtro de interpolacion. El proceso de la FIG. 23 puede repetirse para cada una de una pluralidad de ubicaciones de subpfxeles para cada unidad codificada de una secuencia de video para indicar si el primer filtro de interpolacion o el segundo filtro de interpolacion deberfan ser utilizados por un decodificador para cada una de la pluralidad de ubicaciones de subpfxeles. Las ubicaciones de subpfxeles pueden comprender quince posibles ubicaciones de subpfxeles coherentes con la interpolacion a la resolucion de cuarto de pixel, o pueden comprender un numero diferente de ubicaciones de subpfxeles. El proceso de la FIG. 23 tambien puede repetirse para la posicion de pfxeles enteros para cada unidad codificada de una secuencia de video para indicar si el primer filtro de interpolacion o el segundo filtro de interpolacion deben ser utilizados por un decodificador para la ubicacion de pfxeles enteros.
Una vez que el codificador de video 50 (FIG. 2) ha codificado los datos de video basados en la seleccion (234), y la sintaxis codificada para indicar la seleccion (235), el modem 23 y el transmisor 24 (FIG. 1) pueden modular y transmitir los datos de video codificados y la sintaxis al dispositivo de destino 17. En el caso en que el primer filtro de interpolacion es fijo y el segundo filtro de interpolacion es adaptativo, el transmisor 24 puede transmitir coeficientes de filtro cuando la sintaxis indica que los segundos datos predictivos interpolados se utilizaron para generar los datos de video codificados, pero no pueden transmitir coeficientes de filtro cuando la sintaxis indica que los primeros datos predictivos interpolados se utilizaron para generar los datos de video codificados. De esta manera, cuando el primer filtro de interpolacion es fijo y el segundo filtro de interpolacion es adaptativo, los coeficientes de filtro solo se envfan si la sintaxis indica que se utilizo el filtrado de interpolacion adaptativa, y la decision de usar o no el filtrado adaptativo de interpolacion considera no solo la calidad de video predictiva, sino tambien la velocidad de bits, que se ve afectada por la presencia de coeficientes de filtro en el flujo de bits transmitido. Sin embargo, en otros ejemplos, el primer y segundo filtros de interpolacion pueden ser ambos fijos, o ambos pueden ser adaptativos.
Las tecnicas de esta divulgacion pueden aplicarse en muchos escenarios, incluyendo escenarios cuando hay mas de dos conjuntos de filtros seleccionados por el codificador. En otras palabras, tambien se pueden aplicar filtros de interpolacion adicionales para generar datos predictivos interpolados adicionales, que tambien se pueden considerar en el analisis de distorsion de velocidad. En otras palabras, el metodo no se limita a generar solo primeros y segundos datos predictivos interpolados basados en dos filtros de interpolacion, sino que podrfa aplicarse para generar cualquier pluralidad de datos predictivos interpolados basados en cualquier numero de filtros de interpolacion. Es importante destacar que se usan datos predictivos interpolados por analisis de distorsion de velocidad para identificar que filtro seleccionar. En un ejemplo, un metodo ejecutado por el codificador de video 50 puede comprender generar una pluralidad de versiones diferentes de datos predictivos para codificar datos de video basados en una pluralidad de diferentes filtros de interpolacion, seleccionar entre la pluralidad de versiones diferentes de datos predictivos basados en un analisis de distorsion de velocidad, codificar los datos de video basados en la seleccion, y codificar la sintaxis para indicar la seleccion.
Ademas de seleccionar el filtro de interpolacion basado en un analisis de distorsion de velocidad, y generar sintaxis para indicar la seleccion, la unidad MC 37 de la unidad de prediccion 32 tambien puede llevar a cabo un analisis similar de distorsion de velocidad con respecto al filtrado de pfxeles enteros, que se ha explicado en mas detalle anteriormente. En particular, la unidad MC 37 de la unidad de prediccion 32 puede generar dos o mas conjuntos diferentes de datos predictivos para ubicaciones de pfxeles enteros, por ejemplo, uno con filtrado de pfxeles enteros y uno sin filtrado de pfxeles enteros, y puede llevar a cabo un analisis de distorsion de velocidad con respecto a
5
10
15
20
25
30
35
40
45
50
55
60
65
estos dos conjuntos diferentes con el fin de determinar si se desea un filtrado de pfxeles enteros. Por consiguiente, la unidad MC 37 de la unidad de prediccion 32 puede generar otro elemento sintactico basado en un analisis de distorsion de velocidad asociado con dos conjuntos diferentes de datos predictivos de enteros para indicar si se debe aplicar filtrado de pfxeles enteros para la unidad codificada, en la que los datos predictivos de enteros no se filtran y se filtra un segundo conjunto de datos predictivos de enteros. De esta manera, la decision de si llevar a cabo filtrado de pfxeles enteros puede basarse, no solo en la calidad de la codificacion de video, sino tambien en la posible sobrecarga de bits asociada con el filtrado de pfxeles enteros, particularmente cuando el filtrado de pfxeles enteros implica la codificacion y el envfo de coeficientes de filtro de pfxeles enteros utilizados para realizar dicho filtrado de pfxeles enteros. El filtrado de enteros tambien puede considerar N filtros de enteros (por ejemplo, donde N es cualquier numero entero positivo y plural. De acuerdo con el uso de N filtros de enteros, el ejemplo anterior corresponded al caso en el que N es dos y uno de los filtros no aplica ningun filtrado.
Siempre que los coeficientes de filtro de interpolacion estan realmente codificados y enviados desde el dispositivo de origen 12 al dispositivo de destino 16, esta divulgacion tambien contempla tecnicas para codificar tales coeficientes de filtro de interpolacion. La codificacion descrita para los coeficientes de filtro puede mejorar la compresion de datos. En particular, esta divulgacion contempla tecnicas de prediccion para coeficientes de filtro, por ejemplo, con respecto a coeficientes de filtro fijo. Ademas, esta divulgacion contempla tecnicas de prediccion para un segundo conjunto de coeficientes de filtro con relacion al primer conjunto de coeficientes de filtro. De esta manera, se puede aprovechar la simetrfa imperfecta entre diferentes coeficientes de filtro para permitir la compresion de datos. Ademas de la utilizacion de dichas tecnicas de prediccion para coeficientes de filtro de interpolacion, esta divulgacion tambien proporciona tecnicas utiles de cuantificacion y codificacion por entropfa de coeficientes de filtro de interpolacion en base a la codificacion de prefijo y sufijo. El siguiente analisis proporciona mas detalles sobre estos aspectos de esta divulgacion.
La FIG. 24 es un diagrama de flujo que ilustra una tecnica para codificar coeficientes de filtro usando codificacion predictiva. En este caso, los coeficientes de filtro utilizados por el codificador de video 50 pueden codificarse de forma predictiva con relacion a los coeficientes de filtro de un filtro fijo, lo que puede mejorar aun mas la compresion de datos cuando se envfan coeficientes de filtro como parte de un flujo de bits codificado.
Como se muestra en la FIG. 24, la unidad MC 37 de la unidad de prediccion 32 identifica un conjunto de coeficientes de filtro para la interpolacion de datos predictivos en codificacion de video (241). Por ejemplo, la unidad MC 37 puede identificar el conjunto de coeficientes de filtro realizando un proceso de filtracion de interpolacion adaptativa. En este caso, la unidad MC 37 puede determinar el conjunto de coeficientes de filtro a traves del proceso de filtrado de interpolacion adaptativa y generar los datos predictivos basados en los coeficientes de filtro identificados en el proceso de filtrado por interpolacion adaptativa. En el filtrado de interpolacion adaptativa, tal como se explica con mayor detalle en el presente documento, la unidad 37 de MC puede realizar un enfoque de dos pasadas en el que se generan datos predictivos basadosen un filtro fijo y luego los coeficientes de filtro se ajustan para que los datos predictivos se hagan mas similares a los datos de video que se codifican. Los coeficientes de filtro ajustados, entonces, definen los coeficientes de filtro que se utilizan y codifican en el flujo de bits.
Con el fin de codificar los coeficientes de filtro para que tales coeficientes de filtro se puedan transmitir como parte de un flujo de bits, la unidad de prediccion y cuantificacion de coeficientes 41 puede generar valores residuales asociados con el conjunto de coeficientes de filtro basados en la codificacion predictiva del conjunto de coeficientes de filtro con respecto a coeficientes de filtro asociados con un filtro de interpolacion fijo (242). En particular, la unidad de prediccion y cuantificacion de coeficientes 41 puede restar los coeficientes de filtro determinados en el proceso de filtrado de interpolacion adaptativa a partir de coeficientes de filtro correspondientes asociados a un filtro fijo, tal como un filtro de interpolacion ITU-T H.264, o un filtro de interpolacion ITU-T H.264 sin redondeo intermedio de valores de medio pixel. Mediante la codificacion y transmision de valores residuales, en lugar de transmitir los coeficientes de filtro reales, se puede reducir la cantidad de datos comunicados en el flujo de bits. En este caso, el decodificador puede programarse para conocer la manera en la que estan codificados los coeficientes de filtro.
El codificador de video 50 puede recurrir a la unidad de prediccion y cuantificacion de coeficientes 41 tanto para predecir como cuantificar los coeficientes residuales, y la unidad de codificacion por entropfa 46 puede codificar por entropfa los residuos cuantificados (243). El codificador de video 50 puede entonces emitir los valores residuales como parte del flujo de bits codificado (244). La cuantificacion de valores residuales asociados con los coeficientes de filtro puede implicar la cuantificacion de los valores residuales, en los que al menos algunos de los valores residuales asociados con diferentes coeficientes de filtro se asignan a diferentes niveles de cuantificacion. De esta manera, la unidad de prediccion y cuantificacion de coeficientes 41 puede asignar mas cuantificacion a coeficientes residuales mas grandes, y puede asignar menos cuantificacion a coeficientes residuales mas finos para conseguir un equilibrio deseable de cuantificacion y precision. Cuando se utiliza mas cuantificacion, se eliminan mas datos pero se puede conseguir mas compresion. La unidad de codificacion por entropfa 46 puede codificar por entropfa los valores residuales asignando un codigo de prefijo, asignando un codigo de sufijo y asignando un valor de signo para los valores residuales despues de la cuantificacion de los valores residuales. El codificador de video 50 puede entonces emitir los valores residuales como parte del flujo de bits codificado (244).
5
10
15
20
25
30
35
40
45
50
55
60
65
forma predictiva. En este caso, los coeficientes de filtro Oi, O2, O3 y O4 pueden definir coeficientes de filtro asociados con un filtro de interpolacion fijo. Los coeficientes de filtro Xi, X2, X3 y X4 pueden definir los coeficientes de filtro deseados, que pueden ser bastante similares a los del filtro de interpolacion fijo. Por consiguiente, los coeficientes de filtro Xi, X2, X3 y X4 pueden predecirse basandose en los coeficientes de filtro Oi, O2, O3 y O4 respectivamente. En particular, se puede formar un primer residuo como la diferencia entre Xi y Oi. De forma similar, puede formarse un segundo residuo como la diferencia entre X2 y O2, se puede formar un tercer residuo como la diferencia entre X3 y O3, y se puede formar un cuarto residuo como la diferencia entre X4 y O4. Los residuos pueden comprender menos datos que los coeficientes de filtro originales, promoviendo asf la compresion de datos.
En algunos casos, el conjunto de coeficientes de filtro comprende un primer conjunto de coeficientes de filtro que definen solamente una parte de un conjunto completo de coeficientes de filtro asociados con un filtro de interpolacion adaptativo, en el que un segundo conjunto de coeficientes de filtro puede determinarse mediante un decodificador basado en el primer conjunto de coeficientes de filtro y simetrfa de coeficientes. Por ejemplo, los coeficientes de filtro Xi y X2 pueden codificarse de forma predictiva basandose en Oi y O2 respectivamente. En este caso, sin embargo, X3 y X4 pueden ser simetricos con Xi y X2 y el decodificador puede programarse para saber que dicha simetrfa esta impuesta. Por consiguiente, a traves del uso de simetrfa, los coeficientes X3 y X4 en este sencillo ejemplo, pueden eliminarse del flujo de bits, y pueden calcularse en el decodificador basandose en la simetrfa de coeficiente conocida una vez que los coeficientes Xi y X2 se decodifican predictivamente.
La FIG. 25 es otro diagrama de flujo que ilustra una tecnica para codificar coeficientes de filtro usando codificacion predictiva. En este caso, sin embargo, se utilizan dos tipos diferentes de prediccion. Como se muestra en la FIG. 25, la unidad MC 37 de la unidad de prediccion 32 identifica un conjunto de coeficientes de filtro para la interpolacion de datos predictivos en codificacion de video (25i). Como con el ejemplo de la FIG. 24, en la FIG. la unidad MC 37 puede identificar el conjunto de coeficientes de filtro realizando un proceso de filtracion de interpolacion adaptativa. En este caso, la unidad MC 37 puede determinar el conjunto de coeficientes de filtro a traves del proceso de filtrado de interpolacion adaptativa y generar los datos predictivos basados en los coeficientes de filtro identificados en el proceso de filtrado por interpolacion adaptativa. En el filtrado de interpolacion adaptativa, la unidad 37 de MC puede realizar un enfoque de dos pasadas en el que se generan datos predictivos basadosen un filtro fijo y luego los coeficientes de filtro se ajustan para que los datos predictivos se hagan mas similares a los datos de video que se codifican. Los coeficientes de filtro ajustados, entonces, definen los coeficientes de filtro que se utilizan y codifican en el flujo de bits.
Con el fin de codificar los coeficientes de filtro para que tales coeficientes de filtro se puedan transmitir como parte de un flujo de bits, la unidad de prediccion y cuantificacion de coeficientes 4i puede generar un primer conjunto de valores residuales asociado con un primer conjunto de los coeficientes de filtro basados en la codificacion predictiva con respecto a coeficientes de filtro asociados con un filtro de interpolacion fijo (252). En particular, la unidad de prediccion y cuantificacion de coeficientes 4i puede restar el primer conjunto de coeficientes de filtro de coeficientes de filtro correspondientes asociados a un filtro fijo, tal como un filtro de interpolacion ITU-T H.264, o un filtro de interpolacion iTU-T H.264 sin redondeo intermedio de valores de medio pixel. A continuacion, la unidad de prediccion y cuantificacion de coeficientes 4i puede generar un segundo conjunto de valores residuales asociados con un segundo conjunto de coeficientes de filtro basados en la codificacion predictiva con respecto al primer conjunto de coeficientes de filtro (253). En particular, la unidad de prediccion y cuantificacion de coeficientes 4i puede restar el segundo conjunto de coeficientes de filtro de los valores reflejados o rotados del primer conjunto de coeficientes. Por lo tanto, el primer conjunto de coeficientes se codifica de forma predictiva basandose en los coeficientes de un filtro fijo y el segundo conjunto de coeficientes se codifica de forma predictiva en base al primer conjunto de coeficientes. Mediante la generacion de valores residuales, en lugar de usar los coeficientes de filtro reales, se puede reducir la cantidad de datos comunicados en el flujo de bits. Ademas, utilizando el filtro fijo para predecir el primer conjunto de coeficientes y despues usando el primer conjunto de coeficientes para predecir el segundo conjunto de coeficientes, se puede conseguir una compresion de datos adicional con respecto a la prediccion que se basa unicamente en el filtro fijo.
Como con el ejemplo de la FIG. 24, en la FIG. 25, el codificador de video 50 puede recurrir a la unidad de prediccion y cuantificacion de coeficientes 4i tanto para codificar predictivamente como cuantificar los coeficientes residuales, y la unidad de codificacion por entropfa 46 puede codificar por entropfa los residuos cuantificados (254). El codificador de video 50 puede entonces emitir los valores residuales como parte del flujo de bits codificado (254). De nuevo, la cuantificacion de valores residuales asociados con los coeficientes de filtro puede implicar la cuantificacion de los valores residuales, en los que al menos algunos de los valores residuales asociados con diferentes coeficientes de filtro se asignan a diferentes niveles de cuantificacion. De esta manera, la unidad de prediccion y cuantificacion de coeficientes 4i puede asignar mas cuantificacion a coeficientes residuales mas grandes, y puede asignar menos cuantificacion a coeficientes residuales mas finos para conseguir un equilibrio deseable de cuantificacion y precision. La unidad de codificacion por entropfa 46 puede codificar por entropfa los valores residuales asignando un codigo de prefijo, asignando un codigo de sufijo y asignando un valor de signo para los valores residuales despues de la cuantificacion de los valores residuales. El codificador de video 50 puede entonces emitir los valores residuales como parte del flujo de bits codificado (255).
5
10
15
20
25
30
35
40
45
50
55
60
65
forma predictiva coherente con el proceso de la FIG. 25. En este caso, los coeficientes de filtro Oi y O2 pueden definir coeficientes de filtro asociados con un filtro de interpolacion fijo. Los coeficientes de filtro Xi y X2 pueden definir un primer conjunto de los coeficientes de filtro deseados, que pueden ser bastante similares a los del filtro de interpolacion fijo. Por consiguiente, los coeficientes de filtro Xi y X2 pueden predecirse basandose en los coeficientes de filtro Oi y O2 respectivamente. En particular, puede formarse un primer residuo como la diferencia entre Xi y Oi, y un segundo residuo puede formarse como la diferencia entre X2 y O2. Los residuos pueden comprender menos datos que los coeficientes de filtro originales, promoviendo asf la compresion de datos. Los residuos se cuantifican entonces por la unidad de prediccion y cuantificacion de coeficientes 4i y se codifican por entropfa por la unidad de codificacion por entropfa 46. Xi y X2 pueden referirse a coeficientes de filtro modificados que se generan sumando los residuos descuantificados a los coeficientes de filtro de prediccion Oi y O2.
A continuacion, se puede codificar predictivamente un segundo conjunto de coeficientes de filtro Zi y Z2 basandose en el primer conjunto de coeficientes Xi y X2, por ejemplo, especfficamente a partir de los coeficientes Xi y X2 que se definen basandose en los coeficientes Xi y X2. En particular, puede formarse un tercer residuo como la diferencia entre Zi y Xi, y puede formarse un cuarto residuo como la diferencia entre Z2 y X2. Xi y X2 pueden ser mas similares a Zi y Z2 que Oi y O2 y, por lo tanto, utilizando Xi y X2 para codificar predictivamente Zi y Z2 se puede promover una compresion de datos adicional.
La FIG. 26 es un diagrama de flujo que ilustra una tecnica para decodificar coeficientes de filtro usando codificacion predictiva. La FIG. 26 se describira desde la perspectiva del decodificador de video 60 de la FIG. i6. Como se muestra, el decodificador de video 60 recibe valores residuales asociados con un conjunto de coeficientes de filtro (26i). El decodificador de video 60 puede decodificar por entropfa los valores residuales a traves de la unidad de decodificacion por entropfa 52 y puede recurrir a la unidad de prediccion de coeficientes y cuantificacion inversa 53 para descuantificar los valores residuales (262), los cuales se envfan a la unidad de prediccion 55. La unidad de prediccion 56 genera el conjunto de coeficientes de filtro utilizando la decodificacion predictiva de los valores residuales (263).
En particular, la unidad de prediccion 56 puede generar todo el conjunto de coeficientes de filtro basandose en los valores residuales y coeficientes de filtro asociados con un filtro de interpolacion fijo, por ejemplo, como se ilustra conceptualmente en la FIG. 27 y se ha abordado anteriormente en el contexto de la codificacion. En algunos casos, se puede generar un primer conjunto de coeficientes de filtro basandose en los valores residuales y los coeficientes de filtro asociados con un filtro de interpolacion fijo, y se puede generar un segundo conjunto de coeficientes de filtro basado en la simetrfa. En otros casos, se puede generar un primer conjunto de coeficientes de filtro basandose en los valores residuales y coeficientes de filtro asociados a un filtro de interpolacion fijo, y se puede generar un segundo conjunto de coeficientes de filtro en base a los valores residuales adicionales y el primer conjunto de coeficientes de filtro, por ejemplo, como se ilustra conceptualmente en la FIG. 28 y se ha abordado anteriormente en el contexto de la codificacion. En cualquier caso, la unidad de prediccion 56 del decodificador de video 60 aplica el conjunto de coeficientes de filtro para interpolar los datos predictivos utilizados para la decodificacion predictiva de los bloques de video (264). En particular, la unidad de prediccion 56 filtra los datos para generar datos predictivos interpolados utilizando los coeficientes de filtro decodificados de forma predictiva, de manera que los bloques de video se pueden decodificar basandose en dichos datos predictivos interpolados.
De nuevo, el conjunto de coeficientes de filtro decodificados predictivamente puede comprender un primer conjunto de coeficientes de filtro que definen solo una porcion de un conjunto completo de coeficientes de filtro asociados con un filtro de interpolacion adaptativo. En este caso, la unidad de prediccion de coeficientes y de cuantificacion inversa 53 del decodificador de video 60 puede generar un segundo conjunto de coeficientes de filtro basado en el primer conjunto de coeficientes de filtro y simetrfa de coeficientes y aplicar los conjuntos primero y segundo de coeficientes de filtro para interpolar los datos predictivos.
En otro caso, el conjunto de coeficientes de filtro decodificados predictivamente puede comprender un primer conjunto de coeficientes de filtro que definen solo una porcion de un conjunto completo de coeficientes de filtro asociados con un filtro de interpolacion adaptativo. En este caso, el decodificador de video 60 puede recibir valores residuales adicionales asociados con todo el conjunto de coeficientes de filtro. La unidad de prediccion de coeficientes y de cuantificacion inversa 53 puede generar un segundo conjunto de coeficientes de filtro usando decodificacion predictiva basada en valores residuales adicionales y el primer conjunto de coeficientes de filtro, y la unidad de prediccion 55 puede aplicar el primer y segundo conjuntos de coeficientes de filtro para interpolar los datos predictivos.
En algunos casos, pueden usarse filtros de interpolacion fijos basados en filtros H.264/AVC para predecir los filtros i-D (que pueden incluir filtros para las posiciones de subpfxel a, b, d, h mostradas en las FIGs. 8, 9, i0 y ii). Para los filtros 2-D, que incluyen filtros para las posiciones de subpfxel e, f, i, y j mostradas en las FIGS. i2, i3, i4 y i5, puede utilizarse uno de los siguientes esquemas de prediccion:
1. Establecer prediccion a cero (sin prediccion), SP e {e,f,i,j}
5
10
15
20
25
30
35
40
45
2. Utilizar una prediccion de filtro fijo, tal como el filtro promedio reunido sobre un conjunto de entrenamiento, es
n(hSF'\=Jisr ~h~‘'
decir, P'- hi) j > SP e {e,f,ij}, donde iJ es el coeficiente de filtro (i, j)-esimo en el filtro promedio para la posicion de subpfxel SP.
3. Aprovechar la posible simetrfa de los coeficientes y utilizar los coeficientes ya codificados para predecir los coeficientes restantes.
Para los filtros 1-D, tambien puede aplicarse cualquiera de estos tres metodos de prediccion.
Para la prediccion, la FIG. 29 proporciona un ejemplo de una matriz de coeficientes de filtro de pfxeles enteros para los que pueden usarse tecnicas de prediccion para la codificacion. En este ejemplo, puede suponerse que no se impone ninguna simetrfa en el filtro de pfxeles enteros. Los coeficientes (h0,0), (h0,1), (hi,0), (hl,1), (h2,0), (h2,1) (h0,2), (h1,2) y (h2,2) se pueden cuantificar y codificar primero. A continuacion, se pueden utilizar los coeficientes de la parte superior izquierda (h0,0), (h0,1), (h1,0), (h1,1) y (h2,0) ya codificados para predecir los coeficientes de la parte superior derecha (h0,3), (h1,3), (h2,3), (h0,4), (h1,4) y (h2,4). A continuacion, una vez que la mitad superior de los coeficientes del filtro (h0,0), (h0,1), (h0,2), (h0,3) (h0,4), (h1,0), (h1,1), (h1,2), (h1,3) y (h1,4) se cuantifican y codifican, pueden utilizarse ademas para predecir la mitad inferior de los coeficientes de filtro (h3,0), (h3,1), (h3,2), (h3,3), (h3,4), (h4,0), (h4,1), (h4,2), (h4,3) y (h4,4). La prediccion de otros coeficientes de filtro puede hacerse de una manera similar. Por ejemplo, para el filtro de posicion "e" de subpfxel (vease la FIG. 12), que puede tener cierta simetrfa diagonal, los coeficientes de la parte superior derecha pueden cuantificarse y codificarse primero, y luego utilizarse para predecir los coeficientes de la parte inferior izquierda.
En cualquier caso, despues de la prediccion de los coeficientes (por ejemplo, mediante la unidad de prediccion y cuantificacion de coeficientes 41 de la unidad de prediccion 32), los errores de prediccion se cuantifican (por ejemplo, mediante la unidad de prediccion y cuantificacion de coeficientes 41). Como se ha descrito anteriormente, puede usarse la denominada "cuantificacion desigual". En este caso, la precision de cuantificacion aplicada por la unidad de prediccion y cuantificacion de coeficientes 41 puede depender de la ubicacion del coeficiente. Se ha encontrado que para coeficientes de menor magnitud (que son tfpicamente coeficientes mas alejados del centro del filtro), puede ser deseable una mejor precision. Por el contrario, los coeficientes de mayor magnitud (que son tfpicamente coeficientes mas cercanos al centro del filtro), es mas deseable una menor precision.
Las siguientes matrices, Q , Q , Q , pueden usarse por la unidad de prediccion y cuantificacion de coeficientes 41 para especificar la precision de cuantificacion para los coeficientes en los filtros 1D, los filtros 2D y el filtro de pfxeles enteros, respectivamente. Observese que los numeros de bits dados en las matrices pueden incluir 1 bit para codificar el signo de los respectivos coeficientes.
Qw =
q2°
[12 11 9 9 11 12]
"0 10 10 0"
_ 10 9 9 10
“ 10 9 9 10
0 10 10 0
- 11
- 11
- 11
- 11
- 11
- 11
- 10 10 10
- 11
- 11
- 10 9 10
- 11
- 11
- 10 10 10
- 11
- 11
- 11
- 11
- 11
- 11
La unidad de prediccion y cuantificacion de coeficientes 41 puede codificar los errores de prediccion de coeficientes cuantificados, es decir, los residuos de coeficientes, basandose en un esquema de codificacion de prefijo simple. En primer lugar, el rango dinamico de la magnitud del error de prediccion se divide en N intervalos, por ejemplo N = 6. Si el rango dinamico de la magnitud es [0, ..., 2q-1-1 ], donde q es la precision de cuantificacion para la posicion de coeficiente dada, (tal como se especifica en las matrices anteriores) entonces cada intervalo n, n = 0, ... N-1 , puede abarcar los siguientes rangos:
5
10
15
20
25
30
35
40
45
Ktert>O = [0v»»2?'w) ,f n = 0
K«,0 = [2^1,2^+-)’1 « > 0
En este caso, el intervalo b, b = 0, ..., N-7 , al que pertenece la magnitud de entrada m, puede codificarse utilizando un codigo de prefijo unario (que toma b+1 bits). Entonces, el resto de la magnitud, m - b noo, puede codificarse usando el codigo de sufijo de longitud fija de (q - N + b - 1) bits. Finalmente, el signo del error de prediccion se codifica utilizando 1 bit.
Por ejemplo, para el coeficiente central en el filtro 1D, la unidad de prediccion y cuantificacion de coeficientes 41 puede utilizar una precision de 9 bits para cuantificar el error de prediccion, es decir, q = 9, de los cuales 8 bits pueden usarse para cuantificar la magnitud del error. Si la magnitud del error es 97, entonces esta dentro del 4° intervalo, es decir, b = 4. Por lo tanto, el codigo de prefijo unario "11110" puede codificarse para indicar el cuarto intervalo, y el resto de m - b nco = 97 - 64 = 33 puede codificarse usando un codigo de sufijo de longitud fija de (q - N + b - 1) = (9 - 6 + 4 - 1) = 6 bits. Finalmente, se puede codificar un bit "0" para indicar el signo positivo.
Las tecnicas de esta divulgacion se pueden implementar en una gran variedad de dispositivos o aparatos, incluyendo un telefono inalambrico, un circuito integrado (IC) o un conjunto de IC (es decir, un conjunto de chips). Se ha descrito cualquier componente, modulo o unidad para enfatizar aspectos funcionales y no necesariamente requieren realizacion por diferentes unidades de hardware.
Por consiguiente, las tecnicas descritas en el presente documento pueden implementarse en hardware, software, firmware o cualquier combinacion de lo anterior. Si implementan en hardware, cualquier caracterfstica descrita como modulos, unidades o componentes pueden implementarse juntos en un dispositivo logico integrado o por separado, como dispositivos logicos discretos pero interoperables. Si se implementan en software, las tecnicas pueden realizarse, al menos en parte, mediante un medio legible por ordenador que comprende instrucciones que, al ejecutarse en un procesador, realizan uno o mas de los metodos descritos anteriormente. El medio legible por ordenador puede comprender un medio de almacenamiento legible por ordenador y puede formar parte de un producto de programa informatico, que puede incluir materiales de empaquetado. El medio de almacenamiento legible por ordenador puede comprender memoria de acceso aleatorio (RAM) tal como memoria de acceso aleatorio dinamica sfncrona (SDRAM), memoria de solo lectura (ROM), memoria de acceso aleatorio no volatil (NVRAM), memoria de solo lectura programable y borrable electricamente (EEPROM), memoria flash, medios de almacenamiento de datos magneticos u opticos, y similares. Las tecnicas se pueden realizar adicionalmente, o alternativamente, al menos en parte por un medio de comunicacion legible por ordenador que lleva o comunica codigo en forma de instrucciones o estructuras de datos y que se puede acceder, leer y/o ejecutar por un ordenador.
El codigo puede ser ejecutado por uno o mas procesadores, tales como uno o mas procesadores de senales digitales (DSP), microprocesadores de proposito general, circuitos integrados de aplicacion especffica (ASIC), matrices logicas programables por campo (FPGA), u otro circuito logico integrado o discreto equivalente. Por consiguiente, el termino "procesador", como se utiliza en el presente documento, puede referirse a cualquier estructura anterior o a cualquier otra estructura adecuada para la implementacion de las tecnicas descritas en el presente documento. Ademas, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de modulos de software y/o modulos de hardware dedicados configurados para la codificacion y la decodificacion, o incorporarse en un codec de video combinado. Ademas, las tecnicas podrian implementarse completamente en uno o mas circuitos o elementos logicos.
Se han descrito diversos aspectos de la divulgacion. Estos y otros aspectos estan dentro del alcance de las siguientes reivindicaciones.
Claims (6)
10
15
20
2.
25
3.
30
4.
35
5.
40
6.
45
50
55
REIVINDICACIONES
Un metodo para realizar un proceso de compensation de movimiento durante la codification o decodificacion de un bloque de video dentro de una trama codificada de una secuencia de video, comprendiendo el metodo:
obtener bloques de pixeles desde una o mas tramas de video de referencia en el proceso de compensation de movimiento, en el que los bloques de pixeles comprenden bloques de referencia reconstruidos que se decodificaron previamente e incluyen valores de pixeles enteros correspondientes a posiciones de pixeles enteros dentro de los bloques de pixeles;
aplicar un filtrado a un valor de pixel entero de los valores de pixeles enteros basandose en otros valores de pixeles enteros dentro de los bloques de pixeles y un valor de pixel entero original del valor de pixel entero para generar un valor de pixel entero ajustado, en el que el valor de pixel entero ajustado corresponde a una position de pixel entero rodeada por otras posiciones de pixeles enteros a las que corresponden los otros valores de pixeles enteros, y generar un bloque de prediction en el proceso de compensation de movimiento durante la codification o decodificacion del bloque de video basado, al menos en parte, en el valor de pixel entero ajustado;
estando el metodo caracterizado por que un filtro de interpolation de 5 por 5 en forma de 4 4
zi^xr+o"' FP
1=0 J=° se usa para filtrar el pixel entero, en el que p es el valor de pixel entero
ajustado, Pi,j es el valor de pixel entero en la position (i, j), hFP,j es el coeficiente para la position (i, j), y oFP es un desfase de filtro.
El metodo de la revindication 1, en el que el metodo se realiza durante un proceso de codification, comprendiendo ademas el metodo generar un bloque de video residual como una diferencia entre un bloque de video actual que esta siendo codificado y el bloque de prediction.
El metodo de la revindication 1, en el que el metodo se realiza durante un proceso de codification, comprendiendo ademas el metodo codificar un conjunto de coeficientes de filtro por trama codificada para un filtrado de enteros.
El metodo de la reivindicacion 1, en el que el metodo se realiza durante un proceso de decodificacion, comprendiendo ademas el metodo generar un bloque de video reconstruido como una suma de un bloque de video residual asociado con un bloque de video actual que esta siendo decodificado y el bloque de prediccion.
El metodo de la revindication 1, en el que el metodo se realiza durante un proceso de decodificacion, comprendiendo ademas el metodo recibir un conjunto de coeficientes de filtro por trama codificada para filtrado de enteros.
Un dispositivo que realiza un proceso de compensation de movimiento durante la codification o decodificacion de un bloque de video dentro de una trama codificada de una secuencia de video, comprendiendo el dispositivo:
medios para obtener bloques de pixeles desde una o mas tramas de video de referencia en el proceso de compensation de movimiento, en el que los bloques de pixeles comprenden bloques de referencia reconstruidos que se decodificaron previamente e incluyen valores de pixeles enteros correspondientes a posiciones de pixeles enteros dentro del bloque de pixeles;
medios para aplicar un filtrado a un valor de pixel entero de los valores de pixeles enteros basandose en otros valores de pixeles enteros dentro del bloque de pixeles y un valor de pixel entero original del valor de pixel entero para generar un valor de pixel entero ajustado, en el que el valor de pixel entero ajustado corresponde a una position de pixel entero rodeada por otras posiciones de pixeles enteros a las que corresponden los otros valores de pixeles enteros, y medios para generar un bloque de prediction en el proceso de compensation de movimiento durante la codification o decodificacion del bloque de video basado, al menos en parte, en el valor de pixel entero ajustado; caracterizado por que
4 4
pFP=XZp>,Xj +°FP
un filtro de interpolation de 5 por 5 en forma de 1=0 J=° se usa para filtrar el pixel
entero, en el que pFP es el valor de pixel entero ajustado, Pi,j es el valor de pixel entero en la position (i, j), hFPi,j es el coeficiente para la position (i, j), y oFP es un desfase de filtro.
5
10
15
20
25
30
35
El dispositivo de la reivindicacion 6, en el que el dispositivo realiza un proceso de codification, comprendiendo el dispositivo medios para generar un bloque de video residual como una diferencia entre un bloque de video actual que esta siendo codificado y el bloque de prediction.
El dispositivo de la reivindicacion 6, en el que el dispositivo realiza un proceso de decodificacion, comprendiendo ademas el dispositivo medios para generar un bloque de video reconstruido como una suma de un bloque de video residual asociado con un bloque de video actual que esta siendo decodificado y el bloque de prediccion.
Un medio de almacenamiento no transitorio legible por ordenador que comprende instrucciones que, al ejecutarse por un procesador, hacen que el procesador realice un proceso de compensation de movimiento durante la codificacion o decodificacion de un bloque de video dentro de una trama codificada de una secuencia de video, en el que las instrucciones hacen que el procesador:
obtenga bloques de pixeles desde una o mas tramas de video de referencia en el proceso de compensacion de movimiento, en el que los bloques de pixeles comprenden bloques de referencia reconstruidos que se decodificaron previamente e incluyen valores de pixeles enteros correspondientes a posiciones de pixeles enteros dentro del bloque de pixeles;
aplique un filtrado a un valor de pixel entero de los valores de pixeles enteros basandose en otros valores de pixeles enteros dentro del bloque de pixeles y un valor de pixel entero original del valor de pixel entero para generar un valor de pixel entero ajustado, en el que el valor de pixel entero ajustado corresponde a una position de pixel entero rodeada por otras posiciones de pixeles enteros a las que corresponden los otros valores de pixeles enteros, y genere un bloque de prediccion en el proceso de compensacion de movimiento durante la codificacion o decodificacion del bloque de video basado, al menos en parte, en el valor de pixel entero ajustado;
caracterizado por que
4 4
pFP=XZp>,Xj +°FP
un filtro de interpolation de 5 por 5 en forma de 1=0 J=° se usa para filtrar el pixel
entero, en el que pFP es el valor de pixel entero ajustado, Py es el valor de pixel entero en la posicion (i, j), hFPi,j es el coeficiente para la posicion (i, j), y oFP es un desfase de filtro.
El medio de almacenamiento no transitorio legible por ordenador de la reivindicacion 9, en el que las instrucciones hacen que el dispositivo realice un proceso de decodificacion, en el que las instrucciones hacen que el dispositivo genere un bloque de video reconstruido como una suma de un bloque de video residual asociado con un bloque de video actual que esta siendo decodificado y el bloque de prediccion.
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US4402008P | 2008-04-10 | 2008-04-10 | |
US4402308P | 2008-04-10 | 2008-04-10 | |
US44023P | 2008-04-10 | ||
US44020P | 2008-04-10 | ||
US4424008P | 2008-04-11 | 2008-04-11 | |
US44240P | 2008-04-11 | ||
US5737308P | 2008-05-30 | 2008-05-30 | |
US57373P | 2008-05-30 | ||
US12/420,292 US9077971B2 (en) | 2008-04-10 | 2009-04-08 | Interpolation-like filtering of integer-pixel positions in video coding |
US420292 | 2009-04-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2633476T3 true ES2633476T3 (es) | 2017-09-21 |
Family
ID=40755172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES14184120.5T Active ES2633476T3 (es) | 2008-04-10 | 2009-04-10 | Filtrado de tipo interpolación de posiciones de píxeles enteros en la codificación de vídeo |
Country Status (15)
Country | Link |
---|---|
US (1) | US9077971B2 (es) |
EP (2) | EP2304960A1 (es) |
JP (1) | JP5575747B2 (es) |
KR (1) | KR101214021B1 (es) |
CN (1) | CN102017631B (es) |
BR (1) | BRPI0910638B1 (es) |
CA (1) | CA2719404C (es) |
DK (1) | DK2827593T3 (es) |
ES (1) | ES2633476T3 (es) |
HU (1) | HUE033226T2 (es) |
PL (1) | PL2827593T3 (es) |
PT (1) | PT2827593T (es) |
SI (1) | SI2827593T1 (es) |
TW (1) | TWI523528B (es) |
WO (1) | WO2009126929A1 (es) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8705622B2 (en) * | 2008-04-10 | 2014-04-22 | Qualcomm Incorporated | Interpolation filter support for sub-pixel resolution in video coding |
US9967590B2 (en) | 2008-04-10 | 2018-05-08 | Qualcomm Incorporated | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter |
US8462842B2 (en) * | 2008-04-10 | 2013-06-11 | Qualcomm, Incorporated | Symmetry for interpolation filtering of sub-pixel positions in video coding |
KR101773012B1 (ko) * | 2009-12-31 | 2017-08-30 | 톰슨 라이센싱 | 비디오 인코딩 및 디코딩을 위해 적응형 결합된 전처리 및 후처리 필터들을 위한 방법들 및 장치 |
US9219921B2 (en) | 2010-04-12 | 2015-12-22 | Qualcomm Incorporated | Mixed tap filters |
TWI399971B (zh) * | 2010-07-28 | 2013-06-21 | Vatics Inc | 降低數位影像雜訊的方法及其電子裝置 |
US10045046B2 (en) | 2010-12-10 | 2018-08-07 | Qualcomm Incorporated | Adaptive support for interpolating values of sub-pixels for video coding |
US9172972B2 (en) | 2011-01-05 | 2015-10-27 | Qualcomm Incorporated | Low complexity interpolation filtering with adaptive tap size |
CN107295341B (zh) | 2011-07-22 | 2020-02-28 | Sk电信有限公司 | 视频编码方法 |
US9357235B2 (en) * | 2011-10-13 | 2016-05-31 | Qualcomm Incorporated | Sample adaptive offset merged with adaptive loop filter in video coding |
KR20130050149A (ko) * | 2011-11-07 | 2013-05-15 | 오수미 | 인터 모드에서의 예측 블록 생성 방법 |
US9313498B2 (en) | 2012-04-16 | 2016-04-12 | Qualcomm Incorporated | Sign hiding techniques for quantized transform coefficients in video coding |
US10200711B2 (en) | 2015-03-27 | 2019-02-05 | Qualcomm Incorporated | Motion vector derivation in video coding |
KR102357142B1 (ko) * | 2017-11-07 | 2022-02-08 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 비디오 코딩을 위한 인터 예측 장치 및 방법을 위한 보간 필터 |
CA3119646A1 (en) * | 2018-12-31 | 2020-07-09 | Panasonic Intellectual Property Corporation Of America | Encoder, decoder, encoding method, and decoding method |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61210599A (ja) | 1985-03-14 | 1986-09-18 | Casio Comput Co Ltd | 録音機能付電子機器 |
US6266373B1 (en) | 1998-06-15 | 2001-07-24 | U.S. Philips Corporation | Pixel data storage system for use in half-pel interpolation |
JP3992419B2 (ja) | 2000-03-27 | 2007-10-17 | パイオニア株式会社 | 情報再生装置 |
US6950469B2 (en) | 2001-09-17 | 2005-09-27 | Nokia Corporation | Method for sub-pixel value interpolation |
BR0304545A (pt) | 2002-01-14 | 2004-11-03 | Nokia Corp | Método de codificação das imagens em uma sequência de vìdeo digital para fornecer os dados de vìdeo codificados, codificador de vìdeo, método de decodificação dos dados indicativos de uma sequência de vìdeo digital, decodificador de vìdeo, e, sistema de decodificação de vìdeo |
US7129962B1 (en) | 2002-03-25 | 2006-10-31 | Matrox Graphics Inc. | Efficient video processing method and system |
US7305034B2 (en) | 2002-04-10 | 2007-12-04 | Microsoft Corporation | Rounding control for multi-stage interpolation |
JP4120301B2 (ja) | 2002-04-25 | 2008-07-16 | ソニー株式会社 | 画像処理装置およびその方法 |
JP2005532725A (ja) | 2002-07-09 | 2005-10-27 | ノキア コーポレイション | ビデオ符号化における内挿フィルタタイプの選択方法および選択システム |
KR20050018948A (ko) | 2002-07-09 | 2005-02-28 | 노키아 코포레이션 | 비디오 부호화에서 보간 필터 유형을 선택하기 위한 방법및 장치 |
JP4724351B2 (ja) | 2002-07-15 | 2011-07-13 | 三菱電機株式会社 | 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法、および通信装置 |
US20040012610A1 (en) | 2002-07-22 | 2004-01-22 | Taneja Nimita J. | Anti-aliasing interlaced video formats for large kernel convolution |
KR100472476B1 (ko) | 2002-08-31 | 2005-03-10 | 삼성전자주식회사 | 움직임 보상을 위한 보간 방법 및 그 장치 |
KR100534207B1 (ko) | 2002-12-09 | 2005-12-08 | 삼성전자주식회사 | 비디오 부호화기의 움직임 추정기 및 그 방법 |
WO2004082290A1 (ja) | 2003-03-10 | 2004-09-23 | Mitsubishi Denki Kabushiki Kaisha | 映像信号符号化装置、および映像信号符号化方法 |
JP2004297768A (ja) * | 2003-03-10 | 2004-10-21 | Mitsubishi Electric Corp | 映像信号符号化装置、および映像信号符号化方法 |
RU2305377C2 (ru) | 2003-05-20 | 2007-08-27 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Способ уменьшения искажения сжатого видеоизображения и устройство для его реализации |
US7599438B2 (en) | 2003-09-07 | 2009-10-06 | Microsoft Corporation | Motion vector block pattern coding and decoding |
CN1294490C (zh) | 2003-12-31 | 2007-01-10 | 宏碁股份有限公司 | 智能卡与终端机间的数据处理方法及数据处理系统 |
EP1578137A2 (en) | 2004-03-17 | 2005-09-21 | Matsushita Electric Industrial Co., Ltd. | Moving picture coding apparatus with multistep interpolation process |
US8284835B2 (en) * | 2004-04-21 | 2012-10-09 | Panasonic Corporation | Motion compensating apparatus |
JP2005318297A (ja) | 2004-04-28 | 2005-11-10 | Toshiba Corp | 動画像符号化・復号方法及び装置 |
KR100605105B1 (ko) | 2004-05-28 | 2006-07-26 | 삼성전자주식회사 | 영상 보간 장치 |
EP1617672A1 (en) | 2004-07-13 | 2006-01-18 | Matsushita Electric Industrial Co., Ltd. | Motion estimator/compensator including a 16-bit 1/8 pel interpolation filter |
EP1641274B1 (en) | 2004-09-23 | 2013-06-05 | Panasonic Corporation | Video coding employing an image de-graining loop-filter |
JP4284265B2 (ja) | 2004-11-02 | 2009-06-24 | 株式会社東芝 | 動画像符号化装置、動画像符号化方法、動画像復号化装置および動画像復号化方法 |
US7653132B2 (en) | 2004-12-21 | 2010-01-26 | Stmicroelectronics, Inc. | Method and system for fast implementation of subpixel interpolation |
JP2008536414A (ja) | 2005-04-13 | 2008-09-04 | ゴットフリート・ヴィルヘルム・ライプニッツ・ウニヴェルジテート・ハノーヴァー | ビデオの拡張された符号化方法及び装置 |
US7778494B2 (en) | 2005-10-13 | 2010-08-17 | Texas Instruments Incorporated | FIR-based interpolation in advanced video codecs on VLIW processor |
KR100754841B1 (ko) | 2005-10-28 | 2007-09-04 | 경희대학교 산학협력단 | 비트율 왜곡 비용에 기초하여 선택된 보간 필터를 이용하여공간 계층간 예측을 수행하는 스케일러블 h.264부호화/복호화 방법 |
TWI444047B (zh) | 2006-06-16 | 2014-07-01 | Via Tech Inc | 用於視訊解碼的去方塊效應濾波器、視訊解碼器與圖形處理單元 |
KR20080001116A (ko) | 2006-06-29 | 2008-01-03 | 삼성전자주식회사 | 정착온도 제어 방법 및 장치와 화상형성장치 |
WO2008010929A2 (en) | 2006-07-18 | 2008-01-24 | Thomson Licensing | Methods and apparatus for adaptive reference filtering |
TW200808067A (en) | 2006-07-31 | 2008-02-01 | Univ Nat Cheng Kung | Prediction module |
US8582663B2 (en) | 2006-08-08 | 2013-11-12 | Core Wireless Licensing S.A.R.L. | Method, device, and system for multiplexing of video streams |
SG140508A1 (en) | 2006-08-31 | 2008-03-28 | St Microelectronics Asia | Multimode filter for de-blocking and de-ringing |
WO2008084378A2 (en) | 2007-01-09 | 2008-07-17 | Nokia Corporation | Adaptive interpolation filters for video coding |
US20090097545A1 (en) * | 2007-10-14 | 2009-04-16 | Nokia Corporation | Fixed-Point Implementation of an Adaptive Image Filter with High Coding Efficiency |
US8705622B2 (en) | 2008-04-10 | 2014-04-22 | Qualcomm Incorporated | Interpolation filter support for sub-pixel resolution in video coding |
US8462842B2 (en) | 2008-04-10 | 2013-06-11 | Qualcomm, Incorporated | Symmetry for interpolation filtering of sub-pixel positions in video coding |
-
2009
- 2009-04-08 US US12/420,292 patent/US9077971B2/en active Active
- 2009-04-10 HU HUE14184120A patent/HUE033226T2/hu unknown
- 2009-04-10 SI SI200931683A patent/SI2827593T1/sl unknown
- 2009-04-10 BR BRPI0910638-3A patent/BRPI0910638B1/pt active IP Right Grant
- 2009-04-10 CN CN2009801152973A patent/CN102017631B/zh active Active
- 2009-04-10 ES ES14184120.5T patent/ES2633476T3/es active Active
- 2009-04-10 PL PL14184120T patent/PL2827593T3/pl unknown
- 2009-04-10 JP JP2011504223A patent/JP5575747B2/ja active Active
- 2009-04-10 CA CA2719404A patent/CA2719404C/en active Active
- 2009-04-10 EP EP09730214A patent/EP2304960A1/en not_active Ceased
- 2009-04-10 KR KR1020107025195A patent/KR101214021B1/ko active IP Right Grant
- 2009-04-10 DK DK14184120.5T patent/DK2827593T3/en active
- 2009-04-10 WO PCT/US2009/040270 patent/WO2009126929A1/en active Application Filing
- 2009-04-10 TW TW098112085A patent/TWI523528B/zh active
- 2009-04-10 PT PT141841205T patent/PT2827593T/pt unknown
- 2009-04-10 EP EP14184120.5A patent/EP2827593B1/en not_active Not-in-force
Also Published As
Publication number | Publication date |
---|---|
DK2827593T3 (en) | 2017-07-24 |
PT2827593T (pt) | 2017-07-24 |
CA2719404C (en) | 2013-07-30 |
CN102017631B (zh) | 2013-05-01 |
HUE033226T2 (hu) | 2017-11-28 |
PL2827593T3 (pl) | 2017-10-31 |
EP2827593B1 (en) | 2017-05-17 |
US20090257501A1 (en) | 2009-10-15 |
WO2009126929A1 (en) | 2009-10-15 |
KR20100130643A (ko) | 2010-12-13 |
BRPI0910638A2 (pt) | 2016-08-02 |
CN102017631A (zh) | 2011-04-13 |
TWI523528B (zh) | 2016-02-21 |
JP5575747B2 (ja) | 2014-08-20 |
BRPI0910638B1 (pt) | 2020-11-24 |
US9077971B2 (en) | 2015-07-07 |
JP2011517240A (ja) | 2011-05-26 |
EP2304960A1 (en) | 2011-04-06 |
SI2827593T1 (sl) | 2017-07-31 |
KR101214021B1 (ko) | 2012-12-20 |
TW201006252A (en) | 2010-02-01 |
EP2827593A1 (en) | 2015-01-21 |
CA2719404A1 (en) | 2009-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2633476T3 (es) | Filtrado de tipo interpolación de posiciones de píxeles enteros en la codificación de vídeo | |
US11683519B2 (en) | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter | |
JP5619725B2 (ja) | ビデオコーディングにおけるサブピクセル解像度のための補間フィルタサポート | |
JP5180366B2 (ja) | ビデオコーディングにおけるサブピクセル位置の補間フィルタリングに対する対称性 | |
KR101202632B1 (ko) | 비디오 코딩에서의 보간을 위한 예측 기술 | |
RU2477576C2 (ru) | Поддержка интерполяционного фильтра для субпиксельного разрешения в видеокодировании |