ES2254811T3 - Interpolacion subpixel en la estimacion y compesacion del movimiento. - Google Patents

Interpolacion subpixel en la estimacion y compesacion del movimiento.

Info

Publication number
ES2254811T3
ES2254811T3 ES03007064T ES03007064T ES2254811T3 ES 2254811 T3 ES2254811 T3 ES 2254811T3 ES 03007064 T ES03007064 T ES 03007064T ES 03007064 T ES03007064 T ES 03007064T ES 2254811 T3 ES2254811 T3 ES 2254811T3
Authority
ES
Spain
Prior art keywords
pixel
procedure
stage
values
bits
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.)
Expired - Lifetime
Application number
ES03007064T
Other languages
English (en)
Inventor
Sridhar Srinivasan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2254811T3 publication Critical patent/ES2254811T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F17STORING OR DISTRIBUTING GASES OR LIQUIDS
    • F17CVESSELS FOR CONTAINING OR STORING COMPRESSED, LIQUEFIED OR SOLIDIFIED GASES; FIXED-CAPACITY GAS-HOLDERS; FILLING VESSELS WITH, OR DISCHARGING FROM VESSELS, COMPRESSED, LIQUEFIED, OR SOLIDIFIED GASES
    • F17C1/00Pressure vessels, e.g. gas cylinder, gas tank, replaceable cartridge
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F17STORING OR DISTRIBUTING GASES OR LIQUIDS
    • F17CVESSELS FOR CONTAINING OR STORING COMPRESSED, LIQUEFIED OR SOLIDIFIED GASES; FIXED-CAPACITY GAS-HOLDERS; FILLING VESSELS WITH, OR DISCHARGING FROM VESSELS, COMPRESSED, LIQUEFIED, OR SOLIDIFIED GASES
    • F17C2205/00Vessel construction, in particular mounting arrangements, attachments or identifications means
    • F17C2205/01Mounting arrangements
    • F17C2205/0153Details of mounting arrangements
    • F17C2205/0188Hanging up devices
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F17STORING OR DISTRIBUTING GASES OR LIQUIDS
    • F17CVESSELS FOR CONTAINING OR STORING COMPRESSED, LIQUEFIED OR SOLIDIFIED GASES; FIXED-CAPACITY GAS-HOLDERS; FILLING VESSELS WITH, OR DISCHARGING FROM VESSELS, COMPRESSED, LIQUEFIED, OR SOLIDIFIED GASES
    • F17C2270/00Applications
    • F17C2270/01Applications for fluid transport or storage
    • F17C2270/0134Applications for fluid transport or storage placed above the ground

Landscapes

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

Abstract

Un procedimiento implementado en un entorno informático (300), comprendiendo el procedimiento: calcular un valor final de píxel (1234) en una posición de fracciones de píxel utilizando múltiples etapas de interpolación espacial basándose al menos parcialmente en uno o varios valores intermedios (1230) en una o más posiciones intermedias de fracciones de píxel, en el cual el valor final de píxel tiene un margen dinámico final de x bits, en el cual el valor o valores intermedios tienen un margen dinámico final de y bits después de haber sido desplazados en al menos un bit, y en donde y es mayor que x.

Description

