ES2266665T3 - Control del redondeo para la interpolacion multietapa. - Google Patents
Control del redondeo para la interpolacion multietapa. Download PDFInfo
- Publication number
- ES2266665T3 ES2266665T3 ES03007062T ES03007062T ES2266665T3 ES 2266665 T3 ES2266665 T3 ES 2266665T3 ES 03007062 T ES03007062 T ES 03007062T ES 03007062 T ES03007062 T ES 03007062T ES 2266665 T3 ES2266665 T3 ES 2266665T3
- Authority
- ES
- Spain
- Prior art keywords
- pixel
- image
- rounding
- value
- values
- 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
-
- G—PHYSICS
- G02—OPTICS
- G02C—SPECTACLES; SUNGLASSES OR GOGGLES INSOFAR AS THEY HAVE THE SAME FEATURES AS SPECTACLES; CONTACT LENSES
- G02C9/00—Attaching auxiliary optical parts
- G02C9/02—Attaching auxiliary optical parts by hinging
-
- 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
-
- G—PHYSICS
- G02—OPTICS
- G02C—SPECTACLES; SUNGLASSES OR GOGGLES INSOFAR AS THEY HAVE THE SAME FEATURES AS SPECTACLES; CONTACT LENSES
- G02C5/00—Constructions of non-optical parts
- G02C5/02—Bridges; Browbars; Intermediate bars
-
- G—PHYSICS
- G02—OPTICS
- G02C—SPECTACLES; SUNGLASSES OR GOGGLES INSOFAR AS THEY HAVE THE SAME FEATURES AS SPECTACLES; CONTACT LENSES
- G02C2200/00—Generic mechanical aspects applicable to one or more of the groups G02C1/00 - G02C5/00 and G02C9/00 - G02C13/00 and their subgroups
- G02C2200/06—Locking elements
Landscapes
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- General Physics & Mathematics (AREA)
- Ophthalmology & Optometry (AREA)
- Optics & Photonics (AREA)
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
- Studio Devices (AREA)
Abstract
Un procedimiento que comprende: calcular un valor en una posición de muestra de una única imagen de video de referencia (600) usando múltiples etapas (1510, 1530, 1540) de interpolación para determinar el valor, en el cual las múltiples etapas (1510, 1530, 1540) incluyen un control de redondeo por etapas alternadas.
Description
Control del redondeo para la interpolación
multietapa.
Se describen técnicas y herramientas para el
control del redondeo en la interpolación multietapa. Por ejemplo,
un codificador y decodificador de vídeo utiliza control de redondeo
por etapas alternadas al calcular valores de píxel en imágenes de
vídeo de referencia por interpolación multietapa.
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 Vídeo, Versión 8 ("WMV8"),
de Microsoft Corporation, incluye un codificador de vídeo y un
decodificador de vídeo. El codificador WMV8 utiliza la compresión
espacial y temporal, y el decodificador WMV8 utiliza la
descompresión espacial y temporal. La compresión temporal del
codificador WMV8 usa una codificación de predicción por
compensación del movimiento, a base de bloques, seguida por una
codificación de la transformación del error residual.
En el WMV8, una imagen está representada por
tres planos de píxeles: un plano de luminancia (Y) de los valores
de luminancia de los píxeles y dos planos de crominancia (U,V) de
los valores de crominancia de los píxeles. La resolución del plano
Y es el doble de la resolución de los planos U y V horizontalmente y
verticalmente. Así pues, una imagen de 320 píxeles x 240 píxeles
tiene un plano Y de 320 píxeles x 240 píxeles y unos planos U y V
de 160 píxeles x 120 píxeles.
El codificador WMV8 divide una imagen predicha
en 8x8 bloques de píxeles. Un grupo de cuatro bloques de luminancia
de 8x8 y dos bloques de crominancia cosituados de 8x8 (uno para el
plano de crominancia U, y otro para el plano de crominancia V)
forman un macrobloque de 16x16. Por lo tanto, cada macrobloque de
16x16 incluye cuatro bloques de luminancia de 8x8 y dos bloques de
crominancia de 8x8.
En un macrobloque de una imagen predicha, el
codificador WMV8 realiza la estimación del movimiento. La estimación
del movimiento aproxima el movimiento de un macrobloque de una
imagen predicha buscando el macrobloque de la imagen predicha y
haciéndolo coincidir con un macrobloque de una imagen de referencia.
En la Figura 1, por ejemplo, el codificador WMV8 calcula un vector
de movimiento para un macrobloque (115) de la imagen predicha
(110). Para calcular el vector de movimiento, el codificador busca
en un área de búsqueda (135) de una imagen de referencia (130).
Dentro del área de búsqueda (135), el codificador compara los
valores de luminancia del macrobloque (115) de la imagen predicha
(110) con los valores de luminancia de los diversos bloques
candidatos de la imagen de referencia (130) para encontrar una
buena coincidencia. El codificador WMV8 puede conmutar la precisión
del vector de movimiento, y puede usar un margen de búsqueda y unos
vectores de movimiento con una resolución horizontal de uno, medio
o cuarto de píxel y una resolución vertical de uno o medio píxel.
Con vectores de movimiento de precisión subpíxel, el codificador
WMV8 puede aproximar el movimiento de una secuencia de vídeo al
nivel de subpíxel.
Durante la compensación de movimiento, el
codificador WMV8 usa los vectores de movimiento para los
macrobloques de la imagen predicha con objeto de determinar los
predictores para los macrobloques procedentes de la imagen de
referencia. Para cada uno de los macrobloques con predicción de
movimiento, el codificador WMV8 calcula la diferencia (denominada
residuo o error) entre el macrobloque original y su predictor. El
codificador WMV8 divide el residuo en bloques y comprime con
pérdidas los bloques residuales. Para reconstruir los macrobloques
con predicción de movimiento de la imagen predicha, el codificador
WMV8 descomprime los residuos y los suma a los predictores para los
macrobloques.
El decodificador WMV8 también usa los vectores
de movimiento en los macrobloques de la imagen predicha para
determinar los predictores para los macrobloques a partir de la
imagen de referencia. Para reconstruir los macrobloques, con
movimiento predicho, de la imagen predicha, el decodificador WMV8
descomprime los residuales y los añade a los predoctores para los
macrobloques.
Durante la estimación o compensación del
movimiento, cuando un vector de movimiento tiene precisión subpíxel,
(es decir, medio píxel o un cuarto de píxel), el codificador o
decodificador WMV8 debe determinar los valores de píxel en las
posiciones subpíxel de la imagen de referencia. El codificador o
decodificador WMV8 genera valores para las posiciones subpíxel
usando filtros de interpolación. La Figura 2 ilustra unas posiciones
subpíxel de muestra H_{0}, H_{1}, H_{2}, cuyos valores están
calculados por interpolación de los valores enteros a, b, c, …, p
de los píxeles.
Cuando se opera con una precisión de medio píxel
en los vectores de movimiento, los filtros de interpolación que se
usan para los valores de luminancia del pixel en las tres diferentes
posiciones de medio pixel H_{0}, H_{1}, H_{2} son:
(1),H_{0} = (f
+ g + R_{2}) >>
1
(2),H_{1} = (f
+ g + R_{2}) >>
1
y
(3),
\hskip1cmH_{2} = (f + g + j + k + R_{1}) >> 2
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:
(4),H_{0} = (-
e + 9f + 9g - h + 8) >>
4
(5),H_{1} = (-
b + 9f + 9j - n + 8) >>
4
y
(6).H_{2} = (-
t_{0} + 9t_{1} + 9t_{2} - t_{3} + 8) >>
4
en donde t_{0}, t_{1,} t_{2}
y t_{3} se calculan como
sigue:
(7),t_{0} = (-
a + 9b + 9c - d + 8) >>
4
(8),t_{1} = (-
e + 9f + 9g - h + 8) >>
4
(9),t_{2} = (-
i + 9j + 9k - l + 8) >>
4
y
(10).t_{3} =
(- m + 9n + 9o - p + 8) >>
4
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.
La Solicitud de Patente Europea nº EP 0 884 912
A2 describe codificadores y decodificadores de vídeo que utilizan
tanto imágenes P+ (que redondean valores de medio entero desde cero)
como imágenes P- (que redondean valores de medio entero hacia cero)
para cancelar los errores de redondeo y evitar la acumulación de
errores de redondeo. 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 entero según un
algoritmo de redondeo especificado por un controlador de cálculo.
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 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 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 diversas técnicas y herramientas para el control de
redondeo en la interpolación multietapa. En aplicaciones de
codificación y decodificación de vídeo, por ejemplo, utiliza el
control de redondeo por etapas alternadas cuando calcula los valores
de píxel en imágenes de vídeo de referencia mediante interpolación
multietapa. El uso de control de redondeo por etapas alternadas
reduce la acumulación del error de redondeo por interpolación
multietapa entre una y otra imagen. Esto puede mejorar las
prestaciones totales al reducir los artefactos perceptibles en
ciertos tipos de secuencias de vídeo (por ejemplo, baja calidad,
secuencias de vídeo de bajo bitrato arrastradas por Internet).
Un componente tal como un codificador u
decodificador de vídeo calcula valores usando múltiples etapas de
interpolación con control del redondeo por etapas alternadas. Por
ejemplo, en una primera etapa, el componente redondea un primer
valor marginal al entero más próximo en una primera dirección y, en
una segunda etapa, el componente redondea un segundo valor marginal
al entero más próximo en una segunda dirección opuesta a la primera
dirección. En algunos casos, un parámetro de control de redondeo
controla las direcciones primera y segunda. El propio parámetro de
control de redondeo puede alternar (por ejemplo, entre 0 y 1) sobre
una base de imagen a imagen o sobre otra base.
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 aplicació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.
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 Vídeo 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.
particular.
Si la imagen (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}
:
(14)(- 7e +
105f + 35g - 5h) >>
7
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.
(- 7e + 105f + 35g - 5h) >>
7
\hskip1.2cm= (- 3,5e + 52,5f + 17,5g - 2,5h) >> 6
(15)\approx (-
4e + 53f + 18g - 3h) >>
6
En muchos casos, el uso de un filtro bicúbico
puro resulta en una pérdida de bits de precisión en la interpolación
multietapa, por lo que el factor de normalización para el filtro
bicúbico aproximado se reduce como mínimo a la mitad (es decir, el
desplazamiento a la derecha disminuye en 1 bit o más). Los
coeficientes de filtro elegidos para el filtro bicúbico aproximado
de la ecuación (15) están basados en redondear el filtro bicúbico
verdadero, después de haber tenido en cuenta el comportamiento del
dominio frecuencial (por ejemplo, para preservar la información de
alta frecuencia) y el comportamiento empírico (por ejemplo, para
alcanzar la menor distorsión dado un cierto bitrato).
Específicamente, los filtros F_{2} y F_{3} incluyen aún cuatro
coeficientes de filtrado. (En general, el uso de menos coeficientes
de filtrado en un filtro acelera la implementación, pero deben
usarse suficientes coeficientes de filtrado para solucionar el ruido
de un píxel adyacente). Los valores del filtro se ajustan para que
sumen 64, lo cual facilita la implementación usando aritmética de 16
bits y a la vez lo aproxima al filtro bicúbico de mayor resolución.
Un filtro que funciona sustancialmente como un filtro bicúbico
puro, pero tiene menos soporte y/o menor resolución, se denomina
filtro bicúbico "aproximado". Un modo de medir objetivamente
si el filtro funciona sustancialmente como un filtro bicúbico puro
consiste en comprobar si el filtro bicúbico aproximado correlaciona
bien (es decir, dentro de un umbral definido) con el filtro
bicúbico puro. En una implementación, la correlación se mide por el
coseno del ángulo formado por los vectores para los filtros (que
deseablemente será lo más próximo a 1 que sea posible), y el umbral
es 0,95. También pueden usarse otras medidas objetivas o
subjetivas, otras medidas por correlación, y/u otros umbrales. Por
ejemplo, pueden seleccionarse los coeficientes de filtrado del
filtro bicúbico aproximado de tal modo que su suma tenga algún otro
valor que facilite una transformación de Fourier eficiente u otra
manipulación matemática.
Según se describe con mayor detalle a
continuación, la Figura 7 representa generalmente las localizaciones
de píxel entero con los valores de píxel que se utilizan para
calcular píxeles interpolados en cada uno de los casos
correspondientes a los filtros bicúbicos tratados en las ecuaciones
(11)-(13). P representa la posición subpíxel para la cual se
calcula un valor de píxel. I_{1}, I_{2}, I_{3} e I_{4}
representan posiciones de píxel entero en la dimensión de la
interpolación. La Figura 7 muestra una interpolación horizontal,
pero las mismas operaciones y colocación de posiciones son
aplicables a la interpolación vertical.
En realizaciones alternativas, un codificador y
un decodificador usan filtros de interpolación distintos y/o
adicionales. Por ejemplo, el codificador y el decodificador usan un
filtro bilineal (es decir, de 2 vías) para interpolar el valor. Por
ejemplo, con referencia a las posiciones subpíxel de la Figura 6,
los filtros de interpolación usados para determinar los valores de
P_{1}, P_{5} y P_{7} pueden ser los filtros ilustrados en las
ecuaciones (1)-(3).
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:
(16),F_{1}:(-
1I_{1} + 9I_{2} + 9I_{3} - 1I_{4} + 8 - r) >>
4
(17),
\hskip0.4cmF_{2}:(- 4I_{1} + 53I_{2} + 18I_{3} - 3I_{4} + 32 - r) >> 6
y
(18).
\hskip0.4cmF_{3}:(- 3I_{1} + 18I_{2} + 53I_{3} - 4I_{4} + 32 - r) >> 6
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}:
(20),P_{1} =
(- 1e + 9f + 9g - 1h + 8 - r) >>
4
y
(21).P_{5} =
(- 1b + 9f + 9j - 1n + 8 - r) >>
4
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}:
(22),P_{0} =
(- 4e + 53f + 18g - 3h + 32 - r) >>
6
y
(23).P_{2} =
(- 4b + 53f + 18j - 3n + 32 - r) >>
6
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}:
(24).P_{8} =
(- 3b + 18f + 53j - 4n + 32 - r) >>
6
\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:
(25),(S
+ R_{v}) >>
desplazamientoV
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).
(814).
El desplazamiento a la derecha provoca
potencialmente una pérdida de resolución, por lo que se aplaza al
menos una parte del desplazamiento hasta unas etapas de
interpolación posteriores. El valor del desplazamiento a la
derecha, desplazamientoV, depende de la posición subpíxel que se
esté interpolando. Específicamente, desplazamientoV = {5,3,3,1}
para P_{3}, P_{4}, P_{6} y P_{7}. La magnitud del
desplazamiento es inferior a la requerida para compensar la
expansión debida al valor de los coeficientes de filtrado de la
primera etapa (por ejemplo, el desplazamiento para el filtro
bicúbico aproximado es inferior a 6 bits), pero suficiente para
garantizar que los resultados intermedios del subsiguiente filtrado
se mantengan dentro del margen dinámico de los valores intermedios
(por ejemplo, 65.536 valores para las palabras de 16 bits).
Comparado con el desplazamiento completo, este desplazamiento
acortado mantiene la precisión de los valores de píxel intermedios
(820) después de la primera etapa (810) de interpolación. Los
valores de píxel intermedios (820) tienen un margen dinámico de y
bits, en donde y es mayor de 8 bits. El grado de desplazamiento
efectuado en la primera etapa puede depender de la profundidad de
bits disponible y de los coeficientes de los filtros de
interpolación. Por ejemplo, en la implementación ejemplar que se
describe, los valores intermedios están limitados a un límite de
palabra de 16 bits.
Considérese el punto P_{3} de la Figura 6 y
unos valores de entrada dentro del margen de 0…255 (8 bits). El
margen de los valores intermedios procedentes de aplicar los
coeficientes del filtro bicúbico aproximado [-4 53 18 -3] a los
valores de entrada de 8 bits es de -1.785 a 18.105 (unos 14,3 bits,
que en la implementación se redondean a 15 bits) debido al factor
de expansión de los coeficientes de filtrado. El subsiguiente
filtrado horizontal, aplicando a los valores intermedios los
coeficientes del filtro bicúbico aproximado (con una expansión
adicional), puede producir unos valores que estén fuera del margen
dinámico de 16 bits, provocando un subflujo o un sobreflujo. Así
pues, los valores intermedios son desplazados lo suficiente para
garantizar que el filtrado horizontal subsiguiente produzca un
valor que esté dentro del margen dinámico de 16 bits. Para P_{3},
el primer grado de desplazamiento es de cinco bits, y entonces el
margen dinámico de los valores intermedios desplazados es de -55 a
565 (aproximadamente 9,3 bits, que en la implementación se redondean
a 10 bits). El margen de la salida procedente de aplicar los
coeficientes del filtro bicúbico aproximado a los valores
intermedios desplazados es entonces de -7.860 a 40.500, que tiene
un margen dinámico de menos de 16 bits. Así pues, el desplazamiento
acortado se calcula de manera que se utilice totalmente el límite
de la palabra de 16 bits, pero garantizando que este no sea
excedido durante la segunda etapa (830) de interpolación.
En la segunda etapa (830), se aplica (832) un
filtro horizontal adecuado (F_{H}) para interpolar el valor en la
posición subpíxel bidimensional a partir de los valores (820)
determinados por el filtro vertical. La regla del redondeo después
del filtrado horizontal es:
(26).(S
+ 64 - R) >>
7
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:
(27),
\hskip0.7cmV_{inter} = (- 1x_{1} + 9x_{2} + 9x_{3} - 1x_{4})
Así pues,
(28),V_{1} =
(- 1a + 9e + 9i -
1m)
(29),V_{2} =
(- 1b + 9f + 9j -
1n)
(30),V_{3} =
(- 1c + 9g + 9k -
1o)
y
(31).V_{4} =
(- 1d + 9h + 9l -
1p)
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:
(32).P_{7} =
(- 1V_{1} + 9V_{2} + 9Vx_{3} -
1V_{4})
\newpage
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:
(33).V_{inter}
= (- 4x_{1} + 53x_{2} + 18x_{3} -
3x_{4})
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:
(34).P_{4} =
(- 1V_{1} + 9V_{2} + 9V_{3} -
1V_{4})
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:
(35).P_{6} =
(- 4V_{5} + 53V_{6} + 18V_{7} -
3V_{8})
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:
(36).V_{inter}
= (- 4x_{1} + 53x_{2} + 18x_{3} -
3x_{4})
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:
(37).P_{3} =
(- 4V_{1} + 53V_{2} + 18V_{3} -
3V_{4})
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:
(38).D + L + 1
=
W
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.
8 bits.
En cada una de las cero o más etapas intermedias
(1222), que no se muestran con detalle, el componente aplica un
filtro a los valores intermedios (1220) con margen y. La salida de
las etapas intermedias es uno o más valores intermedios (1229) con
margen de z bits, en donde z es mayor que x. (En las Figuras
12-15, si la última etapa es la segunda etapa, los
valores intermedios que salen de la primera etapa son los valores
intermedios de entrada a la última etapa).
En la última etapa (1230), el componente aplica
(1232) un último filtro F_{L} al valor o valores intermedios
(1229) con margen de z bits. La salida final es un valor de salida
(1234) con margen de x bits. En cada una de las técnicas de
interpolación multietapa (1200, 1300, 1400, 1500), si es necesario,
el componente repite la interpolación multietapa (1200, 1300, 1400,
1500) para valores de salida adicionales. En la interpolación
repetida, el componente puede reutilizar ciertos valore intermedios
calculados en las interpolaciones anteriores.
La Figura 13 muestra un diagrama de
interpolación multietapa (1300) con bloqueo omitido. Al aplazar el
bloqueo, por ejemplo, se acelera el cálculo, puesto que el
componente ya no compara cada valor intermedio con los extremos
superior e inferior del margen. Al aplazar el bloqueo también se
protege la precisión de los valores intermedios.
En la primera etapa (1310), el componente aplica
(1312) un primer filtro F_{1} a uno o más valores de entrada
(1311) con margen de x bits. Después de la aplicación del primer
filtro F_{1} no se efectúa ningún bloqueo. Así pues, el valor o
valores intermedios (1320) que salen del primer filtro F_{1}
pueden tener un margen dinámico mayor de x bits. Por ejemplo, los
valores de entrada son valores de 8 bits, y la salida del primer
filtro F_{1} tiene un margen dinámico de 9 o más bits debido al
factor de expansión introducido por los coeficientes del primer
filtro F_{1.}
En cada una de las cero o más etapas intermedias
(1322), que no se muestran con detalle, el componente aplica un
filtro al valor o valores intermedios (1320) no bloqueados. También
puede omitirse el bloqueo en las cero o más etapas intermedias
(1322). Los valores intermedios (1329) que salen de las cero o más
etapas intermedias (1322) son introducidos en una última etapa
(1330) en la cual el componente aplica (1332) un último filtro
F_{L} a los valores (1329). La salida final del último filtro
F_{L} se bloquea (1334) y se saca un valor (1336) con un margen
de x bits.
La Figura 14 muestra un diagrama de
interpolación multietapa (1400) con desplazamiento de bits aplazado.
En la primera etapa (1410), el componente aplica (1412) un primer
filtro F_{1} a uno o más valores de entrada (1411) con margen de
x bits. Después de la aplicación del primer filtro F_{1}, o en
conjunción con la misma, se efectúa un desplazamiento acortado
(1414). El desplazamiento acortado (1414) es menor que el requerido
para garantizar un valor de salida con un margen de 8 bits (en vista
del factor de expansión de los coeficientes del primer filtro
F_{1}) y por lo tanto menor que el asociado típicamente al primer
filtro F_{1}. En consecuencia, el desplazamiento acortado (1414)
produce uno o más valores intermedios que tienen un margen dinámico
(de y bits) mayor de x bits. Por ejemplo, los valores de entrada
tienen un margen dinámico de 8 bits, y los valores intermedios
tienen un margen dinámico de más de 8 bits.
En cada una de las cero o más etapas intermedias
(1422), que no se muestran con detalle, el componente aplica un
filtro al valor o valores intermedios (1420). Uno o más valores
intermedios (1429) con un margen dinámico de z bits (superior a x
bits) salen de la cero o más etapas intermedias (1422) y, en una
última etapa (1430), el componente aplica (1432) un último filtro
F_{L} a los valores (1429). La salida final del último filtro
F_{L} es desplazada con una magnitud superior a la asociada
típicamente al último filtro F_{L}, contrayendo así el margen
dinámico del valor de salida (1434) a una profundidad de bits
especificada. Por ejemplo, el margen dinámico (en bits) del valor
de salida (1434) es igual a x ó x+1. En una implementación, el
desplazamiento de la primera etapa y de cualquier etapa intermedia
es aplazado lo más posible hasta la última etapa. El grado con que
se aplaza el desplazamiento puede depender de la profundidad de bits
disponible para los cálculos intermedios y de los factores de
expansión de los respectivos filtros.
La Figura 15 muestra una técnica de
interpolación multietapa (1500) que utiliza un control de redondeo
alternado entre etapas. Las múltiples etapas de la técnica de
interpolación (1500) se alternan en el modo de aplicar el control
de redondeo para ajustar el redondeo. Esto ayuda a evitar, en
ciertas secuencias de vídeo, la acumulación de errores de redondeo
de una imagen a otra. Por ejemplo, si una secuencia de vídeo de baja
calidad incluye un movimiento gradual en una dimensión (panning) o
en dos dimensiones (zooming), la acumulación de errores de redondeo
puede resultar en un desvanecimiento gradual del color entre una y
otra imagen, lo que puede provocar artefactos perceptibles. El
control de redondeo alternado por etapas ayuda a evitar ese
desvanecimiento del color.
Un ejemplo numérico puede ayudar a ilustrar el
redondeo sobre el cual se aplica el control de redondeo alternado
por etapas antes de hacer el desplazamiento de bits a la derecha. El
desplazamiento de bits a la derecha produce esencialmente una
división y un truncado del valor desplazado a la derecha. El añadir
un valor de redondeo antes del desplazamiento hace que el valor
desplazado sea redondeado hacia arriba o hacia abajo (al valor
entero más cercano), en lugar de ser redondeado siempre hacia abajo
(truncado). Al usar el control de redondeo se cambia la dirección
del redondeo (hacia arriba o hacia abajo) para un valor marginal.
Por ejemplo, supóngase que en cada una de las múltiples etapas se
ajusta la salida del filtrado sumando ½ "divisor" de un
desplazamiento a la derecha antes del desplazamiento a la derecha
(por ejemplo, sumando 2^{4} = 16 antes de un desplazamiento de 5
bits a la derecha, sumando 2^{6} = 64 antes de un desplazamiento
de 7 bits a la derecha). El efecto de esta suma es el redondeo
hacia arriba (al entero superior inmediato) de los valores que
tengan un componente fraccional igual o superior a 0,5 (después de
una división correspondiente al desplazamiento de bits). De otro
modo, esos valores serían truncados (al entero inferior inmediato)
por el desplazamiento a la derecha. Independientemente de la suma,
los valores que tengan un componente fraccional inferior a 0,5
(después de una división correspondiente al desplazamiento de bits)
siguen siendo truncados (al entero inferior inmediato) por el
desplazamiento a la derecha. A continuación el control de redondeo
cambia la dirección del redondeo (hacia arriba o hacia abajo) para
ciertos valores marginales. Por ejemplo, en cada una de las
múltiples etapas se vuelve a ajustar la salida del filtrado
restando 0 ó 1 (el valor del control de redondeo alternado) antes
del desplazamiento a la derecha (por ejemplo,
2^{desplazamientoV-1} ó
2^{desplazamientoV-1} -1). El efecto de este
ajuste del control de redondeo es cambiar la dirección del redondeo
para los valores que tengan un componente fraccional de 0,5
(después de una división correspondiente al desplazamiento de bits).
Cuando se resta un 1, tales valores marginales son redondeados
hacia abajo. En caso contrario, tales valores marginales son
redondeados hacia arriba.
Cada una de las múltiples etapas utiliza un
valor de control de redondeo que alterna entre 0 y 1 antes de la
interpolación multietapa, de manera que las distintas etapas se
alternan en el modo de aplicar el valor de control de redondeo.
Alternativamente, la técnica de interpolación multietapa (1500)
utiliza un valor de control de redondeo que alterna por si mismo
entre etapa y etapa.
En la primera etapa (1510) de la Figura 15, el
componente aplica (1512) un primer filtro F_{1} a uno o más
valores de entrada (1511) con margen de x bits. Después de la
aplicación del primer filtro F_{1}, o en conjunción con la misma,
se efectúa un redondeo (1514) sobre la salida del primer filtro
F_{1}. El redondeo (1514) se ajusta alternando el control de
redondeo entre las etapas. Por ejemplo, en la primera etapa (1510),
el control de redondeo alternado por etapas hace que el valor de
salida sea redondeado hacia arriba al entero más cercano si el
valor de salida es un valor marginal (cuyo valor de salida, de no
ser así, sería redondeado hacia abajo). De la primera etapa salen
uno o más valores intermedios redondeados (1520) que entran en una
segunda etapa (1530).
En la segunda etapa (1530), el componente aplica
(1532) un segundo filtro F_{2} al valor o valores intermedios
(1520). Se efectúa un redondeo (1534) sobre la salida del segundo
filtro F_{2}. Después de la aplicación del segundo filtro
F_{2}, o en conjunción con la misma, se efectúa un redondeo (1534)
con control de redondeo alternado entre etapas, cuyo control de
redondeo provoca el redondeo de los valores marginales en la
dirección opuesta a la primera etapa. Por ejemplo, en la segunda
etapa (1530), el control de redondeo alternado por etapas hace que
el valor de salida sea redondeado hacia abajo al entero más cercano
si el valor de salida es el valor marginal. De la segunda etapa
salen uno o más valores intermedios (1536) que pueden usarse en
cero o más etapas adicionales (1540). Las cero o más etapas
adicionales (1540) pueden incluir también el control de redondeo
alternado entre etapas.
El control de redondeo alternado entre etapas no
se limita a su aplicación en etapas consecutivas, sino que puede
aplicarse en otras diversas combinaciones de etapas. Además, la
primera dirección puede depender de un número de parámetros. Por
ejemplo, en un codificador y decodificador de vídeo, la primera
dirección puede depender del control de redondeo usado en la imagen
anterior, o del tipo de imagen que esté siendo interpolada (por
ejemplo, una imagen I, una imagen P, o una imagen B). En otras
realizaciones, la primera dirección puede fijarse como una
constante, derivarse implícitamente de una información causal (por
ejemplo, de una información codificada/decodificada en el pasado,
derivarse mediante el uso de un generador pseudoaleatorio, o
señalarse como parte de la corriente de bits. El control de
redondeo alternado entre etapas puede aplicarse en la interpolación
multietapa mediante el uso de cualquiera de diversos filtros de
interpolación, incluyendo filtros bilineales, bicúbicos, y
bicúbicos aproximados.
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).
\global\parskip0.900000\baselineskip
En este modo rápido se hace el siguiente nivel
de redondeo final sobre los vectores de movimiento de la
crominancia:
- //RndTbl[-3] = -1, RndTbl[-2] = 0, RndTbl[-1] = +1, RndTbl[-2] = 0
- //RndTbl[1] = -1, RndTbl[2] = 0, RndTbl[3] = +1
- cmv_x = cmv_x +
RndTbl[cmv_x % 4];
\hskip8cm
(39)
- cmv_y = cmv_y + RndTbl[cmv_y % 4]
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.
En vista de las numerosas realizaciones posibles
a las que se pueden aplicar los principios de nuestra invención,
reivindicamos como nuestra invención todas aquellas realizaciones
que puedan estar dentro del alcance de las siguientes
reivindicaciones y equivalentes a las mismas.
Claims (18)
1. Un procedimiento que comprende:
calcular un valor en una posición de muestra de
una única imagen de vídeo de referencia (600) usando múltiples
etapas (1510, 1530, 1540) de interpolación para determinar el valor,
en el cual las múltiples etapas (1510, 1530, 1540) incluyen un
control de redondeo por etapas alternadas.
2. El procedimiento de la reivindicación 1, en
el cual el cálculo incluye:
en una primera etapa de las múltiples etapas,
redondear (1514) un primer valor marginal al entero más próximo en
una primera dirección según el control de redondeo por etapas
alternadas; y
en una segunda etapa de las múltiples etapas,
redondear (1534) un segundo valor marginal al entero más próximo en
una segunda dirección opuesta a la primera dirección según el
control de redondeo por etapas alternadas.
3. El procedimiento de la reivindicación 2, en
el cual un parámetro de control de redondeo controla la primera y
la segunda dirección.
4. El procedimiento de la reivindicación 3, en
el cual el parámetro de control de redondeo alterna sobre una base
de imagen a imagen así como de etapa en etapa dentro de la imagen de
vídeo de referencia (600).
5. El procedimiento de una de las
reivindicaciones 1 a 4, en el cual el valor es para un píxel.
6. El procedimiento de la reivindicación 1, en
el cual la imagen de vídeo de referencia (600) es una primera
imagen de vídeo de referencia y en el cual el control de redondeo de
etapas alternadas indica una primera dirección de redondeo para la
primera imagen de vídeo de referencia, comprendiendo adicionalmente
el procedimiento repetir el cálculo para un valor en una posición de
muestra de una segunda imagen de vídeo de referencia e invertir la
primera dirección de redondeo para la segunda imagen de vídeo de
referencia en base a un parámetro de control de redondeo.
7. El procedimiento de la reivindicación 6, en
el cual la primera imagen de vídeo de referencia es una imagen
clave y la primera dirección de redondeo está predeterminada para la
imagen clave.
8. El procedimiento de la reivindicación 1, en
el cual la posición de muestra está en un campo de vídeo de
referencia, y en el cual el valor es para un píxel.
9. El procedimiento de una cualquiera de las
reivindicaciones 1 a 8, que comprende adicionalmente, en cada una
de las otras posiciones plurales de muestra, repetir el cálculo para
los valores de las otras posiciones de muestra.
10. El procedimiento de la reivindicación 1, en
el cual el control de redondeo por etapas alternadas alterna la
dirección de redondeo de los valores marginales entre una y otra
etapa de las múltiples etapas (1510, 1530, 1540) de
interpolación.
11. Un medio (320, 340) 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 10 durante la codificación de vídeo (400).
12. Un medio (320, 340) 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 10 durante la decodificación de vídeo
(500).
13. Un sistema (300) configurado para efectuar
el procedimiento de una de las reivindicaciones 1 a 10.
14. Un sistema (300) que comprende:
un medio para calcular un valor en una única
imagen de vídeo de referencia (600) usando múltiples etapas (1510,
1530, 1540) de interpolación para determinar el valor, en el cual
las múltiples etapas (1510, 1530, 1540) incluyen un control de
redondeo por etapas alternadas.
15. El sistema de la reivindicación 14, en el
cual el medio para calcular calcula otros múltiples valores en
múltiples imágenes de vídeo de referencia usando dichas múltiples
etapas de interpolación (1510, 1530, 1540), comprendiendo
adicionalmente el sistema:
un medio para efectuar la compensación de
movimiento con relación a las imágenes de vídeo de referencia
(600).
16. El sistema de la reivindicación 14, en el
cual, en una primera etapa de las múltiples etapas (1510, 1530,
1540), el medio para calcular redondea (1514) un primer valor
marginal al entero más próximo en una primera dirección, y en el
cual, en una segunda etapa de las múltiples etapas (1510, 1530,
1540), el medio para calcular redondea (1534) un segundo valor
marginal al entero más próximo en una segunda dirección opuesta a
la primera dirección.
17. El sistema de la reivindicación 16, en el
cual un parámetro de control de redondeo controla la primera y la
segunda dirección, y en el cual el parámetro de control de redondeo
alterna entre 0 y 1 sobre una base de imagen a imagen.
18. El sistema de la reivindicación 14 o 17, en
el cual el valor es para un píxel.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37186002P | 2002-04-10 | 2002-04-10 | |
US371860P | 2002-04-10 | ||
US382294P | 2002-05-20 | ||
US10/382,294 US7305034B2 (en) | 2002-04-10 | 2003-03-04 | Rounding control for multi-stage interpolation |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2266665T3 true ES2266665T3 (es) | 2007-03-01 |
Family
ID=28794438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES03007062T Expired - Lifetime ES2266665T3 (es) | 2002-04-10 | 2003-03-27 | Control del redondeo para la interpolacion multietapa. |
Country Status (9)
Country | Link |
---|---|
US (1) | US7305034B2 (es) |
EP (1) | EP1353513B1 (es) |
JP (1) | JP4077354B2 (es) |
KR (1) | KR100593344B1 (es) |
CN (2) | CN1238799C (es) |
AT (1) | ATE330430T1 (es) |
DE (1) | DE60306011T2 (es) |
ES (1) | ES2266665T3 (es) |
HK (1) | HK1059857A1 (es) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NO319629B1 (no) | 2003-11-28 | 2005-09-05 | Tandberg Telecom As | Fremgangsmate for korrigering av interpolerte pikselverdier |
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 |
BRPI0609124A2 (pt) * | 2005-04-13 | 2010-02-23 | Thomson Licensing | método e aparelho para codificação e decodificação de vìdeo |
US20060285597A1 (en) * | 2005-06-20 | 2006-12-21 | Flextronics International Usa, Inc. | Reusing interpolated values in advanced video encoders |
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. |
US8265151B1 (en) * | 2005-12-14 | 2012-09-11 | Ambarella Taiwan Ltd. | Mode decision using approximate 1/2 pel interpolation |
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画素輝度用動き予測機構、組合せ輝度用動き予測機構、及び組合せ輝度・色差用動き予測機構 |
CN100551073C (zh) * | 2006-12-05 | 2009-10-14 | 华为技术有限公司 | 编解码方法及装置、分像素插值处理方法及装置 |
US9332264B2 (en) * | 2007-12-30 | 2016-05-03 | Intel Corporation | Configurable performance motion estimation for video encoding |
US8462842B2 (en) * | 2008-04-10 | 2013-06-11 | Qualcomm, Incorporated | Symmetry for interpolation filtering of sub-pixel positions 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 |
US8971412B2 (en) * | 2008-04-10 | 2015-03-03 | Qualcomm Incorporated | Advanced interpolation techniques for motion compensation in video coding |
US9077971B2 (en) * | 2008-04-10 | 2015-07-07 | Qualcomm Incorporated | Interpolation-like filtering of integer-pixel positions in video coding |
US8705622B2 (en) * | 2008-04-10 | 2014-04-22 | Qualcomm Incorporated | Interpolation filter support for sub-pixel resolution in video coding |
US8121434B2 (en) | 2008-06-13 | 2012-02-21 | Microsoft Corporation | Multi-pass image resampling |
JP2010161747A (ja) * | 2009-01-09 | 2010-07-22 | Toshiba Corp | サブピクセル生成装置及び方法並びに動き補償装置 |
EP2222086A1 (de) * | 2009-02-18 | 2010-08-25 | EcoDisc Technology AG | Verfahren und Vorrichtung zur Vermeidung von Rundungsfehlern nach Durchführung einer inversen diskreten orthogonalen Transformation |
WO2010126783A2 (en) * | 2009-04-30 | 2010-11-04 | Roman Gitlin | Method and apparatus for streamlined implementation of interpolation in multiple dimensions |
US20110200108A1 (en) * | 2010-02-18 | 2011-08-18 | Qualcomm Incorporated | Chrominance high precision motion filtering for motion interpolation |
JP5390458B2 (ja) * | 2010-04-08 | 2014-01-15 | 株式会社Nttドコモ | 動画像予測符号化装置、動画像予測符号化方法、動画像予測符号化プログラム、動画像予測復号装置、動画像予測復号方法、及び動画像予測復号プログラム |
US8406506B2 (en) | 2010-05-18 | 2013-03-26 | Honda Motor Co., Ltd. | Fast sub-pixel optical flow estimation |
TWI419570B (zh) * | 2011-01-03 | 2013-12-11 | Novatek Microelectronics Corp | 多媒體裝置及其移動補償方法 |
CN102611887B (zh) | 2011-01-21 | 2015-08-05 | 华为技术有限公司 | 非整像素位置运动矢量的坐标值取整方法和装置 |
CN107105263B (zh) * | 2011-06-24 | 2019-04-26 | 株式会社Ntt都科摩 | 用于在帧间预测下执行的运动补偿的视频解码方法和装置 |
KR20130050149A (ko) * | 2011-11-07 | 2013-05-15 | 오수미 | 인터 모드에서의 예측 블록 생성 방법 |
KR101671381B1 (ko) * | 2011-11-08 | 2016-11-01 | 구글 테크놀로지 홀딩스 엘엘씨 | 샘플 적응 오프셋 코딩 및/또는 시그널링을 위한 장치들 및 방법들 |
TWI618397B (zh) | 2012-12-21 | 2018-03-11 | 杜比實驗室特許公司 | 在高位元深度視訊的可適性編碼中,高精度升取樣 |
US9762920B2 (en) * | 2013-06-07 | 2017-09-12 | Qualcomm Incorporated | Dynamic range control of intermediate data in resampling process |
CN103686028A (zh) * | 2013-11-29 | 2014-03-26 | 浙江大学 | 一种用于大屏幕多投影***的视频像素交替插值方法 |
US9749642B2 (en) | 2014-01-08 | 2017-08-29 | Microsoft Technology Licensing, Llc | Selection of motion vector precision |
US9774881B2 (en) | 2014-01-08 | 2017-09-26 | Microsoft Technology Licensing, Llc | Representing motion vectors in an encoded bitstream |
KR102440941B1 (ko) | 2015-03-03 | 2022-09-05 | 삼성전자주식회사 | 이미지 처리 정보에 따라 크기와 방향을 갖는 초기 위상을 계산할 수 있는 이미지 처리 장치들 |
CN106710514B (zh) * | 2015-07-24 | 2018-10-26 | 西安诺瓦电子科技有限公司 | 可编程逻辑器件、接收卡和led显示屏控制*** |
CN109308078B (zh) * | 2017-07-27 | 2021-08-27 | 龙岩智康太阳能科技有限公司 | 定日镜控制方法、装置及计算机可读存储介质和终端设备 |
US20230215031A1 (en) * | 2021-12-31 | 2023-07-06 | Microsoft Technology Licensing, Llc | Interpolating Image and/or Audio in Plural Passes that Use Different Configurations |
Family Cites Families (81)
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 |
US5054103A (en) * | 1987-09-24 | 1991-10-01 | Matsushita Electric Works, Ltd. | Picture encoding system |
US5242779A (en) * | 1989-06-21 | 1993-09-07 | Hoechst Aktiengesellschaft | Photosensitive mixture containing photocurable compound and polyurethane binder with grafted vinyl alcohol units, carboxylic acid vinyl ester units and vinyl acetal units |
JP2712645B2 (ja) | 1989-10-14 | 1998-02-16 | ソニー株式会社 | 動きベクトル伝送方法及びその装置並びに動きベクトル復号化方法及びその装置 |
EP0715469B1 (en) * | 1989-10-14 | 2001-09-12 | 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 |
ATE162037T1 (de) * | 1991-05-24 | 1998-01-15 | British Broadcasting Corp | Videobildverarbeitung |
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 |
JPH0541862A (ja) * | 1991-08-03 | 1993-02-19 | Sony Corp | 動きベクトルの可変長符号化方式 |
US5428396A (en) * | 1991-08-03 | 1995-06-27 | Sony Corporation | Variable length coding/decoding method for motion vectors |
EP0535746B1 (en) | 1991-09-30 | 1997-01-29 | Philips Electronics Uk Limited | 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 |
US6441842B1 (en) * | 1992-02-19 | 2002-08-27 | 8×8, Inc. | Video compression/decompression processing and processors |
US5594813A (en) * | 1992-02-19 | 1997-01-14 | Integrated Information Technology, Inc. | Programmable architecture and methods for motion estimation |
DE69322769T2 (de) * | 1992-03-03 | 1999-07-22 | Kabushiki Kaisha Toshiba, Kawasaki, Kanagawa | Koder für zeitveränderliche bilder |
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 |
DK0651574T3 (da) * | 1993-03-24 | 2001-10-08 | Sony Corp | Fremgangsmåde og indretning til koding/dekodning af bevægelsesvektorer, og fremgangsmåde og indretning til kodning/dekodning af billedsignaler |
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 |
JPH08256341A (ja) * | 1995-03-17 | 1996-10-01 | Sony Corp | 画像信号符号化方法、画像信号符号化装置、画像信号記録媒体、及び画像信号復号化装置 |
DE19606584C2 (de) * | 1995-04-19 | 1997-07-31 | Porsche Ag | Verfahren zur Zylinderabschaltung einer Brennkraftmaschine |
GB2301972B (en) * | 1995-06-06 | 1999-10-20 | Sony Uk Ltd | Video compression |
GB2301971B (en) * | 1995-06-06 | 1999-10-06 | Sony Uk Ltd | Video compression |
US5784175A (en) * | 1995-10-05 | 1998-07-21 | Microsoft Corporation | Pixel block correlation process |
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 | 日本電気株式会社 | 適応動きベクトル補間による動き補償フレーム間予測方法 |
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 |
US5787203A (en) | 1996-01-19 | 1998-07-28 | Microsoft Corporation | Method and system for filtering compressed 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 |
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 |
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 |
ES2205323T3 (es) * | 1997-06-09 | 2004-05-01 | Hitachi, Ltd. | Procedimiento de docdificacion de secuencias de imagenes. |
JPH1169345A (ja) * | 1997-06-11 | 1999-03-09 | Fujitsu Ltd | フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法 |
JP2897763B2 (ja) * | 1997-07-28 | 1999-05-31 | 日本ビクター株式会社 | 動き補償符号化装置、復号化装置、符号化方法及び復号化方法 |
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 |
US6983018B1 (en) * | 1998-11-30 | 2006-01-03 | Microsoft Corporation | Efficient motion vector coding for video compression |
US6418166B1 (en) * | 1998-11-30 | 2002-07-09 | Microsoft Corporation | Motion estimation and block matching pattern |
US6496608B1 (en) * | 1999-01-15 | 2002-12-17 | Picsurf, Inc. | Image data interpolation system and method |
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 |
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,294 patent/US7305034B2/en active Active
- 2003-03-27 EP EP03007062A patent/EP1353513B1/en not_active Expired - Lifetime
- 2003-03-27 AT AT03007062T patent/ATE330430T1/de not_active IP Right Cessation
- 2003-03-27 DE DE60306011T patent/DE60306011T2/de not_active Expired - Lifetime
- 2003-03-27 ES ES03007062T patent/ES2266665T3/es not_active Expired - Lifetime
- 2003-04-09 KR KR1020030022428A patent/KR100593344B1/ko active IP Right Grant
- 2003-04-10 CN CNB031103820A patent/CN1238799C/zh not_active Expired - Lifetime
- 2003-04-10 JP JP2003107079A patent/JP4077354B2/ja not_active Expired - Lifetime
- 2003-04-10 CN CNB031103995A patent/CN100362510C/zh not_active Expired - Lifetime
-
2004
- 2004-04-15 HK HK04102650A patent/HK1059857A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN100362510C (zh) | 2008-01-16 |
ATE330430T1 (de) | 2006-07-15 |
EP1353513A2 (en) | 2003-10-15 |
CN1453725A (zh) | 2003-11-05 |
US7305034B2 (en) | 2007-12-04 |
KR20030081119A (ko) | 2003-10-17 |
DE60306011D1 (de) | 2006-07-27 |
EP1353513B1 (en) | 2006-06-14 |
DE60306011T2 (de) | 2006-10-05 |
US20030194011A1 (en) | 2003-10-16 |
JP4077354B2 (ja) | 2008-04-16 |
EP1353513A3 (en) | 2003-10-29 |
CN1238799C (zh) | 2006-01-25 |
JP2003339050A (ja) | 2003-11-28 |
HK1059857A1 (en) | 2004-07-16 |
CN1455349A (zh) | 2003-11-12 |
KR100593344B1 (ko) | 2006-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2266665T3 (es) | Control del redondeo para la interpolacion multietapa. | |
ES2254811T3 (es) | Interpolacion subpixel en la estimacion y compesacion del movimiento. | |
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) | 動画像符号化方法、復号化方法、符号化装置および復号化装置 | |
JP2013243743A (ja) | 動画像符号化方法、復号化方法、符号化装置および復号化装置 |