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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F17—STORING OR DISTRIBUTING GASES OR LIQUIDS
- F17C—VESSELS 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/00—Pressure vessels, e.g. gas cylinder, gas tank, replaceable cartridge
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F17—STORING OR DISTRIBUTING GASES OR LIQUIDS
- F17C—VESSELS 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/00—Vessel construction, in particular mounting arrangements, attachments or identifications means
- F17C2205/01—Mounting arrangements
- F17C2205/0153—Details of mounting arrangements
- F17C2205/0188—Hanging up devices
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F17—STORING OR DISTRIBUTING GASES OR LIQUIDS
- F17C—VESSELS 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/00—Applications
- F17C2270/01—Applications for fluid transport or storage
- F17C2270/0134—Applications 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.
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.
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.
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.
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.
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.
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.
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))
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.
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.
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.
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.
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.
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.
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.
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).
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:
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.
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.
{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:
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:
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).
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.
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.
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.
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)
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)
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 | 삼성전자주식회사 | 모션 스케일러빌리티를 지원하는 코딩 방법 및 장치 |
-
2003
- 2003-03-04 US US10/382,311 patent/US7620109B2/en active Active
- 2003-03-27 AT AT03007064T patent/ATE312479T1/de not_active IP Right Cessation
- 2003-03-27 EP EP03007064A patent/EP1353514B1/en not_active Expired - Lifetime
- 2003-03-27 DE DE60302602T patent/DE60302602T2/de not_active Expired - Lifetime
- 2003-03-27 ES ES03007064T patent/ES2254811T3/es not_active Expired - Lifetime
- 2003-04-09 KR KR1020030022415A patent/KR100681971B1/ko active IP Right Grant
- 2003-04-10 JP JP2003107081A patent/JP2003333599A/ja active Pending
-
2004
- 2004-04-15 HK HK04102649A patent/HK1059856A1/xx not_active IP Right Cessation
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) | 動画像符号化方法、復号化方法、符号化装置および復号化装置 |