Interpolación subpíxel en la estimación y compensación del movimiento.
Campo de la técnica
Se describen técnicas y herramientas para el desplazamiento de bits a nivel subpíxel durante la estimación y compensación del movimiento en aplicaciones de codificación y decodificación de vídeo. Por ejemplo, un codificador y decodificador de vídeo aplaza el desplazamiento de bits al efectuar interpolaciones multietapa de valores de píxel en posiciones subpíxel de una imagen de referencia.
Antecedentes
El vídeo digital necesita una gran capacidad de almacenamiento y de transmisión. Una secuencia en bruto típica de vídeo digital incluye 15 ó 30 imágenes por segundo. Cada imagen puede incluir decenas o centenas de píxeles (también llamados pels). Cada píxel representa un elemento diminuto de la fotografía. En forma bruta, un ordenador representa normalmente un píxel con 24 bits. Por ejemplo, un píxel puede comprender un valor de luminancia de 8 bits (también llamado valor de luma) que define el componente del píxel en la escala de grises y dos valores de crominancia de 8 bits (también llamados valores de croma) que definen el componente de color del píxel. Así pues, el número de bits por segundo, o tasa de bits, de una secuencia en bruto típica de vídeo digital puede ser igual o superior a 5 millones de bits por segundo.
Muchos ordenadores y redes de ordenadores carecen de recursos para procesar vídeo digital en bruto. Por esta razón, los ingenieros usan la compresión de vídeo (también llamada codificación) para reducir la tasa de bits del vídeo digital. La compresión puede ser sin pérdida, en la cual la calidad del vídeo no sufre, pero las reducciones de la tasa de bits están limitadas por la complejidad del vídeo. O bien, la compresión puede ser con pérdida, en la cual la calidad del vídeo sufre, pero las reducciones de la tasa de bits son más elevadas. La descompresión invierte la compresión.
En general, las técnicas de compresión de vídeo incluyen la compresión espacial (intraframe) y la compresión temporal (interframe). Las técnicas de compresión espacial comprimen las imágenes individuales, llamadas típicamente imágenes I o imágenes clave. Las técnicas de compresión temporal comprimen las imágenes con referencia a la imagen precedente y/o siguiente, y son denominadas típicamente imágenes predichas, imágenes P o imágenes B.
El Windows Media Video, Versión 8 ("WMV8"), de Microsoft Corporation, incluye un codificador de vídeo y un decodificador de vídeo. El codificador WMV8 utiliza la compresión espacial y temporal, y el decodificador WMV8 utiliza la descompresión espacial y temporal. La compresión temporal del codificador WMV8 usa una codificación de predicción por compensación del movimiento, a base de bloques, seguida por una codificación de la transformación del error residual.
En el WMV8, una imagen está representada por tres planos de píxeles: un plano de luminancia (Y) de los valores de luminancia de los píxeles y dos planos de crominancia (U,V) de los valores de crominancia de los píxeles. La resolución del plano Y es el doble de la resolución de los planos U y V horizontalmente y verticalmente. Así pues, una imagen de 320 píxeles x 240 píxeles tiene un plano Y de 320 píxeles x 240 píxeles y unos planos U y V de 160 píxeles x 120 píxeles.
El codificador WMV8 divide una imagen predicha en 8x8 bloques de píxeles. Un grupo de cuatro bloques de luminancia de 8x8 y dos bloques de crominancia cosituados de 8x8 (uno para el plano de crominancia U, y otro para el plano de crominancia V) forman un macrobloque de 16x16. Por lo tanto, cada macrobloque de 16x16 incluye cuatro bloques de luminancia de 8x8 y dos bloques de crominancia de 8x8.
En un macrobloque de una imagen predicha, el codificador WMV8 realiza la estimación del movimiento. La estimación del movimiento aproxima el movimiento de un macrobloque de una imagen predicha buscando el macrobloque de la imagen predicha y haciéndolo coincidir con un macrobloque de una imagen de referencia. En la Figura 1, por ejemplo, el codificador WMV8 calcula un vector de movimiento para un macrobloque (115) de la imagen predicha (110). Para calcular el vector de movimiento, el codificador busca en un área de búsqueda (135) de una imagen de referencia (130). Dentro del área de búsqueda (135), el codificador compara los valores de luminancia del macrobloque (115) de la imagen predicha (110) con los valores de luminancia de los diversos bloques candidatos de la imagen de referencia (130) para encontrar una buena coincidencia. El codificador WMV8 puede conmutar la precisión del vector de movimiento, y puede usar un margen de búsqueda y unos vectores de movimiento con una resolución horizontal de uno, medio o cuarto de píxel y una resolución vertical de uno o medio píxel. Con vectores de movimiento de precisión subpíxel, el codificador WMV8 puede aproximar el movimiento de una secuencia de vídeo al nivel de
subpíxel.
Durante la compensación de movimiento, el codificador WMV8 usa los vectores de movimiento para los macrobloques de la imagen predicha con objeto de determinar los predictores para los macrobloques procedentes de la imagen de referencia. Para cada uno de los macrobloques con predicción de movimiento, el codificador WMV8 calcula la diferencia (denominada residuo o error) entre el macrobloque original y su predictor. El codificador WMV8 divide el residuo en bloques y comprime con pérdidas los bloques residuales. Para reconstruir los macrobloques con predicción de movimiento de la imagen predicha, el codificador WMV8 descomprime los residuos y los suma a los predictores para los macrobloques.
El decodificador WMV8 también usa los vectores de movimiento en los macrobloques de la imagen predicha para determinar los predictores para los macrobloques a partir de la imagen de referencia. Para reconstruir los macrobloques, con movimiento predicho, de la imagen predicha, el decodificador WMV8 descomprime los residuales y los añade a los predoctores para los macrobloques.
Durante la estimación o compensación del movimiento, cuando un vector de movimiento tiene precisión subpíxel, (es decir, medio píxel o un cuarto de píxel), el codificador o decodificador WMV8 debe determinar los valores de píxel en las posiciones subpíxel de la imagen de referencia. El codificador o decodificador WMV8 genera valores para las posiciones subpíxel usando filtros de interpolación. La Figura 2 ilustra unas posiciones subpíxel de muestra H_{0}, H_{1}, H_{2}, cuyos valores están calculados por interpolación de los valores enteros a, b, c, …, p de los píxeles.
Cuando se opera con una precisión de medio píxel en los vectores de movimiento, los filtros de interpolación que se usan para los valores de luminancia del pixel en las tres diferentes posiciones de medio pixel H_{0}, H_{1}, H_{2} son:
H_{0} = (f + g + R_{2}) >>1
(1),
H_{1} = (f + g + R_{2}) >>1
(2),
y
H_{2} = (f + g + j + k + R_{1}) >>2
(3),
en donde R_{1} y R_{2} son unos valores de control de redondeo que se controlan mediante una bandera de control de redondeo de un bit que indica el modo de redondeo para una imagen particular. Si la bandera de control de redondeo está puesta a 0, entonces R_{1} = 2 y R_{2} = 1. Si la bandera de control de redondeo está puesta a 1, entonces R_{1} = R_{2} = 0. El valor de la bandera de control de redondeo alterna entre 1 y 0 para cada imagen P. En cada imagen, el valor de la bandera de control de redondeo es repuesto a 0. Así pues, el control de redondeo funciona imagen a imagen.
Las ecuaciones 1, 2 y 3 son ejemplos de interpolación bilineal. La interpolación bilineal es rápida y tiende a suavizar los valores de los píxeles. El suavizado puede tener efectos deseables (tales como una disminución perceptible del ruido de cuantificación), pero también puede conducir a una pérdida de información válida de los píxeles.
Con una resolución de un cuarto de píxel en el vector de movimiento, el codificador o decodificador WMV8 emplea filtros bicúbicos para interpolar los valores de luminancia de píxel en las posiciones de medio píxel. La interpolación bicúbica es más lenta que la interpolación bilineal, pero tiende a preservar los valores de borde y resulta en una menor pérdida de información válida del píxel. Los filtros bicúbicos para las tres diferentes posiciones de medio píxel H_{0}, H_{1}, H_{2} son:
H_{0} = (- e + 9f + 9g - h + 8) >>4
(4),
H_{1} = (- b + 9f + 9j - n + 8) >>4
(5),
y
H_{2} = (- t_{0} + 9t_{1} + 9t_{2} - t_{3} + 8) >>4
(6).
en donde t_{0}, t_{1,} t_{2} y_{ }t_{3} se calculan como sigue:
t_{0} = (- a + 9b + 9c - d + 8) >>4
(7),
t_{1} = (- e + 9f + 9g - h + 8) >>4
(8),
t_{2} = (- i + 9j + 9k - l + 8) >>4
(9),
y
t_{3} = (- m + 9n + 9o - p + 8) >>4
(10).
Las ecuaciones (4)-(10) pueden dar como resultado una salida que quede fuera del margen de los valores de entrada. Por ejemplo, para una entrada de 8 bits (margen 0…255), la serie de valores 0 255 255 0 produce un valor de salida de 257 en cualquiera de las ecuaciones (4)-(10). Por ello, el codificador o decodificador WMV8 bloquea (o "limita") el valor de salida de todas las ecuaciones (4)-(10) para que esté dentro del margen de validez. Por ejemplo, para valores de 8 bits, los valores menores de 0 se cambian a 0, y los valores mayores de 255 se cambian a 255. El bloqueo soluciona el problema del margen, pero ralentiza el cálculo. Además, el bloqueo produce pérdida de precisión.
A continuación, en una siguiente etapa de interpolación, el codificador o decodificador WMV8 calcula los valores de píxel en ciertas posiciones de un cuarto de píxel. Estas localizaciones de un cuarto de píxel están situadas horizontalmente entre dos localizaciones cualesquiera de medio pixel o entre una localización de un píxel y una localización de medio píxel. Para estas localizaciones de un cuarto de píxel, el codificador o decodificador WMV8 utiliza interpolación bilineal (es decir, (x + y + 1) >> 1) usando las dos localizaciones horizontalmente vecinas de medio píxel y de un píxel sin control de redondeo.
Una vez calculados los vectores de movimiento de la luminancia, el codificador o decodificador WMV8 deriva los vectores cosituados de movimiento de la crominancia. Debido a que en el WMV8 un plano de crominancia es la mitad de grande que un plano de luminancia tanto horizontal como verticalmente, los valores de movimiento de la luminancia deben ser escalados a valores apropiados de vectores de movimiento de la crominancia. En el WMV8, este proceso de conversión incluye dividir por dos los vectores de movimiento de la luminancia y redondear con una precisión de medio píxel los vectores resultantes de movimiento de la crominancia. Es más, el redondeo de la crominancia en el WMV8 opera en un modo único que no puede ser modificado ni seleccionado por el usuario.
En el WMV8, los valores de píxel en posiciones subpíxel de una imagen de referencia pueden presentar en ciertas circunstancias un subflujo o un sobreflujo. Por ejemplo, el valor de luminancia del píxel en una posición de un cuarto de pixel puede ser 271 (que está fuera del margen de 0…255) si el valor de la posición vecina de píxel entero es 255 y el valor de la posición vecina de medio píxel es 287 (0 + 9*255 + 9*255 - 0 + 8 >> 4 = 287)(255 + 287 + 1 >> = 271). Para resolver este problema, después de sumar los bloques residuales al predictor para un macrobloque, el codificador y decodificador WMV8 limita en caso necesario los valores reconstruidos para el macrobloque de manera que queden dentro del margen de 0…255.
Aparte del WMV8, existen varias normas internacionales relativas a la compresión y descompresión de vídeo. Entre estas normas están las normas Motion Picture Experts Group ["MPEG"] 1, 2 y 4, y las normas H.261, H.262 y H.263 de la Internacional Telecommunication Union ["ITU"]. Al igual que el WMV8, estas normas usan una combinación de compresión espacial y temporal, aunque las normas difieren típicamente del WMV8 en los detalles de las técnicas de compresión utilizadas.
Varias normas (por ejemplo, MPEG 4 y H.263) proporcionan la estimación y compresión del movimiento de medio píxel utilizando filtros lineales y control de redondeo básico. Además, en la norma H.263, los vectores de movimiento de la crominancia que tienen teóricamente una resolución de un cuarto de píxel (es decir, la mitad de la resolución de medio píxel que tienen los vectores de movimiento de la luminancia) son redondeados a una precisión de medio píxel o de un píxel entero, por lo que en el espacio de la crominancia no se permiten valores de un cuarto de píxel. Para detalles adicionales de las normas sobre la estimación y compensación del movimiento, véase la descripción técnica de las propias normas.
El documento WO 03/026296 describe la interpolación en la codificación de vídeo para calcular valores de subpíxeles en localizaciones fraccionales horizontales y verticales. La Patente Estadounidense Nº 6.282.243 describe una unidad de cálculo de predicción de imagen que redondea los valores interpolados de los píxeles a un valor entero según un algoritmo de redondeo especificado por un controlador de cálculo. Masahiro Iwahashi y otros, en "A Motion Compensation Technique for Down-Scaled Pictures in Layered Coding (Técnica de Compensación del Movimiento para Imágenes Sub-Escaladas con Codificación de Capas)", IEICE Transactions on Communications E77-B (1984), Agosto, Nº 8, Tokio, JP, XP 00470652, describen una técnica de compensación del movimiento que reduce la borrosidad, denominada deriva, de las imágenes en movimiento subescaladas con sistemas de codificación de capas. La Patente Estadounidense Nº 5.659.365 describe unos vectores de movimiento de la crominancia calculados mediante una información de redondeo contenida en un bit suplementario de los vectores de movimiento de la luminancia de valor impar. La Patente Estadounidense Nº 5.901.248 describe un estimador de movimiento programable que incluye una memoria de dos puertos para almacenar un bloque de imagen, el error de predicción y un bloque temporal usado en la interpolación, y una memoria de acceso aleatorio para grupos de píxeles, de doble puerto, para almacenar una ventana de búsqueda. La Patente Estadounidense Nº 6.219.464 B1 describe un método para generar un píxel diana de muestra situado entre dos líneas de datos de la fuente de entrada.
La estimación y la compensación del movimiento son unas técnicas de compresión eficaces, pero las diversas técnicas anteriores de estimación y compensación (como el WMV8 y las normas descritas anteriormente) tienen varios inconvenientes:
(1) Cuando se calculan valores de píxel en posiciones subpíxel de imágenes de referencia, los codificadores y decodificadores pierden precisión innecesariamente en los valores intermedios. Por ejemplo, cuando se calcula en el WMV8 el valor de píxel para una posición de un cuarto de píxel, los valores intermedios en las posiciones de un cuarto de píxel son desplazados cuatro bits a la derecha, aunque pueda disponerse de una mayor profundidad de bits. Además, el codificador y decodificador WMV8 limita los valores intermedios durante la interpolación en dos etapas de las posiciones de cuarto de píxel, lo cual ralentiza el cálculo y produce la pérdida innecesaria de precisión.
(2) La interpolación de valores de píxel en una estimación y compensación de movimiento de cuarto de píxel es ineficaz en muchos casos. Por ejemplo, en el WMV8, el cálculo de una posición unidimensional de un cuarto de píxel requiere el uso de un filtro para una posición de medio píxel seguido del uso de un filtro bilineal.
(3) Los codificadores y decodificadores no pueden tener en cuenta la acumulación de errores de redondeo que pudiera producirse en la interpolación multietapa. El error de redondeo tiene lugar, por ejemplo, cuando los valores de pixel son redondeados repetidamente de una a otra imagen en una secuencia de vídeo. Este error de redondeo puede provocar artefactos perceptibles en secuencias de vídeo de baja calidad y baja tasa de bits. Por ejemplo, cuando el codificador y decodificador WMV8 interpola en múltiples etapas un valor de píxel en una posición de un cuarto de píxel, no se utiliza el control de redondeo. Por el contrario, el resultado de cada etapa se redondea de la misma forma en cada etapa de interpolación (y sin control de redondeo); y
(4) El redondeo de la crominancia no se realiza con una precisión de un cuarto de píxel, y no se hace ningún control sobre las opciones de redondeo de los vectores de movimiento de la crominancia. Por ejemplo, el codificador y decodificador WMV8 redondea todos los vectores de movimiento de la crominancia a un valor de medio píxel y sólo opera en un modo único.
Dada la importancia crítica que tiene la estimación y compensación del movimiento en el vídeo digital, no es sorprendente que la estimación y compensación del movimiento sean campos fuertemente desarrollados. No obstante, sean cuales sean los beneficios de las técnicas anteriores de estimación y compensación del movimiento, no tienen las ventajas de las técnicas y herramientas siguientes.
Resumen
El objetivo de la presente invención es mejorar la calidad de presentación de las imágenes para la codificación o decodificación de imágenes de vídeo.
Este objetivo es alcanzado por la invención según se define en las reivindicaciones independientes. Las realizaciones de la invención vienen dadas por las reivindicaciones dependientes.
En resumen, la descripción detallada está dirigida a varias técnicas y herramientas para la estimación y compensación del movimiento. En aplicaciones de codificación y decodificación de vídeo, por ejemplo, puede utilizarse la interpolación multietapa para calcular el valor de una particular posición submuestreada. Los valores intermedios calculados durante una primera etapa o una etapa intermedia tienen un margen dinámico mayor que el margen dinámico del valor final. Durante la primera etapa o las etapas intermedias puede omitirse el bloqueo. El desplazamiento de bits efectuado durante la primera etapa o las etapas intermedias también puede aplazarse hasta una etapa final. Las diversas técnicas y herramientas, que pueden usarse independientemente o combinadas, pueden aumentar la precisión con la cual se calcula el valor final en la posición submuestreada. Este aumento de precisión mejora la calidad general de las secuencias de vídeo comprimidas.
En un aspecto, un componente tal como un codificador o decodificador de vídeo calcula un valor final en una posición submuestreada particular basándose, al menos parcialmente, en uno o más valores intermedios de una o más posiciones submuestreadas particulares próximas. El valor final tiene un margen dinámico final de x bits, y el valor o valores intermedios tienen un margen dinámico final de y bits, siendo y mayor que x.
En otro aspecto, un codificador u decodificador de vídeo calcula un valor final de píxel en una posición de fracciones de píxel de una imagen de vídeo de referencia, de entre las imágenes plurales de vídeo, utilizando etapas de interpolación múltiples. Las etapas múltiples incluyen al menos una primera etapa y una última etapa. El cálculo incluye omitir el bloqueo de uno o más valores de píxel intermedios durante la primera etapa. El cálculo incluye además el bloqueo del valor final de píxel en la posición de fracciones de píxel de la imagen de vídeo de referencia durante la etapa final.
En otro aspecto, un componente tal como un codificador u decodificador de vídeo calcula un valor de una posición fraccional de muestra particular utilizando etapas de interpolación múltiples. El cálculo incluye aplazar el desplazamiento de bits desde una primera etapa de las múltiples etapas hasta una segunda etapa de las múltiples etapas para aumentar la precisión del valor.
Las técnicas y herramientas resuelven varios de los inconvenientes de la estimación y compensación de movimiento de la técnica anterior. Las diversas técnicas y herramientas pueden usarse combinadas o independientemente. Se apreciarán características y ventajas adicionales gracias a la siguiente descripción detallada que hace referencia a los dibujos adjuntos.
Breve descripción de los dibujos
La Figura 1 es un esquema que representa la estimación del movimiento en un codificador de vídeo según la técnica anterior.
La Figura 2 es un gráfico que representa las localizaciones subpíxel para la interpolación en la estimación y compensación del movimiento según la técnica anterior.
La Figura 3 es un diagrama de bloques de un entorno informático adecuado en el cual pueden implementarse varias realizaciones descritas.
La Figura 4 es un diagrama de bloques de un sistema generalizado de codificación de vídeo utilizado en varias realizaciones descritas.
La Figura 5 es un diagrama de bloques de un sistema generalizado de decodificación de vídeo utilizado en varias realizaciones descritas.
La Figura 6 es un gráfico que representa las localizaciones para interpolación de los valores de píxel durante la estimación y compensación del movimiento subpíxel.
La Figura 7 es un gráfico que representa las localizaciones de píxel entero cuyos valores de píxel se usan para calcular valores de píxel interpolados para localizaciones subpíxel.
La Figura 8 es un diagrama que representa una técnica de interpolación de doble etapa para interpolar valores en posiciones subpíxel.
La Figura 9 es un gráfico que representa una posición muestreada de medio pixel horizontal y medio píxel vertical, y los valores intermedios en posiciones subpíxel utilizados para calcular el valor en la posición de muestra.
La Figura 10 es un gráfico que representa una posición muestreada de un cuarto de pixel horizontal y medio píxel vertical, y una posición muestreada de medio píxel horizontal y un cuarto de pixel vertical, y los valores intermedios en posiciones subpíxel utilizados para calcular los valores en las posiciones de muestra.
La Figura 11 es un gráfico que representa una posición muestreada de un cuarto de pixel horizontal y un cuarto de píxel vertical, y los valores intermedios en posiciones subpíxel utilizados para calcular el valor en la posición de muestra.
La Figura 12 es un diagrama que representa una técnica de interpolación multietapa con valores intermedios de margen dinámico (en bits) aumentado.
La Figura 13 es un diagrama que representa una técnica de interpolación multietapa con bloqueo omitido.
La Figura 14 es un diagrama que representa una técnica de interpolación multietapa con desplazamiento de bits aplazado.
La Figura 15 es un diagrama que representa una técnica de interpolación multietapa utilizando control de redondeo alternado por etapas.
La Figura 16 es un diagrama de flujo que representa una técnica para seleccionar entre múltiples modos de interpolación y redondeo de la crominancia.
La Figura 17 es una tabla que representa un primer modo de redondeo de la crominancia.
La Figura 18 es una tabla que representa un segundo modo de redondeo de la crominancia.
Descripción detallada
Las realizaciones descritas están relacionadas con técnicas y herramientas para la interpolación a nivel subpíxel en la estimación y compensación del movimiento. Varias realizaciones están relacionadas con técnicas y herramientas para mantener la precisión en la interpolación multietapa aplazando el bloqueo y/o el desplazamiento de bits (operaciones que pueden producir una pérdida de precisión) hasta las etapas más tardías de la interpolación. Otras realizaciones están relacionadas con filtros u operaciones de redondeo eficaces para la interpolación multietapa.
Un codificador o decodificador efectúa la interpolación subpíxel en una imagen de referencia o en una porción de una imagen tal como uno o más bloques o macrobloques. El codificador/decodificador puede efectuar entonces la compensación del movimiento usando vectores de movimiento subpíxel adecuados.
En algunas realizaciones, un codificador de vídeo o decodificador de vídeo efectúa la interpolación subpíxel en una aplicación de codificación o decodificación de vídeo. Alternativamente, otro codificador o decodificador, u otro tipo de componente, efectúa la interpolación subpíxel u otra técnica descrita más adelante en otro tipo de apli-
cación.
Como alternativa a efectuar la interpolación subpíxel sobre imágenes de referencia, en ciertas realizaciones un codificador/decodificador efectúa la interpolación subpíxel sobre campos, capas de objetos, u otras imágenes.
En ciertas realizaciones, la interpolación subpíxel se efectúa calculando valores de píxel en los planos de luminancia y crominancia de una imagen de referencia en el espacio de color YUV. Alternativamente, el espacio de color es diferente (por ejemplo, YIQ o RGB).
Las diversas técnicas y herramientas pueden utilizarse en combinación o independientemente. Diferentes realizaciones implementan una o más de las técnicas y herramientas descritas. Aunque, por motivos de presentación, las operaciones de estas técnicas están típicamente descritas en un orden secuencial particular, deberá entenderse que esta tipo de descripción abarca redistribuciones menores en el orden de las operaciones, a menos que se requiera un ordenamiento particular. Por ejemplo, en algunos casos, las operaciones descritas secuencialmente pueden ser redistribuidas o efectuadas concurrentemente. Además, para simplificar, los diagramas de flujo no presentan típicamente los diversos modos en que pueden usarse las técnicas particulares en conjunción con otras técnicas.
En ciertas realizaciones, un codificador y decodificador de vídeo usa diversas banderas y señales en una corriente de bits. Aunque se describen banderas y señales específicas, deberá entenderse que este tipo de descripción abarca diferentes convenciones para las banderas y señales (por ejemplo, ceros (0) en lugar de unos (1))
I. Entorno informático
La Figura 3 ilustra un ejemplo generalizado de un entorno informático (300) adecuado en el cual pueden implementarse varias de las realizaciones descritas. El entorno informático (300) no pretende sugerir ninguna limitación en cuanto al alcance de utilización o de funcionalidad, ya que las técnicas y herramientas pueden ser implementadas en diversos entornos informáticos de propósito general o de propósito especial.
Con referencia a la Figura 3, el entorno informático (300) incluye al menos una unidad procesadora (310) y una memoria (320). En la Figura 3, esta configuración básica (330) está rodeada por una línea de trazos. La unidad procesadora (310) ejecuta instrucciones ejecutables por ordenador y puede ser un procesador real o virtual. En un sistema multiproceso, múltiples unidades procesadoras ejecutan instrucciones ejecutables por ordenador para aumentar la potencia de procesamiento. La memoria (320) puede ser una memoria volátil (por ejemplo, de registros, caché, RAM), una memoria no volátil (por ejemplo, ROM, EEPROM, memoria flash, etc.), o alguna combinación de las dos. La memoria (320) almacena un software (380) que implementa las técnicas de interpolación subpíxel en un codificador y/o un decodificador, tal como un codificador y/o un decodificador de vídeo.
Un entorno informático puede tener características adicionales. Por ejemplo, el entorno informático (300) incluye el almacenamiento (340), uno o más dispositivos de entrada (350), uno o más dispositivos de salida (360), y una o más conexiones de comunicación (370). Un mecanismo de interconexión (no representado), tal como un bus, un controlador o una red, interconecta los componentes del entorno informático (300). Típicamente, el software del sistema operativo (no representado) proporciona un entorno operativo para otro software que se ejecute en el entorno informático (300), y coordina las actividades de los componentes del entorno informático (300).
El almacenamiento (340) puede ser extraíble o no extraíble, e incluye discos magnéticos, cintas o casetes magnéticas, CD-ROM, DVD o cualquier otro medio que pueda usarse para almacenar información y al que pueda accederse desde dentro del entorno informático (300). El almacenamiento (340) almacena las instrucciones para el software (380) que implementa las técnicas de interpolación subpíxel.
El o los dispositivos de entrada (350) pueden ser un dispositivo de entrada táctil tal como un teclado, un ratón, un lápiz o una bola, un dispositivo de entrada de voz, un dispositivo escáner, u otro dispositivo que proporcione entradas al entorno informático (300). Para la codificación de audio o de vídeo, el o los dispositivos de entrada (350) puede ser una tarjeta de sonido, una tarjeta de vídeo, una tarjeta sintonizadora de TV, o un dispositivo similar que acepte una entrada de audio o de vídeo en forma analógica o digital, o un CD-ROM o CD-RW que lea muestras de audio o de vídeo y las introduzca en el entorno informático (300). El o los dispositivos de salida (360) pueden ser un indicador visual, una impresora, un altavoz, un grabador de CD, u otro dispositivo que proporcione una salida al entorno informático (300).
La o las conexiones de comunicación (370) permiten la comunicación sobre un medio de comunicación con otra entidad informática. El medio de comunicación envía información, tal como instrucciones ejecutables por ordenador, entradas o salidas de audio o de vídeo, u otros datos, en una señal de datos modulada. Una señal de datos modulada es una señal que tiene una o varias de sus características fijadas o cambiadas de tal manera que se codifique información en la señal. A título de ejemplo, y no de limitación, los medios de comunicación incluyen técnicas con cable o sin cable implementadas en una portadora eléctrica, óptica, RF, infrarroja, acústica, o de otro tipo.
Las técnicas y herramientas pueden describirse en el contexto general de los medios legibles por ordenador. Los medios legibles por ordenador son cualquier medio disponible al que pueda accederse desde un entorno informático. A título de ejemplo, y no de limitación, en el entorno informático (300), los medios legibles por ordenador incluyen la memoria (320), el almacenamiento (340), medios de comunicación, y combinaciones de cualesquiera de los anteriores.
Las técnicas y herramientas pueden describirse en el contexto general de las instrucciones ejecutables por ordenador, tales como las incluidas en módulos de programa, que se ejecutan en un entorno informático sobre un procesador diana real o virtual. Generalmente, los módulos de programa incluyen rutinas, programas, librerías, objetos, clases, componentes, estructuras de datos, etc., que realizan tareas particulares o implementan tipos particulares de datos abstractos. En varias realizaciones, la funcionalidad de los módulos de programa puede combinarse o dividirse entre los módulos de programa que se desee. Las instrucciones ejecutables para los módulos de programa pueden ser ejecutadas en un entorno informático local o distribuido.
Por motivos de presentación, la descripción detallada emplea términos tales como "determinar" y "seleccionar" para describir las operaciones de ordenador en un entorno informático. Estos términos son abstracciones de nivel superior para las operaciones efectuadas por un ordenador y no deben confundirse con actos realizados por un ser humano. Las operaciones reales del ordenador correspondientes a estos términos pueden variar dependiendo de la implementación.
II. Codificador y decodificador de vídeo generalizado
La Figura 4 es un diagrama de bloques de un codificador (400) de vídeo generalizado y la Figura 5 es un diagrama de bloques de un decodificador (500) de vídeo generalizado.
La relación representada entre los módulos situados dentro del codificador y del decodificador indican el flujo principal de información en el codificador y el decodificador; las otras relaciones no se han representado por motivos de simplicidad. En particular, las Figuras 4 y 5 no muestran normalmente la información lateral que indica los ajustes, modos, tablas, etc. del codificador que se usan en una secuencia de vídeo, una imagen, un macrobloque, un bloque, etc. Esta información lateral es enviada en la corriente de bits de salida, típicamente después de la codificación entrópica de la información lateral. El formato de la corriente de bits de salida puede ser un formato de Windows Media Video u otro formato.
El codificador (400) y el decodificador (500) están basados en bloques y usan un formato de macrobloque 4:2:0, incluyendo cada macrobloque cuatro bloques de luminancia de 8x8 (tratados a veces como un macrobloque de 16x16) y dos bloques de crominancia de 8x8 (por ejemplo, un bloque U, un bloque V). Alternativamente, el codificador (400) y el decodificador (500) se basan en objetos, usan un formato diferente de macrobloque o de bloque, o efectúan operaciones sobre conjuntos de píxeles de tamaño o configuración diferentes a los bloques de 8x8 y a los macrobloques de 16x16.
Dependiendo de la implementación y del tipo de compresión deseado, los módulos del codificador o decodificador pueden ser añadidos, omitidos, divididos en múltiples módulos, combinados con otros módulos, y/o sustituidos por módulos similares. En realizaciones alternativas, unos codificadores o decodificadores con diferentes módulos y/o otras configuraciones de módulos efectúan una o más de las técnicas descritas.
A. Codificador de vídeo
La Figura 4 es un diagrama de bloques de un sistema general codificador (400) de vídeo. El sistema codificador (400) recibe una secuencia de imágenes de vídeo que incluye una imagen actual (405) y produce información de vídeo comprimida (495) como salida. Las realizaciones particulares de codificadores de vídeo usan típicamente una variación o versión ampliada del codificador (400) generalizado.
El sistema codificador (400) comprime imágenes predichas e imágenes clave. Por motivos de presentación, la Figura 4 representa un camino para las imágenes clave a través del sistema codificador (400) y un camino para las imágenes predichas en adelanto. Muchos de los componentes del sistema codificador (400) se usan para comprimir tanto las imágenes clave como las imágenes predichas. Las operaciones exactas efectuadas por esos componentes pueden variar dependiendo del tipo de información que se esté comprimiendo.
Una imagen predicha (también llamada imagen p, imagen b para la predicción bidireccional, o imagen intercodificada) está representada en términos de predicción (o diferencia) con otra u otras imágenes. Un residuo de predicción es la diferencia entre lo que se predijo y la imagen original. Por el contrario, una imagen clave (también llamada imagen i, o imagen intracodificada) es comprimida sin referencia a otras imágenes.
Si la imagen actual (405) es una imagen predicha en adelanto, un estimador de movimiento (410) estima el movimiento de los macrobloques u otros conjuntos de píxeles de la imagen actual (405) con respecto a un plano de referencia, que es la imagen anterior reconstruida (425) almacenada en el almacén (420) de imágenes. En realizaciones alternativas, la imagen de referencia es una imagen posterior, o la imagen actual se predice bidireccionalmente. El estimador de movimiento (410) emite como información lateral una información de movimiento (415) tal como unos vectores de movimiento. Un compensador de movimiento (430) aplica la información de movimiento (415) a la imagen anterior reconstruida (425) para formar una imagen actual compensada en movimiento (435). No obstante, la predicción es raramente perfecta, y la diferencia entre la imagen actual compensada en movimiento (435) y la imagen actual (405) es el residuo de predicción (445). Alternativamente, un estimador de movimiento y un compensador de movimiento aplican otro tipo de estimación/compensación de movimiento.
Un transformador de frecuencia (460) convierte la información de vídeo de dominio espacial en datos de dominio frecuencial (es decir, espectral). Para imágenes de vídeo basadas en bloques, el transformador de frecuencia (460) aplica una transformada discreta del coseno ["DCT"] o una variante de DCT a los bloques de datos del residuo de predicción del movimiento, produciendo bloques de coeficientes de DCT. Alternativamente, el transformador de frecuencia (460) aplica otra transformada convencional de frecuencia, tal como una transformada de Fourier, o utiliza el análisis de Wavelet o de sub-banda. En algunas realizaciones, el transformador de frecuencia (460) aplica una transformada de la frecuencia a bloques de residuos de predicción espacial en imágenes clave. El transformador de frecuencia (460) puede aplicar transformadas de frecuencia de 8x8, 8x4, 4x8, o de otro tamaño.
Un cuantificador (470) cuantifica entonces los bloques de coeficientes de datos espectrales. El cuantificador aplica una cuantificación escalar uniforme a los datos espectrales con un intervalo que varía entre una y otra imagen, o según otro modo. Alternativamente, el cuantificador aplica otro tipo de cuantificación a los coeficientes de datos espectrales, por ejemplo, una cuantificación no uniforme, vectorial, o no adaptativa, o cuantifica directamente los datos del dominio espacial en un sistema codificador que no use transformaciones de frecuencia. Además de la cuantificación adaptativa, el codificador (400) puede utilizar el descarte de imágenes, el filtrado adaptativo, u otras técnicas de control de la tasa.
Cuando se necesita una imagen actual reconstruida para la subsiguiente estimación/compensación de movimiento, un cuantificador inverso (476) efectúa una cuantificación inversa sobre los coeficientes de los datos espectrales cuantificados. A continuación un transformador de frecuencia inverso (466) efectúa la inversa de las operaciones del transformador de frecuencia (460), produciendo un residuo de predicción reconstruido (para una imagen predicha) o una imagen clave reconstruida. Si la imagen actual (405) era una imagen clave, se toma la imagen clave reconstruida como imagen actual reconstruida (no representada). Si la imagen actual (405) era una imagen predicha, se añade el residuo de predicción reconstruido a la imagen actual compensada en movimiento (435) para formar la imagen actual reconstruida. El almacén (420) de imágenes almacena la imagen actual reconstruida para utilizarla en la predicción de la siguiente imagen. En algunas realizaciones, el codificador aplica un filtro de desbloqueo a la imagen reconstruida para suavizar adaptativamente las discontinuidades de los bloques de la imagen.
El codificador entrópico (480) comprime la salida del cuantificador (470) así como cierta información lateral (por ejemplo, la información de movimiento (415), el intervalo de cuantificación (step size)). Las técnicas típicas de codificación entrópica incluyen codificación aritmética, codificación diferencial, codificación Huffman, codificación por longitud de serie (Run Length Encoding), codificación LZ, codificación tipo diccionario, y combinaciones de las anteriores. El codificador entrópico (480) utiliza típicamente diferentes técnicas de codificación para diferentes clases de información (por ejemplo, coeficientes DC, coeficientes AC, diferentes clases de información lateral), y puede elegir entre múltiples tablas de códigos dentro de una técnica de codificación particular.
El codificador entrópico (480) pone la información de vídeo comprimida (495) en el búfer (490). Se realimenta un indicador del nivel del búfer hacia los módulos adaptativos de la tasa de bits. La información de vídeo comprimida (495) es extraída del búfer (490) con una tasa de bits constante o relativamente constante y almacenada para su posterior canalización con esa tasa de bits. Alternativamente, el sistema codificador (400) canaliza la información de vídeo comprimida inmediatamente después de la compresión.
Antes o después del búfer (490), la información de vídeo comprimida (495) puede ser sometida a una codificación de canal para su transmisión por la red. La codificación de canal puede aplicar sobre la información de vídeo comprimida (495) una detección de errores y unos datos de corrección.
B. Decodificador de vídeo
La Figura 5 es un diagrama de bloques de un sistema general decodificador (500) de vídeo. El sistema decodificador (500) recibe la información (595) de una secuencia comprimida de imágenes de vídeo y produce una salida que incluye una imagen reconstruida (505). Las realizaciones particulares de decodificadores de vídeo usan típicamente una variación o versión ampliada del decodificador (500) generalizado.
El sistema decodificador (500) descomprime imágenes predichas e imágenes clave. Por motivos de presentación, la Figura 5 representa un camino para las imágenes clave a través del sistema decodificador (500) y un camino para las imágenes predichas en adelanto. Muchos de los componentes del sistema decodificador (500) se usan para descomprimir tanto las imágenes clave como las imágenes predichas. Las operaciones exactas efectuadas por esos componentes pueden variar dependiendo del tipo de información que se esté comprimiendo.
Un búfer (590) recibe la información (595) de la secuencia de vídeo comprimida y deja disponible para el codificador entrópico (580) la información recibida. El búfer (590) recibe típicamente la información a una velocidad bastante constante a lo largo del tiempo, e incluye un búfer con variación de retardo (jitter buffer) para suavizar las variaciones a corto plazo en el ancho de banda o en la transmisión. El búfer (590) puede incluir también un búfer de reproducción y otros búfers. Alternativamente, el búfer (590) recibe la información a una velocidad variable. Antes o después del búfer (590), la información de vídeo comprimida puede ser sometida a una decodificación de canal y procesada para detectar y corregir errores.
El codificador entrópico (580) decodifica los datos cuantificados codificados en entropía así como cierta información lateral codificada en entropía (por ejemplo, la información de movimiento (515), el intervalo de cuantificación (step size)), típicamente aplicando la inversa de la codificación entrópica efectuada en el codificador. Las técnicas de decodificación entrópica incluyen decodificación aritmética, decodificación diferencial, decodificación Huffman, decodificación por longitud de serie (Run Length Decoding), decodificación LZ, decodificación tipo diccionario, y combinaciones de las anteriores. El codificador entrópico (580) utiliza frecuentemente diferentes técnicas de decodificación para diferentes clases de información (por ejemplo, coeficientes DC, coeficientes AC, diferentes clases de información lateral), y puede elegir entre múltiples tablas de códigos dentro de una técnica de decodificación particular.
Si la imagen reconstruida (505) que debe reconstruirse es una imagen predicha en adelanto, un compensador de movimiento (530) aplica la información de movimiento (515) a una imagen de referencia (525) para formar una predicción (535) de la imagen reconstruida (505) que se esté reconstruyendo. Por ejemplo, el compensador de movimiento (530) usa un vector de movimiento de macrobloque para hallar un macrobloque en la imagen de referencia (525). Un almacén (520) de imágenes almacena las imágenes reconstruidas anteriores para usarlas como imágenes de referencia. Alternativamente, un estimador de movimiento aplica otro tipo de compensación de movimiento. La predicción hecha por el compensador de movimiento es raramente perfecta, por lo que el decodificador (500) reconstruye también los residuos de predicción.
Cuando el decodificador necesita una imagen reconstruida para la subsiguiente compensación de movimiento, el almacén (520) almacena la imagen reconstruida para utilizarla en la predicción de la siguiente imagen. En algunas realizaciones, el codificador aplica un filtro de desbloqueo a la imagen reconstruida para suavizar adaptativamente las discontinuidades de los bloques de la imagen.
Un cuantificador inverso (570) cuantifica inversamente los datos decodificados en entropía. En general, el cuantificador inverso aplica una cuantificación escalar uniforme e inversa sobre los datos decodificados en entropía con un intervalo que varía entre una y otra imagen o de algún otro modo. Alternativamente, el cuantificador inverso aplica sobre los datos otro tipo de cuantificación inversa s, por ejemplo, una cuantificación no uniforme, vectorial, o no adaptativa, o directamente cuantifica inversamente los datos del dominio espacial en un sistema decodificador que no use transformaciones de frecuencia inversas.
Un transformador de frecuencia inverso (560) convierte los datos de dominio frecuencial, cuantificados, en información de vídeo de dominio espacial. Para imágenes de vídeo basadas en bloques, el transformador de frecuencia inverso (560) aplica una DCT inversa ["IDCT"] o una variante de IDCT sobre los bloques de coeficientes de DCT, produciendo datos del residuo de predicción del movimiento. Alternativamente, el transformador de frecuencia (560) aplica otra transformada de frecuencia inversa convencional, tal como una transformada de Fourier, o utiliza una síntesis de Wavelet o de sub-banda. En algunas realizaciones, el transformador de frecuencia inverso (560) aplica una transformada de frecuencia inversa sobre bloques de residuales de predicción espacial en imágenes clave. El transformador de frecuencia inverso (560) puede aplicar transformadas de frecuencia inversas de 8x8, 8x4, 4x8, o de otro tamaño.
III. Estimación y compensación de movimiento
La codificación temporal (inter-imagen) explota las redundancias temporales entre imágenes para realizar la compresión. Las reducciones de la redundancia temporal utilizan las imágenes codificadas previamente como predictores para codificar la imagen actual. En las realizaciones que se describen a continuación, un codificador de vídeo explota las redundancias temporales de las secuencias de vídeo típicas con objeto de codificar la información usando un menor número de bits. El codificador de vídeo usa la estimación del movimiento para parametrizar el movimiento de un bloque, un macrobloque, u otro conjunto de píxeles de una imagen predicha con relación a una imagen de referencia (por ejemplo, una imagen anterior previamente codificada). El codificador de vídeo (así como un correspondiente decodificador) usa la compensación del movimiento para reconstruir la imagen predicha utilizando la información de movimiento y la imagen de referencia.
La compensación de movimiento es el proceso de generar una predicción para una imagen de vídeo (es decir, la imagen predicha) desplazando la imagen de referencia. Según se indicó anteriormente, la predicción se hace para un bloque, un macrobloque, u otro conjunto de datos procedentes de la imagen de referencia. Además, el desplazamiento es típicamente rectilíneo y constante sobre la totalidad de la baldosa que se esté prediciendo. Tal desplazamiento está definido por un vector de movimiento con dos componentes correspondientes al desplazamiento en las direcciones X e Y. Los componentes X (horizontal) e Y (vertical) del vector de movimiento representan el desplazamiento entre la baldosa que se está prediciendo actualmente y la correspondiente localización en la imagen de referencia. Los valores positivos representan localizaciones que se encuentran por debajo y a la derecha de la localización actual. Los valores negativos representan localizaciones que se encuentran por encima y a la izquierda de la localización actual.
En una implementación, un bloque es una baldosa de 8x8 píxeles, un macrobloque es una baldosa de 16x16 píxeles, y los vectores de movimiento están definidos con una precisión de un cuarto de píxel. En otras implementaciones, el codificador y el decodificador aplican una o más de las técnicas descritas a baldosas de diferente tamaño o a baldosas de tamaño arbitrariamente variable, con diferente resolución o vectores de movimiento arbitrariamente variables, y/o usando una información de movimiento diferente a los vectores de movimiento.
Los componentes de los vectores de movimiento se especifican normalmente en términos de desplazamiento de píxeles, a menudo con una precisión a nivel de subpíxel. Los desplazamientos subpíxel se efectúan filtrando la imagen de referencia mediante unos filtros de compensación del movimiento adecuadamente definidos. En el caso de la compensación del movimiento subpíxel rectilíneo, los componentes X e Y se representan como números de coma fija. La parte entera de estos números se denomina desplazamiento de píxel completo, y la parte fraccional se denomina desplazamiento subpíxel. Cuando el desplazamiento subpíxel es nulo, el movimiento es un número entero de píxeles. La mayoría de las veces, esto se implementa como una copia de un bloque que se extrae de la imagen de referencia para generar el predictor (aunque, en teoría, podría aplicarse potencialmente alguna forma de filtrado). Por otra parte, cuando el desplazamiento subpíxel no es nulo, el predictor se genera aplicando sobre las localizaciones de píxel entero de la imagen de referencia uno o más filtros correspondientes al desplazamiento subpíxel. Por lo tanto, el filtro de compensación del movimiento viene determinado por el desplazamiento subpíxel.
Para implementar los desplazamientos subpíxel como operaciones de filtrado, los filtros de compensación de movimiento interpolan los puntos de datos en las localizaciones de fracciones de píxel en base a valores de referencia en localizaciones de píxel entero. En general, la calidad de la interpolación aumenta con la ayuda del filtro. Algunas realizaciones usan filtros separables de 2 vías y 4 vías (en cada dirección), que corresponden a interpolaciones bilineales y bicúbicas.
En algunas realizaciones, los filtros de compensación de movimiento utilizan aritmética entera y división implementada por desplazamiento de un bit. El parámetro R de control de redondeo toma el valor 0 ó 1 y determina la dirección del redondeo para esa división. Este parámetro de control de redondeo puede fijarse con una constante, señalada externamente, o puede derivarse implícitamente a partir de una información codificada anterior.
La Figura 6 representa unas localizaciones de píxel entero y de subpíxel en una imagen de referencia (600) usadas en ciertas realizaciones durante la estimación y compensación del movimiento subpíxel. A intervalos de un cuarto de píxel en cada dirección, la imagen de referencia (600) incluye unas localizaciones subpíxel en las cuales un codificador o decodificador puede interpolar valores de píxel para un desplazamiento particular. Las posiciones enteras a-p de la imagen de referencia (600) aparecen como círculos sombreados en la Figura 6, mientras que las posiciones de un cuarto de píxel y de medio píxel interpuestas entre las localizaciones enteras están representadas por círculos sin sombrear. Las localizaciones P_{0} a P_{8} muestran nueve posiciones subpíxel representativas, según se describe en la Tabla 1.
TABLA 1 Posiciones subpíxel representativas
Posición Descripción
P_{0} Un cuarto de píxel horizontal, un píxel vertical
P_{1} Medio píxel horizontal, un píxel vertical
P_{2} Un píxel horizontal, un cuarto de píxel vertical
P_{3} Un cuarto de píxel horizontal, un cuarto de píxel vertical
P_{4} Medio píxel horizontal, un cuarto de píxel vertical
P_{5} Un píxel horizontal, medio píxel vertical
P_{6} Un cuarto de píxel horizontal, medio píxel vertical
P_{7} Medio píxel horizontal, medio píxel vertical
P_{8} Un píxel horizontal, tres cuartos de píxel vertical
La posición de tres cuartos de píxel ejemplarizada en P_{8} puede considerarse un caso especial de la posición de un cuarto de píxel; se trata de un desplazamiento de un cuarto de píxel a partir de una localización de un píxel completo. Son posibles otras posiciones de tres cuartos de píxel, pero no se han representado. Las posiciones subpíxel P_{0} a P_{8} están citadas en descripciones posteriores de filtros de interpolación. En realizaciones alternativas, el codificador y el decodificador interpolan valores en posiciones subpíxel adicionales o diferentes, por ejemplo aquellas que estén situadas en un intervalo distinto a un cuarto de píxel en cada dirección.
A. Filtros de interpolación bicúbica aproximada
Para la interpolación subpíxel, en algunas realizaciones, un codificador y decodificador de vídeo utiliza filtros lineales/bilineales y/o filtros cúbicos/bicúbicos que se definen como sigue.
Un interpolador lineal es un polinomio lineal, o de primer orden, en una dimensión, que utiliza valores conocidos en los dos puntos de la celosía más próximos al punto que se esté interpolando. El valor de la función lineal en el punto que se esté interpolando es la interpolación lineal. Los multiplicadores del polinomio lineal se calculan resolviendo un sistema lineal de ecuaciones que determina los coeficientes del filtro lineal. Un filtro interpolador lineal está definido por dos vías de filtro. Un interpolador bilineal es un interpolador lineal separable en dos dimensiones.
Un interpolador cúbico es un polinomio cúbico, o de tercer orden, en una dimensión, que utiliza valores conocidos en los cuatro puntos de la celosía más próximos al punto que se esté interpolando. El valor de la función cúbica en el punto que se esté interpolando es la interpolación cúbica. Los multiplicadores del polinomio cúbico se calculan resolviendo un sistema de ecuaciones que determina los coeficientes del filtro cúbico. Un filtro interpolador cúbico está definido por cuatro vías de filtro. Un interpolador bicúbico es un interpolador cúbico separable en dos dimensiones.
Los términos lineal y bilineal se usan típicamente de modo intercambiable en los campos de la compresión y la descompresión de vídeo. En una interpolación bidimensional normal, una operación de interpolación efectuada en una dimensión es replicada en la otra dimensión, y por lo tanto cada etapa de filtrado es denominada filtrado bilineal. Los términos cúbico y bicúbico son igualmente intercambiables.
En este documento, los términos lineal y bilineal se usan de modo intercambiable para describir el filtrado en una, dos o más dimensiones. Similarmente, los términos cúbico y bicúbico se usan de modo intercambiable para describir el filtrado en una, dos o más dimensiones. Por ejemplo, las ecuaciones (11) a (13) definen tipos de filtros cúbicos, pero están referidos como filtros bicúbicos porque, en la aplicación común de interpolación en dos etapas para las imágenes de vídeo de referencia, los filtros se utilizan en operaciones replicadas para ambas dimensiones de la interpolación en dos etapas. Más generalmente, la dimensionalidad del filtrado es conocida por el contexto.
En algunas realizaciones, un codificador y decodificador utiliza filtros bicúbicos aproximados para interpolar valores en localizaciones subpíxel. Por ejemplo, el codificador y decodificador usa los siguientes filtros (de los cuales F_{1} es un filtro bicúbico, y F_{2} y F_{3} son filtros bicúbicos aproximados) en las posibles localizaciones desplazadas de una imagen de referencia tal como la representada en la Figura 6.
desplazamiento de medio píxel F_{1}: [-1 9 9 -1]
(11),
desplazamiento de un cuarto de píxel F_{2}: [-4 53 18 -3]
(12),
y
desplazamiento de tres cuartos de píxel F_{3}: [-3 18 53 -4]
(13).
En la práctica, los filtros también incluyen un desplazamiento a la derecha (por ejemplo, 4 bits para F_{1}, 6 bits para F_{2} y F_{3}) para compensar la expansión potencialmente introducida por los coeficientes del filtro. El operador >> es un operador de desplazamiento a la derecha. Una operación de desplazamiento a la derecha desplaza hacia la derecha los bits de un número binario, descartando el bit menos significativo y añadiendo un 0 como bit más significativo. La operación resulta en una simple división por 2 a la potencia del número de bits desplazados (por ejemplo, un desplazamiento de 3 a la derecha resulta en una división por 2^{3} = 8), descartándose el resto.
Los coeficientes de filtrado para F_{2} y F_{3} se basan aproximadamente en el verdadero interpolador bicúbico de un cuarto de píxel, que es un filtro de cuatro vías. La siguiente ecuación muestra el resultado de aplicar el verdadero filtro bicúbico de un cuarto de píxel para la localización P_{0}:
(- 7e + 105f + 35g - 5h) >>7
(14)
Los valores de los coeficientes suman 128, y el producto del filtrado es desplazado 7 bits a la derecha. Los filtros bicúbicos aproximados F_{2} y F_{3} se aproximan al filtro bicúbico puro en términos de prestaciones, pero tienen una resolución más baja, según se muestra en la siguiente ecuación.
\hskip3,1cm (- 7e + 105f + 35g - 5h) >>7
\hskip3,1cm = (- 3,5e + 52,5f + 17,5g - 2,5h) >>6
\approx (- 4e + 53f + 18g - 3h) >>6
(15)
En muchos casos, el uso de un filtro bicúbico puro resulta en una pérdida de bits de precisión en la interpolación multietapa, por lo que el factor de normalización para el filtro bicúbico aproximado se reduce como mínimo a la mitad (es decir, el desplazamiento a la derecha disminuye en 1 bit o más). Los coeficientes de filtro elegidos para el filtro bicúbico aproximado de la ecuación (15) están basados en redondear el filtro bicúbico verdadero, después de haber tenido en cuenta el comportamiento del dominio frecuencial (por ejemplo, para preservar la información de alta frecuencia) y el comportamiento empírico (por ejemplo, para alcanzar la menor distorsión dado un cierto bitrato). Específicamente, los filtros F_{2} y F_{3} incluyen aún cuatro coeficientes de filtrado. (En general, el uso de menos coeficientes de filtrado en un filtro acelera la implementación, pero deben usarse suficientes coeficientes de filtrado para solucionar el ruido de un píxel adyacente). Los valores del filtro se ajustan para que sumen 64, lo cual facilita la implementación usando aritmética de 16 bits y a la vez lo aproxima al filtro bicúbico de mayor resolución. Un filtro que funciona sustancialmente como un filtro bicúbico puro, pero tiene menos soporte y/o menor resolución, se denomina filtro bicúbico "aproximado". Un modo de medir objetivamente si el filtro funciona sustancialmente como un filtro bicúbico puro consiste en comprobar si el filtro bicúbico aproximado correlaciona bien (es decir, dentro de un umbral definido) con el filtro bicúbico puro. En una implementación, la correlación se mide por el coseno del ángulo formado por los vectores para los filtros (que deseablemente será lo más próximo a 1 que sea posible), y el umbral es 0,95. También pueden usarse otras medidas objetivas o subjetivas, otras medidas por correlación, y/u otros umbrales. Por ejemplo, pueden seleccionarse los coeficientes de filtrado del filtro bicúbico aproximado de tal modo que su suma tenga algún otro valor que facilite una transformación de Fourier eficiente u otra manipulación
matemática.
Según se describe con mayor detalle a continuación, la Figura 7 representa generalmente las localizaciones de píxel entero con los valores de píxel que se utilizan para calcular píxeles interpolados en cada uno de los casos correspondientes a los filtros bicúbicos tratados en las ecuaciones (11)-(13). P representa la posición subpíxel para la cual se calcula un valor de píxel. I_{1}, I_{2}, I_{3} e I_{4} representan posiciones de píxel entero en la dimensión de la interpolación. La Figura 7 muestra una interpolación horizontal, pero las mismas operaciones y colocación de posiciones son aplicables a la interpolación vertical.
En realizaciones alternativas, un codificador y un decodificador usan filtros de interpolación distintos y/o adicionales. Por ejemplo, el codificador y el decodificador usan un filtro bilineal (es decir, de 2 vías) para interpolar el valor. Por ejemplo, con referencia a las posiciones subpíxel de la Figura 6, los filtros de interpolación usados para determinar los valores de P_{1}, P_{5} y P_{7} pueden ser los filtros ilustrados en las ecuaciones (1)-(3).
B. Interpolación unidimensional
En diversas posiciones subpíxel, el codificador y el decodificador de ciertas realizaciones calculan un valor interpolado solamente en una dimensión. Según se ilustra en la Figura 7, las siguientes ecuaciones muestran el funcionamiento de los filtros F_{1} (desplazamiento de medio píxel), F_{2} (desplazamiento de un cuarto de píxel), y F_{3} (desplazamiento de tres cuartos de píxel) cuando interpolan entre píxeles enteros:
F_{1}:(- 1I_{1} + 9I_{2} + 9I_{3} - 1I_{4} + 8 - r) >>4
(16),
F_{2}:(- 4I_{1} + 53I_{2} + 18I_{3} - 3I_{4} + 32 - r) >>6
(17),
y
F_{3}:(- 3I_{1} + 18I_{2} + 53I_{3} - 4I_{4} + 32 - r) >>6
(18).
en donde el valor r controla el redondeo. El valor r depende del parámetro binario R de control de redondeo a nivel de la imagen y de la dirección de interpolación, según sigue:
100
Para mejor ilustrar la interpolación unidimensional, en la Figura 6, P_{1} y P_{5} representan posiciones de medio píxel en la imagen de referencia (600) que requieren interpolación en una dimensión únicamente (es decir, la dirección horizontal para P_{1} y la dirección vertical para P_{5}). Las siguientes ecuaciones muestran el funcionamiento del filtro F_{1} (desplazamiento de medio píxel) cuando interpola entre píxeles enteros para P_{1} y P_{5}:
P_{1} = (- 1e + 9f + 9g - 1h + 8 - r) >>4
(20),
y
P_{5} = (- 1b + 9f + 9j - 1n + 8 - r) >>4
(21).
Similarmente, en la Figura 6, P_{0} y P_{2} representan posiciones de un cuarto de píxel en la imagen de referencia (600) que requieren interpolación en una dimensión únicamente (es decir, la dirección horizontal para P_{1} y la dirección vertical para P_{5}). Las siguientes ecuaciones muestran el funcionamiento del filtro F_{2} (desplazamiento de un cuarto de píxel) cuando interpola entre píxeles enteros para P_{0} y P_{2}:
P_{0} = (- 4e + 53f + 18g - 3h + 32 - r) >>6
(22),
y
P_{2} = (- 4b + 53f + 18j - 3n + 32 - r) >>6
(23).
El filtro bicúbico aproximado F_{2} de un cuarto de píxel también puede utilizarse, con una pequeña modificación, para calcular posiciones de tres cuartos de píxel. Por ejemplo, la siguiente ecuación muestra el funcionamiento del filtro F_{3} (desplazamiento de tres cuartos de píxel) cuando interpola entre píxeles enteros para P_{8}:
P_{8} = (- 3b + 18f + 53j - 4n + 32 - r) >>6
(24).
\newpage
Alternativamente, un codificador y un decodificador usan filtros distintos y/o adicionales para posiciones desplazadas medio píxel, un cuarto de píxel o tres cuartos de píxel en una dimensión. Por ejemplo, el codificador y el decodificador usan filtros con más o menos coeficientes de filtrado, diferentes coeficientes de filtrado, diferente redondeo, o sin redondeo.
C. Interpolación multidimensional
En algunas realizaciones se efectúa la interpolación en posiciones subpíxel que están separadas en dos dimensiones. En la Figura 6, por ejemplo, P_{3}, P_{4}, P_{6} y P_{7} son posiciones en las cuales la interpolación se produce en ambas dimensiones horizontal y vertical.
En una realización, que corresponde al procedimiento de interpolación (800) representado en la Figura 8, dos localizaciones subpíxel bidimensionales son interpoladas primero a lo largo de la dirección vertical y después a lo largo de la dirección horizontal. Según se describe con mayor detalle más adelante, la interpolación se efectúa usando uno o más filtros F_{1}, F_{2}, o F_{3} especificados anteriormente en las ecuaciones (16) a (18). En la realización ilustrada en la Figura 8, el redondeo se aplica después del filtrado vertical y del filtrado horizontal. El desplazamiento de bits en la regla del redondeo asegura el mantenimiento de la precisión de los resultados intermedios que permite la aritmética de 16 bits.
En la Figura 8, primero se efectúa el filtrado vertical, seguido por el filtrado horizontal. En algunas arquitecturas se mejoran las prestaciones si se empieza por el filtrado vertical. En otras arquitecturas el orden del filtrado es diferente. Por ejemplo, se efectúa la interpolación en dirección horizontal antes que en dirección vertical. O se usan otras combinaciones diversas de filtros de interpolación (por ejemplo, filtros horizontales múltiples y/o filtros verticales múltiples, etc.).
Los valores de píxel de entrada y de salida (811,838) tienen una profundidad de 8 bits, y un margen dinámico de 256 valores. Los valores intermedios (820) tienen una profundidad de 16 bits para un margen dinámico de 65.536 valores. En realizaciones alternativas, los valores de entrada, de salida e intermedios tienen diferente profundidad de bits.
En una primera etapa (810), se aplica (812) un filtro vertical adecuado (F_{v}) a un o unos valores de píxel de entrada de 8 bits (811). El filtro vertical aplicado dependerá de que la posición subpíxel seleccionada sea desplazada un cuarto de píxel, medio píxel o tres cuartos de píxel, y puede adoptar la forma de uno de los filtros bicúbicos descritos anteriormente.
La regla del redondeo después del filtrado vertical se define como:
(S + R_{v}) >> desplazamientoV
(25),
en donde S es el resultado filtrado verticalmente y R_{v} = 2^{desplazamientoV-1} - 1 + R.
R es un valor de control de redondeo que alterna entre 0 y 1 entre una y otra imagen. Así pues, la regla del redondeo incluye redondear con un control de redondeo (813) alternado entre etapas y un desplazamiento de bits (814).
El desplazamiento a la derecha provoca potencialmente una pérdida de resolución, por lo que se aplaza al menos una parte del desplazamiento hasta unas etapas de interpolación posteriores. El valor del desplazamiento a la derecha, desplazamientoV, depende de la posición subpíxel que se esté interpolando. Específicamente, desplazamientoV =
{5,3,3,1} para P_{3}, P_{4}, P_{6} y P_{7}. La magnitud del desplazamiento es inferior a la requerida para compensar la expansión debida al valor de los coeficientes de filtrado de la primera etapa (por ejemplo, el desplazamiento para el filtro bicúbico_{ }aproximado es inferior a 6 bits), pero suficiente para garantizar que los resultados intermedios del subsiguiente filtrado se mantengan dentro del margen dinámico de los valores intermedios (por ejemplo, 65.536 valores para las palabras de 16 bits). Comparado con el desplazamiento completo, este desplazamiento acortado mantiene la precisión de los valores de píxel intermedios (820) después de la primera etapa (810) de interpolación. Los valores de píxel intermedios (820) tienen un margen dinámico de y bits, en donde y es mayor de 8 bits. El grado de desplazamiento efectuado en la primera etapa puede depender de la profundidad de bits disponible y de los coeficientes de los filtros de interpolación. Por ejemplo, en la implementación ejemplar que se describe, los valores intermedios están limitados a un límite de palabra de 16 bits.
Considérese el punto P_{3} de la Figura 6 y unos valores de entrada dentro del margen de 0…255 (8 bits). El margen de los valores intermedios procedentes de aplicar los coeficientes del filtro bicúbico aproximado [-4 53 18 -3] a los valores de entrada de 8 bits es de -1.785 a 18.105 (unos 14,3 bits, que en la implementación se redondean a 15 bits) debido al factor de expansión de los coeficientes de filtrado. El subsiguiente filtrado horizontal, aplicando a los valores intermedios los coeficientes del filtro bicúbico aproximado (con una expansión adicional), puede producir unos valores que estén fuera del margen dinámico de 16 bits, provocando un subflujo o un sobreflujo. Así pues, los valores intermedios son desplazados lo suficiente para garantizar que el filtrado horizontal subsiguiente produzca un valor que esté dentro del margen dinámico de 16 bits. Para P_{3}, el primer grado de desplazamiento es de cinco bits, y entonces el margen dinámico de los valores intermedios desplazados es de -55 a 565 (aproximadamente 9,3 bits, que en la implementación se redondean a 10 bits). El margen de la salida procedente de aplicar los coeficientes del filtro bicúbico aproximado a los valores intermedios desplazados es entonces de -7.860 a 40.500, que tiene un margen dinámico de menos de 16 bits. Así pues, el desplazamiento acortado se calcula de manera que se utilice totalmente el límite de la palabra de 16 bits, pero garantizando que este no sea excedido durante la segunda etapa (830) de interpolación.
En la segunda etapa (830), se aplica (832) un filtro horizontal adecuado (F_{H}) para interpolar el valor en la posición subpíxel bidimensional a partir de los valores (820) determinados por el filtro vertical. La regla del redondeo después del filtrado horizontal es:
(S + 64 - R) >>7
(26).
en donde S es el resultado filtrado horizontalmente, y R es el valor de control de redondeo que alterna de una a otra imagen. Al igual que la regla de redondeo de la primera etapa, la regla de redondeo de la segunda etapa incluye redondear con un control de redondeo (833) alternado entre etapas y un desplazamiento de bits (834). Considerando el desplazamiento aplazado de la primera etapa, el grado de desplazamiento de la segunda etapa excede típicamente del esperado normalmente para el filtro horizontal seleccionado, y se calcula para que el valor de salida tenga el margen dinámico deseado.
Todos los casos de filtrado bicúbico pueden producir potencialmente un píxel interpolado cuyo valor sea negativo, o cuyo valor sea superior al máximo del margen (por ejemplo, 255 para una salida de 8 bits). En estos casos, con valores de salida de 8 bits, el codificador y el decodificador limitan el valor de salida (836) para que quede dentro del margen aceptado. En particular, se fijan los subflujos a 0 y los sobreflujos a 255. Después del bloqueo se saca un valor interpolado de 8 bits (838).
En la Figura 8, el desplazamiento de la segunda etapa es de 7 bits. Así pues, un valor de salida filtrado que tenga 9 bits queda retenido. Por ejemplo, siguiendo con el ejemplo anterior para P_{3}, el margen del valor de salida filtrado es de -61 a 316, que tiene un margen dinámico de aproximadamente 8,6 bits (que se redondea a 9 en la implementación). Aunque el margen válido de los datos interpolados es de sólo 8 bits, el bit extra de cabecera proporciona la información de sobreflujo y subflujo. En otras palabras, si el bit más significativo (es decir, el bit de "signo") está puesto, existe un subflujo o un sobreflujo. Para saber específicamente cual de los dos se ha producido hay que mirar los 8 bits de "mantisa" restantes.
Las Figuras 9-11 ilustran también la interpolación bidimensional descrita anteriormente e ilustrada en la Figura 8. La Figura 9 muestra la posición subpíxel P_{7} (medio píxel horizontal, medio píxel vertical) de la imagen de referencia (600) de la Figura 6. Para interpolar el valor de P_{7} se utilizan dos filtros de interpolación bicúbicos de medio píxel. En la primera etapa, se calculan los valores intermedios V_{1}-V_{4} a partir de unas posiciones próximas de píxel entero mediante un filtro bicúbico de medio píxel que tiene la forma general:
V_{inter} = (- 1x_{1} + 9x_{2} + 9x_{3} - 1x_{4})
(27),
Así pues,
V_{1} = (- 1a + 9e + 9i - 1m)
(28),
V_{2} = (- 1b + 9f + 9j - 1n)
(29),
V_{3} = (- 1c + 9g + 9k - 1o)
(30),
y
V_{4} = (- 1d + 9h + 9l - 1p)
(31).
Una vez añadido el valor de R_{v} apropiado, se desplazan los resultados un bit a la derecha. En la segunda etapa, los valores intermedios V_{1}-V_{4} son utilizados por un filtro de medio píxel para calcular el valor de píxel en P_{7}. En particular se utiliza un filtro de medio píxel que tiene la forma siguiente:
P_{7} = (- 1V_{1} + 9V_{2} + 9Vx_{3} - 1V_{4})
(32).
Según se describió anteriormente, el resultado de la segunda etapa es desplazado siete bits a la derecha con el fin de obtener un valor de 9 bits. El valor de 9 bits incluye ocho bits de mantisa y un bit de signo. Después se efectúa cualquier bloqueo necesario para compensar el sobreflujo o el subflujo, y se saca un valor final interpolado de 8 bits.
La Figura 10 muestra la posición subpíxel P_{4} (medio píxel horizontal, un cuarto de píxel vertical) de la imagen de referencia (600) de la Figura 6. Para interpolar el valor de P_{4} se utiliza un filtro de interpolación bicúbico de un cuarto de píxel y un filtro de medio píxel. En la primera etapa se calculan los valores intermedios V_{1}-V_{4}, a partir de unas posiciones próximas de píxel entero, mediante un filtro bicúbico de un cuarto de píxel que tiene la forma general:
V_{inter} = (- 4x_{1} + 53x_{2} + 18x_{3} - 3x_{4})
(33).
Este filtro se aplica a los valores de píxel entero de la imagen de referencia (600) de la misma manera descrita anteriormente con respecto al cálculo de P_{7}. Una vez añadido el valor de R_{v} apropiado, los resultados son desplazados tres bits a la derecha. En la segunda etapa, los valores intermedios V_{1}-V_{4} son utilizados por un filtro de medio píxel para calcular el valor de píxel en P_{4}. En particular se utiliza un filtro de medio píxel que tiene la forma
siguiente:
P_{4} = (- 1V_{1} + 9V_{2} + 9V_{3} - 1V_{4})
(34).
El resultado de la segunda etapa se desplaza siete bits a la derecha con el fin de obtener un valor de 9 bits, se efectúa cualquier bloqueo necesario, y se saca un valor interpolado final de 8 bits.
La Figura 10 muestra también una posición subpíxel P_{6} (un cuarto de píxel horizontal, medio píxel vertical). Para interpolar el valor de P_{6} se utiliza la técnica para interpolar P_{4} con sólo ligeras modificaciones. En la técnica modificada, para determinar los valores intermedios en la primera etapa se utiliza un filtro bicúbico de medio píxel. Las localizaciones de píxel intermedias están representadas en la Figura 10 en V_{5}-V_{8}. Durante la segunda etapa, un filtro bicúbico de un cuarto de píxel utiliza los valores intermedios para calcular el valor de P_{6}. En particular, se usa un filtro bicúbico de un cuarto de píxel que tiene la siguiente forma:
P_{6} = (- 4V_{5} + 53V_{6} + 18V_{7} - 3V_{8})
(35).
La magnitud del desplazamiento en la primera y en la segunda etapa es igual que en la técnica para calcular P_{4} (es decir, el desplazamiento en la primera etapa es tres y el desplazamiento en la segunda etapa es siete).
La Figura 11 muestra una posición subpíxel P_{3} (un cuarto de píxel horizontal, un cuarto de píxel vertical) de la imagen de referencia (600) de la Figura 6. Para interpolar el valor de P_{3} se utilizan dos filtros de interpolación bicúbicos de un cuarto de píxel. En la primera etapa se calculan los valores intermedios V_{1}-V_{4} a partir de unas posiciones próximas de píxel entero mediante un filtro bicúbico de un cuarto de píxel que tiene la forma general:
V_{inter} = (- 4x_{1} + 53x_{2} + 18x_{3} - 3x_{4})
(36).
Este filtro se aplica a los valores de píxel entero de la imagen de referencia (600) de la misma manera descrita anteriormente con respecto al cálculo de P_{4}. Una vez añadido el valor de R_{v} apropiado, se desplazan los resultados cinco bits a la derecha. En la segunda etapa, los valores intermedios V_{1}-V_{4} son utilizados por un filtro de medio píxel para calcular el valor de píxel en P_{3}. En particular se utiliza un filtro de un cuarto de píxel que tiene la forma
siguiente:
P_{3} = (- 4V_{1} + 53V_{2} + 18V_{3} - 3V_{4})
(37).
El resultado de la segunda etapa se desplaza siete bits a la derecha con el fin de obtener un valor de 9 bits, se efectúa cualquier bloqueo necesario, y se saca un valor interpolado final de 8 bits.
Aunque no están representados en la Figura 9-11, también pueden calcularse los valores de las posiciones subpíxel que tengan un desplazamiento de tres cuartos de píxel en una o ambas dimensiones. Para calcular tales posiciones subpíxel, pueden modificarse los métodos descritos anteriormente utilizando los filtros bicúbicos adecuados de tres cuartos de píxel en lugar de los filtros bicúbicos de un cuarto de píxel.
En otras realizaciones se utilizan filtros bilineales o combinaciones de filtros bilineales y bicúbicos para interpolar los valores en las posiciones subpíxel muestreadas. El uso de filtros bilineales reduce generalmente la magnitud del desplazamiento efectuado (después del primer filtrado y en total) porque los coeficientes introducen menos expansión que con los filtros bicúbicos. En una implementación que utiliza filtros bilineales y valores intermedios de 16 bits, por ejemplo, no se efectúa ningún desplazamiento en la primera etapa, maximizando así el uso del límite de la palabra de 16 bits, y se efectúa un desplazamiento a la derecha de 4 bits después de la última etapa. Similarmente, el bloqueo puede ser aplazado hasta la última etapa.
Uno de los principios que subyacen en los métodos descritos anteriormente es el uso de la mayor precisión posible en cada etapa de filtrado, pero manteniéndose dentro de un límite deseado W del "tamaño de palabra". Si el valor de salida tiene un margen dinámico de D bits, y se descartan L bits en la última etapa, la salida de la última etapa de filtrado puede llegar a D+L+1 bits, en donde el último bit es utilizado para señalar los subflujos y sobreflujos. Trabajando hacia atrás, si la última etapa de filtrado resulta en una expansión de k bits, entonces la entrada a la última etapa debería estar dentro de D+L-k. Así pues, para mantener la máxima precisión con una representación de W bits, existe la siguiente relación:
D + L + 1 = W
(38).
Además, la entrada a la última etapa deberá ser D + L - k = W - k - 1 bits.
Esta lógica puede ser aplicada recursivamente a la penúltima etapa de filtrado, y así sucesivamente. De hecho, los límites pueden estrecharse usando bits fraccionarios para representar los márgenes distintos de 2^{k} y los factores de expansión.
Las Figuras 12-15 son diagramas que ilustran las diversas técnicas que anteriormente se han descrito combinadas, pero que también son aplicables por separado a la interpolación multietapa. Las Figuras 12-15 no muestran las diversas maneras con que puede usarse la respectiva interpolación multietapa (1200, 1300, 1400, 1500) en conjunción con otras técnicas de interpolación multietapa.
Además, aunque cada una de las Figuras 12-15 muestra dos etapas, las técnicas de interpolación multietapa (1200, 1300, 1400, 1500) ilustradas en las Figuras 12-15 puede incluir más etapas. Más generalmente, las técnicas de interpolación multietapa (1200, 1300, 1400, 1500) pueden ser implementadas con cualquier tipo de filtro separable en múltiples dimensiones, así como con filtros arbitrarios implementados según una estructura en cascada, escalera, o celosía.
Las Figuras 12-15 muestran los valores de entrada, valores de salida y filtros generalizados que se utilizan en la interpolación multietapa. La elección específica de la profundidad de bits para los valores de entrada de la primera etapa, los valores de salida de la última etapa, y los valores intermedios, puede extenderse arbitrariamente de acuerdo con las especificaciones técnicas de una arquitectura o aplicación buscada. Por ejemplo, los valores de entrada pueden ser valores de píxel de 8 bits en posiciones de píxel entero de imágenes de referencia, los valores de salida pueden ser valores de píxel de 8 bits en posiciones subpíxel de imágenes de referencia, y los filtros pueden ser filtros bicúbicos regulares y aproximados (según se describió anteriormente con referencia a las Figuras 6-8). Alternativamente, los valores de entrada y/o los valores de salida tienen un margen dinámico con diferente profundidad de bits, o se utilizan filtros diferentes.
Un componente tal como el codificador o decodificador descrito con referencia a las Figuras 4 y 5, respectivamente, puede efectuar la interpolación multietapa (1200, 1300, 1400, 1500). Alternativamente, otro codificador o decodificador, u otro tipo de componente, puede efectuar la interpolación multietapa (1200, 1300, 1400, 1500).
La Figura 12 muestra un diagrama de interpolación multietapa (1200) con un margen dinámico (en bits) mejorado para los valores interpolados intermedios. En la primera etapa (1210), el componente aplica (1212) un primer filtro F_{1} a uno o más valores de entrada (1211) con margen de x bits, produciendo uno o más valores intermedios (1220) con margen de y bits, en donde y es mayor que x. Por ejemplo, los valores intermedios de y bits son valores de píxel que tienen un margen dinámico de más de 8 bits, y los valores de entrada de x bits tienen un margen dinámico de 8 bits.
En cada una de las cero o más etapas intermedias (1222), que no se muestran con detalle, el componente aplica un filtro a los valores intermedios (1220) con margen y. La salida de las etapas intermedias es uno o más valores intermedios (1229) con margen de z bits, en donde z es mayor que x. (En las Figuras 12-15, si la última etapa es la segunda
etapa, los valores intermedios que salen de la primera etapa son los valores intermedios de entrada a la última etapa).
En la última etapa (1230), el componente aplica (1232) un último filtro F_{L} al valor o valores intermedios (1229) con margen de z bits. La salida final es un valor de salida (1234) con margen de x bits. En cada una de las técnicas de interpolación multietapa (1200, 1300, 1400, 1500), si es necesario, el componente repite la interpolación multietapa (1200, 1300, 1400, 1500) para valores de salida adicionales. En la interpolación repetida, el componente puede reutilizar ciertos valore intermedios calculados en las interpolaciones anteriores.
La Figura 13 muestra un diagrama de interpolación multietapa (1300) con bloqueo omitido. Al aplazar el bloqueo, por ejemplo, se acelera el cálculo, puesto que el componente ya no compara cada valor intermedio con los extremos superior e inferior del margen. Al aplazar el bloqueo también se protege la precisión de los valores intermedios.
En la primera etapa (1310), el componente aplica (1312) un primer filtro F_{1} a uno o más valores de entrada (1311) con margen de x bits. Después de la aplicación del primer filtro F_{1} no se efectúa ningún bloqueo. Así pues, el valor o valores intermedios (1320) que salen del primer filtro F_{1} pueden tener un margen dinámico mayor de x bits. Por ejemplo, los valores de entrada son valores de 8 bits, y la salida del primer filtro F_{1} tiene un margen dinámico de 9 o más bits debido al factor de expansión introducido por los coeficientes del primer filtro F_{1.}
En cada una de las cero o más etapas intermedias (1322), que no se muestran con detalle, el componente aplica un filtro al valor o valores intermedios (1320) no bloqueados. También puede omitirse el bloqueo en las cero o más etapas intermedias (1322). Los valores intermedios (1329) que salen de las cero o más etapas intermedias (1322) son introducidos en una última etapa (1330) en la cual el componente aplica (1332) un último filtro F_{L} a los valores (1329). La salida final del último filtro F_{L} se bloquea (1334) y se saca un valor (1336) con un margen de 8 bits.
La Figura 14 muestra un diagrama de interpolación multietapa (1400) con desplazamiento de bits aplazado. En la primera etapa (1410), el componente aplica (1412) un primer filtro F_{1} a uno o más valores de entrada (1411) con margen de x bits. Después de la aplicación del primer filtro F_{1}, o en conjunción con la misma, se efectúa un desplazamiento acortado (1414). El desplazamiento acortado (1414) es menor que el requerido para garantizar un valor de salida con un margen de 8 bits (en vista del factor de expansión de los coeficientes del primer filtro F_{1}) y por lo tanto menor que el asociado típicamente al primer filtro F_{1}. En consecuencia, el desplazamiento acortado (1414) produce uno o más valores intermedios que tienen un margen dinámico (de y bits) mayor de x bits. Por ejemplo, los valores
de entrada tienen un margen dinámico de 8 bits, y los valores intermedios tienen un margen dinámico de más de 8 bits.
En cada una de las cero o más etapas intermedias (1422), que no se muestran con detalle, el componente aplica un filtro al valor o valores intermedios (1420). Uno o más valores intermedios (1429) con un margen dinámico de z bits (superior a x bits) salen de la cero o más etapas intermedias (1422) y, en una última etapa (1430), el componente aplica (1432) un último filtro F_{L} a los valores (1429). La salida final del último filtro F_{L} es desplazada con una magnitud superior a la asociada típicamente al último filtro F_{L}, contrayendo así el margen dinámico del valor de salida (1434) a una profundidad de bits especificada. Por ejemplo, el margen dinámico (en bits) del valor de salida (1434) es igual a x ó x+1. En una implementación, el desplazamiento de la primera etapa y de cualquier etapa intermedia es aplazado lo más posible hasta la última etapa. El grado con que se aplaza el desplazamiento puede depender de la profundidad de bits disponible para los cálculos intermedios y de los factores de expansión de los respectivos filtros.
La Figura 15 muestra una técnica de interpolación multietapa (1500) que utiliza un control de redondeo alternado entre etapas. Las múltiples etapas de la técnica de interpolación (1500) se alternan en el modo de aplicar el control de redondeo para ajustar el redondeo. Esto ayuda a evitar, en ciertas secuencias de vídeo, la acumulación de errores de redondeo de una imagen a otra. Por ejemplo, si una secuencia de vídeo de baja calidad incluye un movimiento gradual en una dimensión (panning) o en dos dimensiones (zooming), la acumulación de errores de redondeo puede resultar en un desvanecimiento gradual del color entre una y otra imagen, lo que puede provocar artefactos perceptibles. El control de redondeo alternado por etapas ayuda a evitar ese desvanecimiento del color.
Un ejemplo numérico puede ayudar a ilustrar el redondeo sobre el cual se aplica el control de redondeo alternado por etapas antes de hacer el desplazamiento de bits a la derecha. El desplazamiento de bits a la derecha produce esencialmente una división y un truncado del valor desplazado a la derecha. El añadir un valor de redondeo antes del desplazamiento hace que el valor desplazado sea redondeado hacia arriba o hacia abajo (al valor entero más cercano), en lugar de ser redondeado siempre hacia abajo (truncado). Al usar el control de redondeo se cambia la dirección del redondeo (hacia arriba o hacia abajo) para un valor marginal. Por ejemplo, supóngase que en cada una de las múltiples etapas se ajusta la salida del filtrado sumando ½ "divisor" de un desplazamiento a la derecha antes del desplazamiento a la derecha (por ejemplo, sumando 2^{4} = 16 antes de un desplazamiento de 5 bits a la derecha, sumando 2^{6} = 64 antes de un desplazamiento de 7 bits a la derecha). El efecto de esta suma es el redondeo hacia arriba (al entero superior inmediato) de los valores que tengan un componente fraccional igual o superior a 0,5 (después de una división correspondiente al desplazamiento de bits). De otro modo, esos valores serían truncados (al entero inferior inmediato) por el desplazamiento a la derecha. Independientemente de la suma, los valores que tengan un componente fraccional inferior a 0,5 (después de una división correspondiente al desplazamiento de bits) siguen siendo truncados (al entero inferior inmediato) por el desplazamiento a la derecha. A continuación el control de redondeo cambia la dirección del redondeo (hacia arriba o hacia abajo) para ciertos valores marginales. Por ejemplo, en cada una de las múltiples etapas se vuelve a ajustar la salida del filtrado restando 0 ó 1 (el valor del control de redondeo alternado) antes del desplazamiento a la derecha (por ejemplo, 2^{desplazamientoV-1} ó 2^{desplazamientoV-1} -1). El efecto de este ajuste del control de redondeo es cambiar la dirección del redondeo para los valores que tengan un componente fraccional de 0,5 (después de una división correspondiente al desplazamiento de bits). Cuando se resta un 1, tales valores marginales son redondeados hacia abajo. En caso contrario, tales valores marginales son redondeados hacia arriba.
Cada una de las múltiples etapas utiliza un valor de control de redondeo que alterna entre 0 y 1 antes de la interpolación multietapa, de manera que las distintas etapas se alternan en el modo de aplicar el valor de control de redondeo. Alternativamente, la técnica de interpolación multietapa (1500) utiliza un valor de control de redondeo que alterna por si mismo entre etapa y etapa.
En la primera etapa (1510) de la Figura 15, el componente aplica (1512) un primer filtro F_{1} a uno o más valores de entrada (1511) con margen de x bits. Después de la aplicación del primer filtro F_{1}, o en conjunción con la misma, se efectúa un redondeo (1514) sobre la salida del primer filtro F_{1}. El redondeo (1514) se ajusta alternando el control de redondeo entre las etapas. Por ejemplo, en la primera etapa (1510), el control de redondeo alternado por etapas hace que el valor de salida sea redondeado hacia arriba al entero más cercano si el valor de salida es un valor marginal (cuyo valor de salida, de no ser así, sería redondeado hacia abajo). De la primera etapa salen uno o más valores intermedios redondeados (1520) que entran en una segunda etapa (1530).
En la segunda etapa (1530), el componente aplica (1532) un segundo filtro F_{2} al valor o valores intermedios (1520). Se efectúa un redondeo (1534) sobre la salida del segundo filtro F_{2}. Después de la aplicación del segundo filtro F_{2}, o en conjunción con la misma, se efectúa un redondeo (1534) con control de redondeo alternado entre etapas, cuyo control de redondeo provoca el redondeo de los valores marginales en la dirección opuesta a la primera etapa. Por ejemplo, en la segunda etapa (1530), el control de redondeo alternado por etapas hace que el valor de salida sea redondeado hacia abajo al entero más cercano si el valor de salida es el valor marginal. De la segunda etapa salen uno o más valores intermedios (1536) que pueden usarse en cero o más etapas adicionales (1540). Las cero o más etapas adicionales (1540) pueden incluir también el control de redondeo alternado entre etapas.
El control de redondeo alternado entre etapas no se limita a su aplicación en etapas consecutivas, sino que puede aplicarse en otras diversas combinaciones de etapas. Además, la primera dirección puede depender de un número de parámetros. Por ejemplo, en un codificador y decodificador de vídeo, la primera dirección puede depender del control de redondeo usado en la imagen anterior, o del tipo de imagen que esté siendo interpolada (por ejemplo, una imagen I, una imagen P, o una imagen B). En otras realizaciones, la primera dirección puede fijarse como una constante, derivarse implícitamente de una información causal (por ejemplo, de una información codificada/decodificada en el pasado, derivarse mediante el uso de un generador pseudoaleatorio, o señalarse como parte de la corriente de bits. El control de redondeo alternado entre etapas puede aplicarse en la interpolación multietapa mediante el uso de cualquiera de diversos filtros de interpolación, incluyendo filtros bilineales, bicúbicos, y bicúbicos aproximados.
D. Vectores de movimiento de la crominancia
Puesto que los vectores de movimiento de la crominancia (croma) se derivan implícitamente de los vectores colocalizados de movimiento de la luminancia, su precisión es limitada y presenta posibilidades de simplificación. Esta simplificación puede reducir la complejidad del cálculo de la interpolación subpíxel para los valores de crominancia del codificador y decodificador sin que la calidad percibida del vídeo codificado disminuya significativamente. Además, el codificador y decodificador puede conmutar entre diferentes modos de redondeo e interpolación de los vectores de movimiento de la crominancia. Por ejemplo, un modo enfatiza la calidad del vídeo codificado a costa de una mayor complejidad de cálculo. Otro modo enfatiza la simplicidad del cálculo a costa de una cierta calidad.
En una implementación, un codificador y decodificador de vídeo utiliza un campo "FASTUVMC" de nivel de secuencia, de 1 bit, para controlar la interpolación subpíxel de los valores de crominancia y el redondeo de los vectores de movimiento de la crominancia. Así pues, el codificador y decodificador de vídeo opera selectivamente en uno o dos modos diferentes de redondeo de la crominancia, un modo rápido y un modo básico.
La Figura 16 muestra una técnica (1600) para seleccionar entre múltiples modos de redondeo e interpolación de la crominancia. Por ejemplo, un codificador o decodificador de vídeo tal como el descrito anteriormente con referencia a las Figuras 4 y 5, respectivamente, efectúa esta técnica.
El codificador o decodificador de vídeo determina (1610) si una bandera FASTUVMC de un bit indica que hay que usar un modo rápido de compensación de movimiento de la crominancia (bandera = 1) o un modo básico de compensación de movimiento de la crominancia (bandera = 0). Por ejemplo, la bandera es un campo de nivel de secuencia, correspondiente a un ajuste de usuario, que un codificador escribe en una corriente de bits de vídeo codificado y un decodificador lee en la corriente de bits. Alternativamente, el codificador y el decodificador utilizan más bits para señalizar un redondeo de la crominancia y/o un modo de interpolación mediante códigos de longitud fija o de longitud variable, por ejemplo, para seleccionar entre los más de dos modos disponibles. O bien, en lugar de ser un campo de nivel de secuencia correspondiente a un ajuste de usuario, la información sobre la conmutación es señalizada en cualquier otro lugar de la corriente de bits y/o ajustada de acuerdo con unos criterios diferentes.
Posteriormente el codificador o decodificador de vídeo efectúa una compensación de movimiento de la crominancia en modo básico (1620) o modo rápido (1630). A continuación se dan los detalles de redondeo e interpolación de vectores de movimiento en modo básico (1620) y modo rápido (1630) para una implementación. Alternativamente, estos modos tienen implementaciones diferentes. Por ejemplo, se cambia la tabla de consulta utilizada en la implementación de modo rápido (1630), descrita más adelante, a una ordenación diferente para obtener un nivel de prestaciones deseado con una arquitectura de hardware específica, o se cambia la tabla para trabajar con vectores de movimiento de diferentes precisiones. En lugar del modo básico (1620) y del modo rápido (1630), o adicionalmente a los mismos, el codificador o decodificador puede utilizar otros modos para el redondeo e interpolación de vectores de movimiento de la crominancia.
En una implementación, y en modo rápido (por ejemplo, si la bandera de redondeo de la crominancia = 1), los vectores de movimiento de la crominancia que se encuentran con desviaciones de cuartos de píxel (es decir, desviaciones de un cuarto de píxel y de tres cuartos de píxel) son redondeados a las posiciones más cercanas de píxel completo, los vectores de movimiento de la crominancia que se encuentran en desviaciones de medio píxel son desredondeados a la izquierda, y se usa un filtrado bilineal para toda la interpolación de la crominancia. En este modo la velocidad del codificador y del decodificador aumenta. El motivo de esta optimización es la diferencia significativa de complejidad para interpolar desviaciones de píxel que se encuentren en: (a) posiciones de píxel entero; (b) posiciones de medio píxel; (c) una posición de un cuarto de píxel al menos en una coordenada (x ó y); y (d) una posición de un cuarto de píxel en ambas coordenadas. La relación a:b:c:d es del orden de 1:4:4,7:6,6. Aplicando este modo rápido puede favorecerse (a) y (b), recortando así el tiempo de decodificación. Puesto que esto se realiza sólo en la interpolación de la crominancia, es despreciable la pérdida tanto de codificación como de calidad (especialmente la calidad visible).
En este modo rápido se hace el siguiente nivel de redondeo final sobre los vectores de movimiento de la crominancia:
\hskip3,1cm //RndTbl[-3] = -1, RndTbl[-2] = 0, RndTbl[-1] = +1, RndTbl[-2] = 0
\hskip3,1cm //RndTbl[1] = -1, RndTbl[2] = 0, RndTbl[3] = +1
\hskip3,1cm cmv_x = cmv_x + RndTbl[cmv_x % 4];
cmv_y = cmv_y + RndTbl[cmv_y % 4]
(39)
en donde cmv_x y cmv_y representan las coordenadas x e y del vector de movimiento de la crominancia en unidades de un cuarto de píxel y % representa la operación de módulo (o resto), que se define así: (x % a) = - (- x % a). (El módulo de un número negativo es igual al negativo del módulo del número positivo correspondiente). Así pues, cuando cmv_x (ó cmv_y) es divisible por 4, entonces el vector de movimiento de la crominancia tiene una desviación entera. Cuando cmv_x % 4 = +/-2, entonces el vector de movimiento de la crominancia tiene una desviación de medio píxel. Y cuando cmv_x % 4 = +/-1 ó +/-3, entonces el vector de movimiento de la crominancia tiene una desviación de un cuarto de píxel. Como puede apreciarse por la anterior operación de reordenación, las posiciones de un cuarto de píxel son desautorizadas mediante el redondeo del vector de movimiento de la crominancia a la posición entera más cercana (las posiciones de medio píxel quedan inalteradas por la izquierda). Así pues, este modo reordena las coordenadas de crominancia a las posiciones de píxel entero y de medio píxel. Para obtener con este modo un mayor aumento de velocidad, puede utilizarse un filtrado bilineal para todas las interpolaciones de la crominancia. Aunque se ha descrito esta implementación del modo rápido en combinación con una selección entre múltiples modos de redondeo, alternativamente la implementación del modo rápido puede utilizarse independientemente (es decir, como único modo posible).
La Figura 17 es una tabla (1700) que ilustra este modo rápido de redondeo de la crominancia. La primera fila (1710) muestra valores del vector de movimiento de la luminancia con una precisión de un cuarto de píxel. Aunque los valores del vector de movimiento de la luminancia se muestran en términos de su desviación fraccional respecto a valores de píxeles enteros, podrían ser representados como valores enteros en los cuales cada entero representase un incremento de un cuarto de píxel (es decir, 0, 1, 2, 3, 4 en lugar de 0, ¼, ½, ¾, 1). La segunda fila (1720) muestra cómo se redondean en el modo rápido los correspondientes valores del vector de movimiento de la crominancia de manera que tengan una precisión de un píxel entero y de medio píxel.
En el segundo modo, o modo básico, de esta implementación (por ejemplo, si la bandera de redondeo de la crominancia = 0), los vectores de movimiento de la crominancia que tengan desviaciones de un cuarto de píxel sin ningún error de redondeo permanecen con las desviaciones de un cuarto de píxel. Los vectores de movimiento de la crominancia con otras desviaciones subpíxel son redondeados a la posición de un píxel o de medio píxel más cercana. En este modo, la velocidad del decodificador puede ser menor que en otros modos, pero la precisión con la que se calculan los valores de píxel de la crominancia es mayor. Así pues, este modo básico reordena las coordenadas de crominancia en posiciones de píxel entero, medio píxel y un cuarto de píxel. Para la interpolación de la crominancia puede utilizarse el filtrado bicúbico o bilineal.
La Figura 18 es una tabla que ilustra este modo básico de redondeo de la crominancia. La primera fila (1810) muestra unos valores del vector de movimiento de la luminancia con una precisión de un cuarto de píxel. La tercera fila (1830) muestra cómo se redondean en el modo básico los correspondientes valores del vector de movimiento de la crominancia de manera que tengan una precisión de píxel entero, de medio píxel, y de un cuarto de píxel. En otras implementaciones, el espacio de la crominancia se redondea a otras resoluciones del espacio de la crominancia.
Habiendo descrito e ilustrado los principios de la invención con referencia a diversas realizaciones, se reconocerá que las diversas realizaciones pueden ser modificadas en su disposición sin apartarse de tales principios. Por ejemplo, los principios y técnicas descritos anteriormente no están limitados a su utilización en un codificador de vídeo y/o un decodificador de vídeo. Por el contrario, pueden aplicarse a cualquier contexto de cálculo en el cual se calcule un valor basándose parcialmente en uno o más valores intermedios o en el cual se utilicen filtros separables en múltiples dimensiones.
Deberá entenderse que los programas, procesos o métodos aquí descritos no se refieren ni se limitan a ningún tipo particular de entorno de cálculo, a menos que se indique lo contrario. Pueden utilizarse diversos tipos de entornos de cálculo, especializados o de propósito general, para efectuar las operaciones según las enseñanzas aquí descritas. Elementos de realizaciones que se muestran en software pueden ser implementados en hardware y viceversa.

Claims (32)

1. Un procedimiento implementado en un entorno informático (300), comprendiendo el procedimiento:
calcular un valor final de píxel (1234) en una posición de fracciones de píxel utilizando múltiples etapas de interpolación espacial basándose al menos parcialmente en uno o varios valores intermedios (1230) en una o más posiciones intermedias de fracciones de píxel,
en el cual el valor final de píxel tiene un margen dinámico final de x bits, en el cual el valor o valores intermedios tienen un margen dinámico final de y bits después de haber sido desplazados en al menos un bit, y en donde y es mayor que x.
2. El procedimiento de la reivindicación 1, en el cual y no es mayor de dieciséis bits.
3. El procedimiento de las reivindicaciones 1 ó 2, en el cual x es ocho bits.
4. El procedimiento de una de las reivindicaciones 1 a 3, en el cual el cálculo incluye aplazar el desplazamiento de bits (1414) desde una etapa temprana de las múltiples etapas de interpolación hasta una etapa tardía de las múltiples etapas de interpolación; y
en el cual el desplazamiento de bits aplazado varía en magnitud para diferentes grados de desplazamiento de fracciones de píxel.
5. El procedimiento de una de las reivindicaciones 1 a 3, en el cual el cálculo incluye aplazar el desplazamiento de bits (1414) desde una etapa temprana de las múltiples etapas de interpolación hasta una etapa tardía de las múltiples etapas de interpolación; y
en el cual el desplazamiento de bits aplazado varía en magnitud dependiendo de unos factores de expansión para las etapas tempranas y tardías de las múltiples etapas de interpolación.
6. El procedimiento de una de las reivindicaciones 1 a 5, en el cual una primera etapa del cálculo da como resultado el valor o valores intermedios; y
en el cual una segunda etapa del cálculo da como resultado el valor final de píxel.
7. El procedimiento de la reivindicación 6, en el cual la primera etapa del cálculo comprende un filtrado vertical (812) y la segunda etapa del cálculo comprende un filtrado horizontal (832).
8. El procedimiento de una de las reivindicaciones 1 a 7, en el cual la posición de fracciones de píxel y las posiciones intermedias de fracciones de píxel están en una imagen de referencia (600).
9. Un procedimiento implementado en un entorno informático (300), comprendiendo el procedimiento:
en una posición de fracciones de píxel, calcular un valor final de píxel utilizando múltiples etapas (1410, 1422, 1430) de interpolación espacial,
en el cual el cálculo incluye efectuar un desplazamiento de bits (1414) en una primera etapa de las múltiples etapas pero aplazando al menos algunos de los desplazamientos de bits desde la primera etapa hasta una segunda etapa de las múltiples etapas para aumentar la precisión del valor final de píxel.
10. El procedimiento de la reivindicación 9, en el cual el desplazamiento de bits aplazado varía en magnitud para diferentes grados de desplazamiento de fracciones de píxel.
11. El procedimiento de la reivindicación 9, en el cual el desplazamiento de bits aplazado varía en magnitud dependiendo de unos factores de expansión introducidos en las etapas primera y segunda de las múltiples etapas de interpolación.
12. El procedimiento de una de las reivindicaciones 9 a 11, en el cual el cálculo comprende además:
en la primera etapa de las múltiples etapas, calcular múltiples valores intermedios en posiciones intermedias de fracciones de píxel, y desplazar bits (1414) en cada uno de los múltiples valores intermedios con una primera magnitud de desplazamiento de uno o más bits; y
en la segunda etapa de las múltiples etapas, calcular el valor final de píxel basándose al menos parcialmente en los múltiples valores intermedios, y desplazar bits (1434) en el valor final de píxel con una segunda magnitud de desplazamiento mayor que el logaritmo en base 2 de un factor de normalización de la segunda etapa de las múltiples etapas de interpolación.
13. El procedimiento de la reivindicación 12, en el cual la segunda magnitud de desplazamiento es mayor que la primera magnitud de desplazamiento.
14. El procedimiento de las reivindicaciones 12 ó 13, en el cual la segunda magnitud de desplazamiento es siete bits.
15. El procedimiento de una de las reivindicaciones 12 a 14, en el cual los múltiples valores intermedios tienen un margen dinámico de valor intermedio superior a un margen dinámico de valor de entrada tanto antes de desplazar los bits con la primera magnitud de desplazamiento como después de desplazar los bits con la primera magnitud de desplazamiento.
16. El procedimiento de una de las reivindicaciones 12 a 15, en el cual el desplazamiento de bits con la primera magnitud de desplazamiento preserva el margen dinámico y a la vez se mantiene dentro de un límite de palabra durante la segunda etapa.
17. El procedimiento de una de las reivindicaciones 12 a 16, en el cual después del desplazamiento de bits con la segunda magnitud de desplazamiento, el valor final de píxel comprende x bits de mantisa y un bit de signo.
18. El procedimiento de una de las reivindicaciones 9 a 11, en el cual el cálculo incluye omitir el bloqueo de uno o más valores intermedios durante la primera etapa de las múltiples etapas; y
en el cual el cálculo incluye además bloquear (1334) el valor final de píxel en la posición de fracciones de píxel durante la segunda etapa de las múltiples etapas.
19. El procedimiento de una de las reivindicaciones 9 a 18, en el cual una o más de las etapas primera y segunda usa un filtro bicúbico aproximado.
20. El procedimiento de una de las reivindicaciones 9 a 19, en el cual la primera etapa incluye un primer redondeo (1514) en una primera dirección y la segunda etapa incluye un segundo redondeo (1534) en una segunda dirección opuesta a la primera dirección; y
en el cual un parámetro de control de redondeo controla las direcciones primera y segunda.
21. El procedimiento de una de las reivindicaciones 9 a 20, en el cual la posición de fracciones de píxel está en una imagen de referencia (600).
22. El procedimiento de las reivindicaciones 8 ó 21, en el cual la posición de fracciones de píxel está localizada con un desplazamiento de medio píxel al menos en una dimensión de la imagen de referencia (600).
23. El procedimiento de las reivindicaciones 8 ó 21, en el cual la posición de fracciones de píxel está localizada con un desplazamiento de un cuarto de píxel o un desplazamiento de tres cuartos de píxel en al menos una dimensión de la imagen de referencia (600).
24. El procedimiento de las reivindicaciones 8 ó 21, en el cual la posición de fracciones de píxel está localizada con un desplazamiento subpíxel en dos dimensiones de la imagen de referencia (600).
25. El procedimiento de las reivindicaciones 8 ó 21, en el cual la posición de fracciones de píxel está con un desplazamiento de un cuarto de píxel, un desplazamiento de medio píxel, o un desplazamiento de tres cuartos de píxel en una primera dimensión de la imagen de referencia (600) y con un desplazamiento de un cuarto de píxel, un desplazamiento de medio píxel, o un desplazamiento de tres cuartos de píxel en una segunda dimensión de la imagen de referencia (600).
26. El procedimiento de una de las reivindicaciones 1 a 25, que comprende además, en cada una de las otras posiciones plurales de fracciones de píxel, repetir el cálculo para un valor en la otra posición de fracciones de píxel.
27. Un medio (320, 340, 380) legible por ordenador que almacena instrucciones ejecutables por ordenador para hacer que el sistema informático efectúe el procedimiento de una de las reivindicaciones 1 a 26 durante una codificación de vídeo (400).
28. Un medio (320, 340, 380) legible por ordenador que almacena instrucciones ejecutables por ordenador para hacer que el sistema informático efectúe el procedimiento de una de las reivindicaciones 1 a 26 durante una decodificación de vídeo (500).
29. Un sistema (300) que comprende:
medios para calcular valores intermedios plurales en posiciones intermedias de fracciones de píxel de una imagen de referencia (600), en el cual cada uno de los valores intermedios plurales se calcula interpolando a lo largo de una primera dimensión entre valores plurales en posiciones de píxel entero de la imagen de referencia (600); y
medios para calcular un valor final de píxel en una posición final de fracciones de píxel de la imagen de referencia (600) interpolando a lo largo de una segunda dimensión entre los valores intermedios plurales en las posiciones intermedias de fracciones de píxel,
en el cual el valor final de píxel tiene un margen dinámico final de x bits, y en el cual cada uno de los valores intermedios plurales ha sido desplazado al menos en un bit hasta un margen dinámico intermedio de más de x bits.
30. El sistema de la reivindicación 29, en el cual el medio para calcular el valor final de píxel incluye un medio para bloquear (1334) el valor final de píxel; y
en el cual el medio para calcular los valores intermedios plurales carece de medios para bloquear los valores intermedios plurales.
31. El sistema de las reivindicaciones 29 ó 30, en el cual el medio para calcular los valores intermedios plurales incluye un medio para desplazar bits (1414) con una primera magnitud de desplazamiento, y en el cual el medio para calcular el valor final de píxel incluye un medio para desplazar bits (1434) con una segunda magnitud de desplazamiento mayor que el logaritmo en base 2 de un factor de normalización para el cálculo del valor final de píxel.
32. El sistema de la reivindicación 31, en el cual la segunda magnitud de desplazamiento supera a la primera magnitud de desplazamiento por una magnitud variable.
ES03007064T 2002-04-10 2003-03-27 Interpolacion subpixel en la estimacion y compesacion del movimiento. Expired - Lifetime ES2254811T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US37186002P 2002-04-10 2002-04-10
US371860P 2002-04-10
US382311P 2003-03-04
US10/382,311 US7620109B2 (en) 2002-04-10 2003-03-04 Sub-pixel interpolation in motion estimation and compensation

Publications (1)

Publication Number Publication Date
ES2254811T3 true ES2254811T3 (es) 2006-06-16

Family

ID=29254462

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03007064T Expired - Lifetime ES2254811T3 (es) 2002-04-10 2003-03-27 Interpolacion subpixel en la estimacion y compesacion del movimiento.

Country Status (8)

Country Link
US (1) US7620109B2 (es)
EP (1) EP1353514B1 (es)
JP (1) JP2003333599A (es)
KR (1) KR100681971B1 (es)
AT (1) ATE312479T1 (es)
DE (1) DE60302602T2 (es)
ES (1) ES2254811T3 (es)
HK (1) HK1059856A1 (es)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050105621A1 (en) * 2003-11-04 2005-05-19 Ju Chi-Cheng Apparatus capable of performing both block-matching motion compensation and global motion compensation and method thereof
NO319629B1 (no) 2003-11-28 2005-09-05 Tandberg Telecom As Fremgangsmate for korrigering av interpolerte pikselverdier
EP1747677A2 (en) * 2004-05-04 2007-01-31 Qualcomm, Incorporated Method and apparatus to construct bi-directional predicted frames for temporal scalability
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
US7379076B2 (en) * 2004-07-15 2008-05-27 Microsoft Corporation Using pixel homogeneity to improve the clarity of images
JP4284265B2 (ja) * 2004-11-02 2009-06-24 株式会社東芝 動画像符号化装置、動画像符号化方法、動画像復号化装置および動画像復号化方法
US7751478B2 (en) * 2005-01-21 2010-07-06 Seiko Epson Corporation Prediction intra-mode selection in an encoder
JP4736456B2 (ja) * 2005-02-15 2011-07-27 株式会社日立製作所 走査線補間装置、映像表示装置、映像信号処理装置
JP2008544598A (ja) 2005-06-10 2008-12-04 エヌエックスピー ビー ヴィ 交互の上向き及び下向き動きベクトル
US20060285597A1 (en) * 2005-06-20 2006-12-21 Flextronics International Usa, Inc. Reusing interpolated values in advanced video encoders
US7830961B2 (en) * 2005-06-21 2010-11-09 Seiko Epson Corporation Motion estimation and inter-mode prediction
MX2008001286A (es) * 2005-07-28 2008-03-25 Thomson Licensing Metodo y aparato para la optimizacion del proceso de movimiento de video con el uso de una cache jerarquica.
US20070110159A1 (en) * 2005-08-15 2007-05-17 Nokia Corporation Method and apparatus for sub-pixel interpolation for updating operation in video coding
US9479794B2 (en) 2005-11-10 2016-10-25 Freescale Semiconductor, Inc. Resource efficient video processing via prediction error computational adjustments
US7843995B2 (en) * 2005-12-19 2010-11-30 Seiko Epson Corporation Temporal and spatial analysis of a video macroblock
US8170102B2 (en) * 2005-12-19 2012-05-01 Seiko Epson Corporation Macroblock homogeneity analysis and inter mode prediction
WO2007116551A1 (ja) * 2006-03-30 2007-10-18 Kabushiki Kaisha Toshiba 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
US8208553B2 (en) * 2006-05-04 2012-06-26 Altera Corporation Methods and apparatus for quarter-pel refinement in a SIMD array processor
JP4682384B2 (ja) * 2006-07-11 2011-05-11 株式会社メガチップス 1/4画素輝度用動き予測機構、組合せ輝度用動き予測機構、及び組合せ輝度・色差用動き予測機構
US9883202B2 (en) 2006-10-06 2018-01-30 Nxp Usa, Inc. Scaling video processing complexity based on power savings factor
KR100899730B1 (ko) * 2006-10-20 2009-05-27 삼성전자주식회사 영상 인코더 및 디코더에서의 색차 신호 보간 방법
KR101369746B1 (ko) * 2007-01-22 2014-03-07 삼성전자주식회사 적응적 보간 필터를 이용한 영상 부호화, 복호화 방법 및장치
US8275041B2 (en) * 2007-04-09 2012-09-25 Nokia Corporation High accuracy motion vectors for video coding with low encoder and decoder complexity
KR100909390B1 (ko) * 2007-09-18 2009-07-24 한국과학기술원 고속 움직임 보상 장치 및 방법
JP4461165B2 (ja) * 2007-09-26 2010-05-12 株式会社東芝 画像処理装置、方法およびプログラム
US8831086B2 (en) 2008-04-10 2014-09-09 Qualcomm Incorporated Prediction techniques for interpolation in video coding
US20090257499A1 (en) * 2008-04-10 2009-10-15 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US8971412B2 (en) * 2008-04-10 2015-03-03 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US8804831B2 (en) * 2008-04-10 2014-08-12 Qualcomm Incorporated Offsets at sub-pixel resolution
US9967590B2 (en) 2008-04-10 2018-05-08 Qualcomm Incorporated Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter
TWI470578B (zh) * 2008-06-26 2015-01-21 Mstar Semiconductor Inc 計算用於待插補影像區塊之目標移動向量的影像處理方法及其相關裝置
US20100026897A1 (en) 2008-07-30 2010-02-04 Cinnafilm, Inc. Method, Apparatus, and Computer Software for Modifying Moving Images Via Motion Compensation Vectors, Degrain/Denoise, and Superresolution
US9078007B2 (en) * 2008-10-03 2015-07-07 Qualcomm Incorporated Digital video coding with interpolation filters and offsets
TW201101800A (en) * 2009-06-22 2011-01-01 Novatek Microelectronics Corp Image processing apparatus and method thereof
JP2013232974A (ja) * 2010-01-13 2013-11-14 Toshiba Corp 動画像符号化装置および復号装置
JP2014060744A (ja) * 2010-01-13 2014-04-03 Toshiba Corp 動画像符号化装置および復号装置
JP5323252B2 (ja) 2010-03-30 2013-10-23 株式会社東芝 動画像符号化方法、復号化方法、符号化装置および復号化装置
US9219921B2 (en) * 2010-04-12 2015-12-22 Qualcomm Incorporated Mixed tap filters
US20110314253A1 (en) * 2010-06-22 2011-12-22 Jacob Yaakov Jeffrey Allan Alon System, data structure, and method for transposing multi-dimensional data to switch between vertical and horizontal filters
TWI521950B (zh) 2010-07-21 2016-02-11 財團法人工業技術研究院 用於視訊處理之移動估計之方法及裝置
MX2013006131A (es) * 2010-12-07 2013-06-28 Sony Corp Dispositivo de procesamiento de imagenes y metodo de procesamiento de imagenes.
CA2815817C (en) * 2010-12-07 2019-01-15 Sony Corporation Image processing device and image processing method
EP4250732B1 (en) 2011-01-07 2024-03-20 Nokia Technologies Oy Motion prediction in video coding
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
KR101662654B1 (ko) 2011-06-24 2016-10-05 가부시키가이샤 엔.티.티.도코모 모션 보상 예측을 위한 방법 및 장치
US9055304B2 (en) * 2011-07-01 2015-06-09 Qualcomm Incorporated Reduced resolution pixel interpolation
US8842939B2 (en) * 2011-08-23 2014-09-23 National Taiwan University Direction-adaptive image upsampling system and method using double interpolation
FR2980068A1 (fr) * 2011-09-13 2013-03-15 Thomson Licensing Procede de codage et de reconstruction d'un bloc de pixels et dispositifs correspondants
CN107979757B (zh) * 2011-09-14 2021-12-21 三星电子株式会社 对视频进行解码的设备和对视频进行编码的设备
KR20130050149A (ko) 2011-11-07 2013-05-15 오수미 인터 모드에서의 예측 블록 생성 방법
JP2014082541A (ja) * 2012-10-12 2014-05-08 National Institute Of Information & Communication Technology 互いに類似した情報を含む複数画像のデータサイズを低減する方法、プログラムおよび装置
US9185437B2 (en) 2012-11-01 2015-11-10 Microsoft Technology Licensing, Llc Video data
WO2014078068A1 (en) * 2012-11-13 2014-05-22 Intel Corporation Content adaptive transform coding for next generation video
TWI597968B (zh) 2012-12-21 2017-09-01 杜比實驗室特許公司 在高位元深度視訊的可適性編碼中,高精度升取樣
US9008363B1 (en) 2013-01-02 2015-04-14 Google Inc. System and method for computing optical flow
CN104346770A (zh) 2013-07-24 2015-02-11 联咏科技股份有限公司 数据插补方法及数据插补系统
TWI602144B (zh) * 2013-10-02 2017-10-11 國立成功大學 包裝彩色圖框及原始景深圖框之方法、裝置及系統
US9774881B2 (en) * 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US10225569B2 (en) * 2014-03-31 2019-03-05 Megachips Corporation Data storage control apparatus and data storage control method
US10462480B2 (en) 2014-12-31 2019-10-29 Microsoft Technology Licensing, Llc Computationally efficient motion estimation
US10291932B2 (en) 2015-03-06 2019-05-14 Qualcomm Incorporated Method and apparatus for low complexity quarter pel generation in motion search
US20160345018A1 (en) * 2015-05-19 2016-11-24 Microsoft Technology Licensing, Llc Video encoding and decoding
US9811892B1 (en) 2016-06-30 2017-11-07 Apple Inc. Separating sub-band image data for processing and merging with unprocessed image data
CN107959855B (zh) 2016-10-16 2020-02-14 华为技术有限公司 运动补偿预测方法和设备
US10235763B2 (en) 2016-12-01 2019-03-19 Google Llc Determining optical flow
US10499078B1 (en) * 2017-02-07 2019-12-03 Google Llc Implicit motion compensation filter selection
CN108833916B (zh) * 2018-06-20 2021-09-24 腾讯科技(深圳)有限公司 视频编码、解码方法、装置、存储介质和计算机设备
KR20220066974A (ko) * 2019-09-30 2022-05-24 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 코딩을 위한 인터 예측 장치 및 방법을 위한 보간 필터
CN113099231B (zh) * 2021-03-23 2022-12-20 北京百度网讯科技有限公司 确定亚像素插值位置的方法、装置、电子设备和存储介质

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60158786A (ja) 1984-01-30 1985-08-20 Kokusai Denshin Denwa Co Ltd <Kdd> 画像動き量検出方式
US4661849A (en) 1985-06-03 1987-04-28 Pictel Corporation Method and apparatus for providing motion estimation signals for communicating image sequences
US4661853A (en) 1985-11-01 1987-04-28 Rca Corporation Interfield image motion detector for video signals
EP0294958B1 (en) 1987-06-09 1995-08-23 Sony Corporation Motion compensated interpolation of digital television images
EP0294962B1 (en) 1987-06-09 1995-07-19 Sony Corporation Motion vector estimation in television images
JP2712645B2 (ja) 1989-10-14 1998-02-16 ソニー株式会社 動きベクトル伝送方法及びその装置並びに動きベクトル復号化方法及びその装置
EP0713340B1 (en) 1989-10-14 2001-08-22 Sony Corporation Video signal coding/decoding method and apparatus
US5103306A (en) 1990-03-28 1992-04-07 Transitions Research Corporation Digital image compression employing a resolution gradient
DE69123705T2 (de) 1990-10-31 1997-04-10 Victor Company Of Japan Verfahren zur Kompression von bewegten Bildsignalen nach dem Zeilensprungverfahren
HU9300005D0 (en) 1991-05-24 1993-04-28 British Broadcasting Corp Method for processing video picture
US5467136A (en) 1991-05-31 1995-11-14 Kabushiki Kaisha Toshiba Video decoder for determining a motion vector from a scaled vector and a difference vector
US5317397A (en) 1991-05-31 1994-05-31 Kabushiki Kaisha Toshiba Predictive coding using spatial-temporal filtering and plural motion vectors
US5428396A (en) 1991-08-03 1995-06-27 Sony Corporation Variable length coding/decoding method for motion vectors
JPH0541862A (ja) 1991-08-03 1993-02-19 Sony Corp 動きベクトルの可変長符号化方式
CA2079434A1 (en) 1991-09-30 1993-03-31 Derek Andrew Motion vector estimation, motion picture encoding and storage
JP2962012B2 (ja) 1991-11-08 1999-10-12 日本ビクター株式会社 動画像符号化装置及びその復号装置
GB2262854B (en) * 1991-12-24 1995-05-24 Sony Broadcast & Communication Image processing apparatus
US5594813A (en) 1992-02-19 1997-01-14 Integrated Information Technology, Inc. Programmable architecture and methods for motion estimation
US6441842B1 (en) 1992-02-19 2002-08-27 8×8, Inc. Video compression/decompression processing and processors
US6226327B1 (en) 1992-06-29 2001-05-01 Sony Corporation Video coding method and apparatus which select between frame-based and field-based predictive modes
ES2431289T3 (es) 1993-03-24 2013-11-25 Sony Corporation Método de decodificación de señal de imagen y aparato asociado
US5442400A (en) 1993-04-29 1995-08-15 Rca Thomson Licensing Corporation Error concealment apparatus for MPEG-like video data
JPH06343172A (ja) 1993-06-01 1994-12-13 Matsushita Electric Ind Co Ltd 動きベクトル検出方法及び動きベクトル符号化方法
US5477272A (en) 1993-07-22 1995-12-19 Gte Laboratories Incorporated Variable-block size multi-resolution motion estimation scheme for pyramid coding
TW283289B (es) 1994-04-11 1996-08-11 Gen Instrument Corp
US5594504A (en) 1994-07-06 1997-01-14 Lucent Technologies Inc. Predictive video coding using a motion vector updating routine
US5684538A (en) 1994-08-18 1997-11-04 Hitachi, Ltd. System and method for performing video coding/decoding using motion compensation
US5623311A (en) 1994-10-28 1997-04-22 Matsushita Electric Corporation Of America MPEG video decoder having a high bandwidth memory
EP0710033A3 (en) 1994-10-28 1999-06-09 Matsushita Electric Industrial Co., Ltd. MPEG video decoder having a high bandwidth memory
GB2301971B (en) 1995-06-06 1999-10-06 Sony Uk Ltd Video compression
GB2301972B (en) 1995-06-06 1999-10-20 Sony Uk Ltd Video compression
US5796855A (en) 1995-10-05 1998-08-18 Microsoft Corporation Polygon block matching method
US5929940A (en) 1995-10-25 1999-07-27 U.S. Philips Corporation Method and device for estimating motion between images, system for encoding segmented images
US5991463A (en) 1995-11-08 1999-11-23 Genesis Microchip Inc. Source data interpolation method and apparatus
JP2798035B2 (ja) 1996-01-17 1998-09-17 日本電気株式会社 適応動きベクトル補間による動き補償フレーム間予測方法
US5787203A (en) 1996-01-19 1998-07-28 Microsoft Corporation Method and system for filtering compressed video images
US5692063A (en) 1996-01-19 1997-11-25 Microsoft Corporation Method and system for unrestricted motion estimation for video
US5799113A (en) 1996-01-19 1998-08-25 Microsoft Corporation Method for expanding contracted video images
US6957350B1 (en) 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5982438A (en) 1996-03-22 1999-11-09 Microsoft Corporation Overlapped motion compensation for object coding
US5847776A (en) 1996-06-24 1998-12-08 Vdonet Corporation Ltd. Method for entropy constrained motion estimation and coding of motion vectors with increased search range
US6233017B1 (en) 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US6130963A (en) 1996-11-22 2000-10-10 C-Cube Semiconductor Ii, Inc. Memory efficient decoding of video frame chroma
US6377628B1 (en) 1996-12-18 2002-04-23 Thomson Licensing S.A. System for maintaining datastream continuity in the presence of disrupted source data
US6201927B1 (en) 1997-02-18 2001-03-13 Mary Lafuze Comer Trick play reproduction of MPEG encoded signals
US5991447A (en) 1997-03-07 1999-11-23 General Instrument Corporation Prediction and coding of bi-directionally predicted video object planes for interlaced digital video
US6005980A (en) 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5844613A (en) 1997-03-17 1998-12-01 Microsoft Corporation Global motion estimator for motion video signal encoding
US6404813B1 (en) 1997-03-27 2002-06-11 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
US6661470B1 (en) 1997-03-31 2003-12-09 Matsushita Electric Industrial Co., Ltd. Moving picture display method and apparatus
US5973755A (en) 1997-04-04 1999-10-26 Microsoft Corporation Video encoder and decoder using bilinear motion compensation and lapped orthogonal transforms
US6067322A (en) 1997-06-04 2000-05-23 Microsoft Corporation Half pixel motion estimation in motion video signal encoding
US6574371B2 (en) 1997-06-09 2003-06-03 Hitachi, Ltd. Image decoding method
EP1056294B1 (en) 1997-06-09 2002-10-02 Hitachi, Ltd. Image sequence coding method
JPH1169345A (ja) 1997-06-11 1999-03-09 Fujitsu Ltd フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法
JP2897763B2 (ja) 1997-07-28 1999-05-31 日本ビクター株式会社 動き補償符号化装置、復号化装置、符号化方法及び復号化方法
US6310918B1 (en) 1997-07-31 2001-10-30 Lsi Logic Corporation System and method for motion vector extraction and computation meeting 2-frame store and letterboxing requirements
US6266091B1 (en) 1997-07-31 2001-07-24 Lsi Logic Corporation System and method for low delay mode operation video decoding
FR2766946B1 (fr) 1997-08-04 2000-08-11 Thomson Multimedia Sa Procede et dispositif de pretraitement pour estimation de mouvement
US6281942B1 (en) 1997-08-11 2001-08-28 Microsoft Corporation Spatial and temporal filtering mechanism for digital motion video signals
US6339656B1 (en) 1997-12-25 2002-01-15 Matsushita Electric Industrial Co., Ltd. Moving picture encoding decoding processing apparatus
US6122017A (en) 1998-01-22 2000-09-19 Hewlett-Packard Company Method for providing motion-compensated multi-field enhancement of still images from video
JP3888597B2 (ja) 1998-06-24 2007-03-07 日本ビクター株式会社 動き補償符号化装置、及び動き補償符号化復号化方法
JP4026238B2 (ja) 1998-07-23 2007-12-26 ソニー株式会社 画像復号装置及び画像復号方法
US6219070B1 (en) 1998-09-30 2001-04-17 Webtv Networks, Inc. System and method for adjusting pixel parameters by subpixel positioning
GB2343579A (en) 1998-11-07 2000-05-10 Ibm Hybrid-linear-bicubic interpolation method and apparatus
US6418166B1 (en) 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6983018B1 (en) 1998-11-30 2006-01-03 Microsoft Corporation Efficient motion vector coding for video compression
US6496608B1 (en) 1999-01-15 2002-12-17 Picsurf, Inc. Image data interpolation system and method
US6259741B1 (en) 1999-02-18 2001-07-10 General Instrument Corporation Method of architecture for converting MPEG-2 4:2:2-profile bitstreams into main-profile bitstreams
US6320593B1 (en) 1999-04-20 2001-11-20 Agilent Technologies, Inc. Method of fast bi-cubic interpolation of image information
US6968008B1 (en) 1999-07-27 2005-11-22 Sharp Laboratories Of America, Inc. Methods for motion estimation with adaptive motion accuracy
US6647061B1 (en) 2000-06-09 2003-11-11 General Instrument Corporation Video size conversion and transcoding from MPEG-2 to MPEG-4
US7206453B2 (en) 2001-05-03 2007-04-17 Microsoft Corporation Dynamic filtering for lossy compression
US6950469B2 (en) 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US20030095603A1 (en) 2001-11-16 2003-05-22 Koninklijke Philips Electronics N.V. Reduced-complexity video decoding using larger pixel-grid motion compensation
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
US7110459B2 (en) 2002-04-10 2006-09-19 Microsoft Corporation Approximate bicubic filter
US7277587B2 (en) 2002-04-26 2007-10-02 Sharp Laboratories Of America, Inc. System and method for lossless video coding
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
KR100586882B1 (ko) 2004-04-13 2006-06-08 삼성전자주식회사 모션 스케일러빌리티를 지원하는 코딩 방법 및 장치

Also Published As

Publication number Publication date
JP2003333599A (ja) 2003-11-21
DE60302602T2 (de) 2006-06-29
US20030202607A1 (en) 2003-10-30
EP1353514B1 (en) 2005-12-07
EP1353514A3 (en) 2003-10-29
KR100681971B1 (ko) 2007-02-15
EP1353514A2 (en) 2003-10-15
ATE312479T1 (de) 2005-12-15
HK1059856A1 (en) 2004-07-16
US7620109B2 (en) 2009-11-17
DE60302602D1 (de) 2006-01-12
KR20030081116A (ko) 2003-10-17

Similar Documents

Publication Publication Date Title
ES2254811T3 (es) Interpolacion subpixel en la estimacion y compesacion del movimiento.
ES2266665T3 (es) Control del redondeo para la interpolacion multietapa.
ES2278087T3 (es) Filtro bicubico aproximado.
ES2269850T3 (es) Redondeos del vector de movimiento de crominancia.
KR101354741B1 (ko) 다중 해상도 비디오 코딩 및 디코딩을 위한 리샘플링 및 픽처 크기조정 동작
US10721481B2 (en) Method and apparatus for motion compensation prediction
ES2275037T3 (es) Procedimiento de codificacion de video con compensacion de fundido.
JP5323252B2 (ja) 動画像符号化方法、復号化方法、符号化装置および復号化装置