ES2278087T3 - Filtro bicubico aproximado. - Google Patents
Filtro bicubico aproximado. Download PDFInfo
- Publication number
- ES2278087T3 ES2278087T3 ES03007021T ES03007021T ES2278087T3 ES 2278087 T3 ES2278087 T3 ES 2278087T3 ES 03007021 T ES03007021 T ES 03007021T ES 03007021 T ES03007021 T ES 03007021T ES 2278087 T3 ES2278087 T3 ES 2278087T3
- Authority
- ES
- Spain
- Prior art keywords
- filter
- pixel
- bicubic
- values
- phase
- 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
- 238000000034 method Methods 0.000 claims abstract description 74
- 238000001914 filtration Methods 0.000 claims abstract description 35
- 238000010606 normalization Methods 0.000 claims abstract description 5
- 230000033001 locomotion Effects 0.000 description 121
- 239000000543 intermediate Substances 0.000 description 62
- 239000013598 vector Substances 0.000 description 56
- 238000006073 displacement reaction Methods 0.000 description 34
- 230000006835 compression Effects 0.000 description 19
- 238000007906 compression Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 17
- 238000004364 calculation method Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 12
- 238000011002 quantification Methods 0.000 description 9
- 239000002699 waste material Substances 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000003595 spectral effect Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 230000009466 transformation Effects 0.000 description 5
- 230000006837 decompression Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 239000000706 filtrate Substances 0.000 description 4
- 230000010363 phase shift Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005562 fading Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 241000036848 Porzana carolina Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000005465 channeling Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012888 cubic function Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000032258 transport Effects 0.000 description 1
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B66—HOISTING; LIFTING; HAULING
- B66C—CRANES; LOAD-ENGAGING ELEMENTS OR DEVICES FOR CRANES, CAPSTANS, WINCHES, OR TACKLES
- B66C13/00—Other constructional features or details
- B66C13/04—Auxiliary devices for controlling movements of suspended loads, or preventing cable slack
-
- 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B66—HOISTING; LIFTING; HAULING
- B66C—CRANES; LOAD-ENGAGING ELEMENTS OR DEVICES FOR CRANES, CAPSTANS, WINCHES, OR TACKLES
- B66C1/00—Load-engaging elements or devices attached to lifting or lowering gear of cranes or adapted for connection therewith for transmitting lifting forces to articles or groups of articles
- B66C1/10—Load-engaging elements or devices attached to lifting or lowering gear of cranes or adapted for connection therewith for transmitting lifting forces to articles or groups of articles by mechanical means
- B66C1/12—Slings comprising chains, wires, ropes, or bands; Nets
- B66C1/16—Slings with load-engaging platforms or frameworks
-
- 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/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Mechanical Engineering (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Picture Signal Circuits (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Polarising Elements (AREA)
- Networks Using Active Elements (AREA)
- Control Of Motors That Do Not Use Commutators (AREA)
- Filters And Equalizers (AREA)
- Electric Double-Layer Capacitors Or The Like (AREA)
Abstract
Un procedimiento de interpolación bicúbica que comprende: para una primera fase (810, 1410) de interpolación bicúbica, filtrado (812, 1412) de muestras de una trama de vídeo de referencia (600) en una primera dimensión usando un filtro bicúbico aproximado que tiene coeficientes de filtro, incluyendo desplazamiento de bits (814, 1414) para compensar la expansión debida a los coeficientes de filtro en la primera fase, en el que al menos parte del desplazamiento de bits se difiere, y en el que el filtrado para la primera fase produce resultados intermedios (820, 1420); y para una segunda fase (830, 1430) de la interpolación bicúbica, filtrado (832, 1432) de los resultados intermedios en una segunda dimensión usando el filtro bicúbico aproximado, incluyendo desplazamiento de bits (834, 1434) para compensar el desplazamiento de bits diferido y para expansión debida a los coeficientes de filtro en la segunda fase, en el que el filtro bicúbico aproximado se aproxima a un filtro bicúbico puro que aplica un factor de normalización a una suma ponderada de productos de valores de coeficientes de filtro enteros y valores de muestra, en el que el filtro bicúbico aproximado aplica valores de coeficientes de filtro reducidos y un factor de normalización reducido, en el que el desplazamiento de bits diferido se define para usar completamente pero sin superar una profundidad de bits disponible de una arquitectura objeto en la segunda fase.
Description
Filtro bicúbico aproximado.
Se describen las técnicas y herramientas para
filtrado bicúbico aproximado. Por ejemplo, un codificador o
descodificador de vídeo usa un filtro bicúbico aproximado cuando
calcula valores de píxel en posiciones de cuarto de píxel en tramas
de vídeo de referencia.
El vídeo digital consume grandes cantidades de
capacidad de almacenamiento y transmisión. Una secuencia típica de
vídeo digital en bruto incluye 15 ó 30 tramas por segundo. Cada
trama puede incluir decenas o centenares de miles de píxeles
(también llamados pels). Cada píxel representa un minúsculo elemento
de la imagen. En forma en bruto, un ordenador representa comúnmente
un píxel con 24 bits. Por ejemplo, un píxel puede comprender un
valor de luminancia (también llamado valor de luma) de 8 bits que
define el componente de escala de grises del píxel y dos valores de
crominancia (también llamados valores de croma) de 8 bits que
definen el componente de color del píxel. Así, el número de bits
por segundo, o tasa de bits, de una secuencia típica de vídeo
digital en bruto puede ser de 5 millones de bits por segundo o
más.
Muchos ordenadores y redes informáticas carecen
de los recursos para procesar vídeo digital en bruto. Por esta
razón, los ingenieros usan compresión (también llamada codificación
o encriptación) para reducir la tasa de bits de vídeo digital. La
compresión puede ser sin pérdidas, en la cual la calidad del vídeo
no sufre, pero las reducciones en la tasa de bits están limitadas
por la complejidad del vídeo. O bien, la compresión puede ser con
pérdidas, en la cual la calidad del vídeo sufre, pero las
reducciones en 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 intratrama y la compresión intertrama. Las
técnicas de compresión intratrama comprimen tramas individuales,
llamadas normalmente tramas I o tramas clave. Las técnicas de
compresión intertrama comprimen tramas con referencia a las tramas
precedente y/o siguiente, y se denominan normalmente tramas
predichas, tramas P o tramas B.
Windows Media Video, Versión 8 ("WMV8"), de
Microsoft Corporation, incluye un codificador de vídeo y un
descodificador de vídeo. El codificador WMV8 usa compresión
intratrama e intertrama, y el descodificador WMV8 usa la
descompresión intratrama e intertrama. La compresión intertrama del
codificador WMV8 usa una codificación de predicción por compensación
del movimiento basada en bloques seguida por codificación de la
transformación del error residual.
En el WMV8, una trama se representa 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 horizontal y
verticalmente. Así, una trama 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 trama predicha en
8 x 8 bloques de píxeles. Un grupo de cuatro bloques de luminancia
de 8 x 8 y dos bloques de crominancia cosituados de 8 x 8 (uno para
el plano de crominancia U y otro para el plano de crominancia V)
forman macrobloques de 16 x 16. Así, cada macrobloque de 16 x 16
incluye cuatro bloques de luminancia de 8 x 8 y dos bloques de
crominancia de 8 x 8.
Para un macrobloque de una trama predicha, el
codificador WMV8 realiza la estimación del movimiento. La estimación
del movimiento aproxima el movimiento de un macrobloque de una trama
predicha buscando y haciendo coincidir el macrobloque de la trama
predicha con un macrobloque de una trama de referencia. En la fig.
1, por ejemplo, el codificador WMV8 calcula un vector de movimiento
para un macrobloque (115) de la trama predicha (110). Para calcular
el vector de movimiento, el codificador busca en un área de búsqueda
(135) de una trama de referencia (130). Dentro del área de búsqueda
(135), el codificador compara los valores de luminancia del
macrobloque (115) de la trama predicha (110) con los valores de
luminancia de los diversos bloques candidatos de la trama de
referencia (130) para encontrar una buena coincidencia. El
codificador WMV8 puede conmutar la precisión del vector de
movimiento, y puede usar un intervalo de búsqueda y vectores de
movimiento con resolución horizontal de uno, medio o un cuarto de
píxel y 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 subpíxel.
Durante la compensación de movimiento, el
codificador WMV8 usa los vectores de movimiento para macrobloques de
la trama predicha para determinar los predictores para los
macrobloques de la trama 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 trama predicha, el codificador WMV8 descomprime los residuos y
los añade a los predictores para los macrobloques respectivos.
El descodificador WMV8 también usa los vectores
de movimiento para los macrobloques de la trama predicha para
determinar los predictores para los macrobloques de la trama de
referencia. Para reconstruir los macrobloques con predicción de
movimiento de la trama predicha, el descodificador WMV8 descomprime
los residuos y los añade a los predictores 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
descodificador WMV8 debe determinar los valores de píxel en las
posiciones subpíxel de la trama de referencia. El codificador o
descodificador WMV8 genera valores para las posiciones subpíxel
usando filtros de interpolación. La fig. 2 muestra unas posiciones
subpíxel de muestra H_{0}, H_{1}, H_{2}, que tienen valores
calculados por interpolación de los valores de píxel enteros a, b,
c,..., p.
Cuando se opera con una precisión de medio píxel
en los vectores de movimiento, los filtros de interpolación usados
para los valores de luminancia de los píxeles en las tres posiciones
distintas de medio píxel H_{0}, H_{1}, H_{2} son:
- H_{0} = (f + g + R_{2}) >> 1
- (1),
- H_{1} = (f + j + R_{2}) >> 1
- (2), y
- H_{2} = (f + g + j + k + R_{1}) >> 2
- (3),
en las que R_{1} y R_{2} son
valores de control de redondeo que se controlan mediante un
indicador de control de redondeo de un bit que indica el modo de
redondeo para una trama particular. Si el indicador de control de
redondeo se ajusta a 0, entonces R_{1} = 2 y R_{2} = 1. Si el
indicador de control de redondeo se ajusta a 1, entonces R_{1} =
R_{2} = 0. El valor del indicador de control de redondeo alterna
entre 1 y 0 para cada trama P. En cada trama I, el valor del
indicador de control de redondeo se reinicia a 0. Así, el control de
redondeo funciona sobre una base trama a
trama.
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 píxeles. El suavizado puede tener efectos
deseables (como una perceptibilidad decreciente del ruido de
cuantificación), pero también puede conducir a pérdida de
información válida del píxel.
Para una resolución de un cuarto de píxel en el
vector de movimiento, el codificador o descodificador WMV8 emplea
primero filtros bicúbicos para interpolar los valores de luminancia
de los píxeles en las posiciones de medio píxel. La interpolación
bicúbica es más lenta que la interpolación bilineal, pero tiende a
conservar los valores de borde y da como resultado una menor pérdida
de información válida del píxel. Los filtros bicúbicos para las tres
posiciones distintas de medio píxel H_{0}, H_{1}, H_{2}
son:
- H_{0} = (-e + 9f + 9g - h + 8) >> 4
- (4),
- H_{1} = (-b + 9f + 9j - n + 8) >> 4
- (5), y
- H_{2} = (-t_{0} + 9t_{1} + 9t_{2} - t_{3} + 8) >> 4
- (6).
en las que t_{0}, t_{1},
t_{2}, t_{3} se calculan como
sigue:
- t_{0} = (-a + 9b + 9c - d + 8) >> 4
- (7),
- t_{1} = (-e + 9f + 9g - h + 8) >> 4
- (8),
- t_{2} = (-i + 9j + 9k - l + 8) >> 4
- (9), y
- t_{3} = (-m + 9n + 9o - p + 8) >> 4
- (10).
Las ecuaciones (4) a (10) pueden dar como
resultado una salida que quede fuera del intervalo de los valores de
entrada. Por ejemplo, para una entrada de 8 bits (intervalo
0...255), la serie de valores 0 255 255 0 produce un valor de salida
de 257 en cualquiera de las ecuaciones (4) a (10). Así, el
codificador o descodificador WMV8 limita (o "recorta") el valor
de salida de cualquiera de las ecuaciones (4) a (10) para que esté
dentro del intervalo de validez. Por ejemplo, para valores de salida
de 8 bits, los valores inferiores a 0 se cambian a 0, y los valores
superiores a 255 se cambian a 255. La limitación soluciona el
problema del intervalo, pero ralentiza el cálculo. Además, la
limitación produce pérdida de precisión.
A continuación, en una fase de interpolación
posterior, el codificador o descodificador WMV8 calcula los valores
de píxel en ciertas posiciones de cuarto de píxel. Estas
localizaciones de cuarto de píxel están situadas horizontalmente
entre dos localizaciones de medio píxel o entre una localización de
un píxel y una localización de medio píxel. Para estas
localizaciones de cuarto de píxel, el codificador o descodificador
WMV8 usa interpolación bilineal (es decir, (x + y + 1) >> 1)
usando las dos localizaciones horizontalmente adyacentes de medio
píxel y un píxel sin control de redondeo.
Una vez calculados los vectores de movimiento de
luminancia, el codificador o descodificador WMV8 obtiene los
vectores cosituados de movimiento de crominancia. Dado que en el
WMV8 un plano de crominancia tiene la mitad de tamaño que un plano
de luminancia tanto horizontal como verticalmente, los valores de
movimiento de luminancia deben ajustarse a escala en valores
apropiados de vectores de movimiento de crominancia. En el WMV8,
este procedimiento de conversión incluye dividir por dos los
vectores de movimiento de luminancia y redondear con una precisión
de medio píxel los vectores de movimiento de crominancia
resultantes. Así, los vectores de movimiento de luminancia que
tienen precisión de medio píxel no se convierten en vectores de
movimiento de crominancia que tienen precisión de cuarto de píxel.
Por otra parte, el redondeo de 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 trama de referencia pueden mostrar en ciertas
circunstancias un subdesbordamiento o un desbordamiento. Por
ejemplo, el valor de luminancia de los píxeles en una posición de un
cuarto de píxel puede ser 271 (que está fuera del intervalo de
0...255) si el valor de la posición adyacente de píxel entero es 255
y el valor de la posición adyacente 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
descodificador WMV8 limita, si es necesario, los valores
reconstruidos para el macrobloque de manera que estén dentro del
intervalo de 0...255.
Aparte del WMV8, existen varias normas
internacionales relativas a la compresión y descompresión de vídeo.
Entre estas normas se incluyen las normas Motion Picture Experts
Group ["MPEG"] 1, 2 y 4, y las normas H.261, H.262 y H.263 de
la Unión Internacional de Telecomunicaciones ["UIT"]. Al igual
que el WMV8, estas normas usan una combinación de compresión
intratrama e intertrama, aunque las normas difieren normalmente del
WMV8 en los detalles de las técnicas de compresión usadas.
Varias normas (por ejemplo, MPEG 4 y H.263)
proporcionan estimación y compensación del movimiento de medio píxel
usando filtros bilineales y control de redondeo básico. Por otra
parte, en la norma H.263, los vectores de movimiento de crominancia
que tienen teóricamente una resolución de cuarto de píxel (es decir,
la mitad de la resolución de los vectores de movimiento de
luminancia de medio píxel) se redondean a una precisión de medio
píxel o de un píxel entero, de manera que en el espacio de
crominancia no se permiten valores de un cuarto de píxel. Para
detalles adicionales de las normas sobre la estimación/compensación
del movimiento, véanse las propias especificaciones de las
normas.
La estimación y la compensación del movimiento
son técnicas de compresión eficaces, pero las diversas técnicas
anteriores de estimación/compensación (como el WMV8 y las normas
expuestas anteriormente) tienen varios inconvenientes, que
incluyen:
(1) Cuando se calculan valores de píxel en
posiciones subpíxel en tramas de referencia, los codificadores y
descodificadores pierden precisión innecesariamente en los valores
intermedios. Por ejemplo, cuando en el WMV8 se calcula 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 se desplazan
cuatro bits a la derecha, aunque pueda disponerse de una mayor
profundidad de bits. Además, el codificador/descodificador WMV8
limita los valores intermedios durante la interpolación en dos fases
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 para 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 descodificadores no
pueden tener en cuenta la acumulación de errores de redondeo que
pudiera producirse en la interpolación multifase. El error de
redondeo se produce, por ejemplo, cuando los valores de píxel se
redondean repetidamente de una a otra trama 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 descodificador WMV8 interpola en
múltiples fases un valor de píxel en una posición de un cuarto de
píxel, no se usa el control de redondeo. Por el contrario, los
resultados de cada fase se redondea de la misma forma en cada fase
de interpolación (y sin control de redondeo); y
(4) El redondeo de crominancia no se realiza con
una precisión de cuarto de píxel, y no se ofrece ningún control
sobre las opciones de redondeo de los vectores de movimiento de
crominancia. Por ejemplo, el codificador y descodificador WMV8
redondea todos los vectores de movimiento de 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 intensamente desarrollados. Sin embargo, con independencia de
cuáles 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 documento
GB-2.343.579-A describe un
procedimiento y aparato de interpolación bicúbica lineal
híbrida.
\newpage
El documento de EE.UU. 5,929.940 describe un
procedimiento y dispositivo para estimar el movimiento entre
imágenes, y un sistema para codificar imágenes segmentadas.
El objeto es proporcionar un sistema y un
procedimiento que mejore la eficacia de la predicción de
movimiento.
Este objeto se resuelve mediante la invención
según las reivindicaciones independientes.
Formas de realización preferidas se definen por
las reivindicaciones dependientes.
En resumen, la descripción detallada se dirige a
varias técnicas y herramientas para filtrado bicúbico aproximado. En
aplicaciones de codificación y descodificación de vídeo, por
ejemplo, un codificador o descodificador de vídeo usa uno o más
filtros bicúbicos aproximados cuando calcula valores de píxel en
posiciones subpíxel en tramas de vídeo de referencia. Esto mejora la
eficacia de la predicción de movimiento usando los valores de píxel
calculados. Al mismo tiempo, el filtrado bicúbico aproximado es
relativamente eficaz computacionalmente.
Un componente como un codificador o
descodificador de vídeo calcula un valor en una posición usando un
filtro bicúbico aproximado. El filtro bicúbico aproximado actúa
sustancialmente como un filtro bicúbico, lo que es deseable, pero
tiene unos coeficientes de filtro diferentes y/o menor resolución
para simplificar el cálculo. Por ejemplo, los coeficientes de filtro
del filtro bicúbico aproximado tienen una suma de 64 (en vez de 128)
para un filtro de baja resolución para posiciones de cuatro de
muestra.
Un codificador o descodificador de vídeo puede
calcular valores de píxel en varias posiciones subpíxel en tramas de
vídeo de referencia usando un filtro bicúbico aproximado. Las
posiciones subpíxel son, por ejemplo, posiciones desplazadas un
cuarto de píxel (o tres cuartos de píxel) en una dimensión o dos
dimensiones.
Las diversas técnicas y herramientas pueden
usarse en combinación o independientemente. Se apreciarán
características y ventajas adicionales a partir de la siguiente
descripción detallada que hace referencia a los dibujos
adjuntos.
La fig. 1 es un diagrama que muestra la
estimación del movimiento en un codificador de vídeo según la
técnica anterior.
La fig. 2 es un gráfico que muestra las
localizaciones subpíxel para interpolación en estimación y
compensación del movimiento según la técnica anterior.
La fig. 3 es un diagrama de bloques de
un entorno informático adecuado en el cual pueden implementarse
varias formas de realización descritas.
La fig. 4 es un diagrama de bloques de
un sistema generalizado de codificador de vídeo usado en varias
formas de realización descritas.
La fig. 5 es un diagrama de bloques de
un sistema generalizado de descodificador de vídeo usado en varias
formas de realización descritas.
La fig. 6 es un gráfico que muestra las
localizaciones para interpolación de los valores de píxel durante la
estimación y compensación del movimiento subpíxel.
La fig. 7 es un gráfico que muestra las
localizaciones de píxel entero que tienen valores de píxel usados
para calcular valores de píxel interpolados en localizaciones
subpíxel.
La fig. 8 es un diagrama que muestra
una técnica de interpolación de dos fases para interpolar valores en
posiciones subpíxel.
La fig. 9 es un gráfico que muestra una
posición de muestra horizontal de medio píxel y vertical de medio
píxel, y los valores intermedios en posiciones subpíxel usados para
calcular el valor en la posición de muestra.
La fig. 10 es un gráfico que muestra una
posición de muestra horizontal de un cuarto de píxel y vertical de
medio píxel y una posición de muestra horizontal de medio píxel y
vertical de cuarto de píxel vertical, y los valores intermedios en
posiciones subpíxel usados para calcular los valores en las
posiciones de muestra.
La fig. 11 es un gráfico que muestra una
posición de muestra horizontal de cuarto de píxel y vertical de
cuarto de píxel, y los valores intermedios en posiciones subpíxel
usados para calcular el valor en la posición de muestra.
La fig. 12 es un diagrama que muestra una
técnica de interpolación multifase con valores intermedios de
intervalo dinámico (en bits) aumentado.
La fig. 13 es un diagrama que muestra una
técnica de interpolación multifase con limitación omitida.
La fig. 14 es un diagrama que muestra una
técnica de interpolación multifase con desplazamiento de bits
diferido.
La fig. 15 es un diagrama que muestra una
técnica de interpolación multifase que usa control de redondeo
alternante por fases.
La fig. 16 es un diagrama de flujo que
muestra una técnica para seleccionar entre múltiples modos de
interpolación y redondeo de crominancia.
La fig. 17 es una tabla que muestra un
primer modo de redondeo de crominancia.
La fig. 18 es una tabla que muestra un
segundo modo de redondeo de crominancia.
Las formas de realización descritas se refieren
a técnicas y herramientas para la interpolación subpíxel en
estimación y compensación del movimiento. Varias formas de
realización se refieren a técnicas y herramientas para mantener la
precisión en la interpolación multifase difiriendo la limitación y/o
el desplazamiento de bits (operaciones que pueden producir una
pérdida de precisión) hasta las fases posteriores de la
interpolación. Otras formas de realización se refieren a filtros u
operaciones de redondeo eficaces para la interpolación
multifase.
Un codificador o descodificador realiza la
interpolación subpíxel en una trama de referencia o en una porción
de una trama como uno o más bloques o macrobloques. El
codificador/descodificador calcula los valores de píxel en
localizaciones subpíxel con la trama de referencia. El
codificador/descodificador puede realizar entonces la compensación
del movimiento usando vectores de movimiento subpíxel precisos.
En algunas formas de realización, un codificador
de vídeo o descodificador de vídeo realiza la interpolación subpíxel
en una aplicación de codificación o descodificación de vídeo.
Alternativamente, otro codificador o descodificador, u otro tipo de
componente, realiza la interpolación subpíxel u otra técnica
descrita más adelante en otro tipo de aplicación.
Como alternativa a realizar la interpolación
subpíxel sobre tramas de referencia, en algunas formas de
realización un codificador/descodificador realiza la interpolación
subpíxel sobre campos, capas de objetos u otras imágenes.
En algunas formas de realización, la
interpolación subpíxel se realiza calculando valores de píxel en los
planos de luminancia y los planos de crominancia de una trama 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
usarse en combinación o independientemente. Diferentes formas de
realización implementan una o más de las técnicas y herramientas
descritas. Aunque, por motivos de presentación, las operaciones de
estas técnicas se describen normalmente en un orden secuencial
particular, debe entenderse que esta manera de descripción comprende
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
redistribuirse o realizarse concurrentemente. Además, por motivos de
sencillez, los diagramas de flujo no presentan normalmente los
diversos modos en que pueden usarse las técnicas particulares en
conjunción con otras
técnicas.
técnicas.
En algunas formas de realización, un codificador
y descodificador de vídeo usa diversos indicadores y señales en un
flujo de bits. Aunque se describen indicadores y señales
específicos, debe entenderse que este tipo de descripción comprende
diferentes convenciones para los indicadores y señales (por ejemplo,
ceros en lugar de unos).
La fig. 3 ilustra un ejemplo generalizado de un
entorno informático (300) adecuado en el que pueden implementarse
varias de las formas de realización descritas. El entorno
informático (300) no pretende sugerir ninguna limitación en cuanto
al alcance de uso o de funcionalidad, ya que las técnicas y
herramientas pueden implementarse en diversos entornos informáticos
de propósito general o de propósito especial.
Con referencia a la fig. 3, el entorno
informático (300) incluye al menos una unidad de procesamiento (310)
y una memoria (320). En la fig. 3, esta configuración, la más básica
(330), está incluida dentro de una línea discontinua. La unidad de
procesamiento (310) ejecuta instrucciones ejecutables por ordenador
y puede ser un procesador real o virtual. En un sistema
multiproceso, múltiples unidades de procesamiento ejecutan
instrucciones ejecutables por ordenador para aumentar la potencia de
procesamiento. La memoria (320) puede ser memoria volátil (por
ejemplo, de registros, caché, RAM), 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
descodificador, como un codificador y/o un descodificador de
vídeo.
Un entorno informático puede tener
características adicionales. Por ejemplo, el entorno informático
(300) incluye 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
mostrado), como un bus, un controlador o una red, interconecta los
componentes del entorno informático (300). Normalmente, el software
del sistema operativo (no mostrado) proporciona un entorno operativo
para otro software que se ejecuta 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
instrucciones para el software (380) que implementa técnicas de
interpolación subpíxel.
El o los dispositivos de entrada (350) pueden
ser un dispositivo de entrada táctil como un teclado, un ratón, un
lápiz o una bola, un dispositivo de entrada de voz, un dispositivo
de escáner u otro dispositivo que proporcione entradas al entorno
informático (300). Para codificación de audio o vídeo, el o los
dispositivos de entrada (350) pueden 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 una pantalla, una impre-
sora, un altavoz, un grabador de CD u otro dispositivo que proporcione una salida desde el entorno informático (300).
sora, un altavoz, un grabador de CD u otro dispositivo que proporcione una salida desde el 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 transporta
información, como instrucciones ejecutables por ordenador, entradas
o salidas de audio o 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 ajustadas o cambiadas de manera que se
codifique información en la señal. A modo de ejemplo, y no de
limitación, los medios de comunicación incluyen técnicas alámbricas
o inalámbricas implementadas con una portadora eléctrica, óptica, de
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 en un entorno informático. A modo 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 cualquiera de los
anteriores.
Las técnicas y herramientas pueden describirse
en el contexto general de las instrucciones ejecutables por
ordenador, como las incluidas en módulos de programa, que se
ejecutan en un entorno informático sobre un procesador objeto real o
virtual. Generalmente, los módulos de programa incluyen rutinas,
programas, bibliotecas, objetos, clases, componentes, estructuras de
datos, etc., que realizan tareas particulares o implementan tipos
particulares de datos abstractos. En varias formas de realización,
según se desee, la funcionalidad de los módulos de programa puede
combinarse o dividirse entre los módulos de programa. Las
instrucciones ejecutables por ordenador para los módulos de programa
pueden ejecutarse en un entorno informático local o distribuido.
Por motivos de presentación, la descripción
detallada usa términos como "determinar" y "seleccionar"
para describir las operaciones de ordenador en un entorno
informático. Estos términos son abstracciones de alto nivel para las
operaciones realizadas 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 fig. 4 es un diagrama de bloques de un
codificador de vídeo generalizado (400) y la fig. 5 es un diagrama
de bloques de un descodificador de vídeo generalizado (500).
La relación mostrada entre los módulos situados
dentro del codificador y el descodificador indican el flujo
principal de información en el codificador y el descodificador; las
otras relaciones no se muestran por motivos de sencillez. En
particular, las fig. 4 y 5 no muestran normalmente la información
lateral que indica los ajustes, modos, tablas, etc., del codificador
usados para una secuencia de vídeo, una trama, un macrobloque, un
bloque, etc. Dicha información lateral se envía en el flujo de bits
de salida, normalmente después de la codificación entrópica de la
información lateral. El formato del flujo de bits de salida puede
ser un formato de Windows Media Video u otro formato.
El codificador (400) y el descodificador (500)
están basados en bloques y usan un formato de macrobloque 4:2:0,
incluyendo cada macrobloque cuatro bloques de luminancia de 8 x 8
(tratados a veces como un macrobloque de 16 x 16) y dos bloques de
crominancia de 8 x 8 (por ejemplo, un bloque U, un bloque V).
Alternativamente, el codificador (400) y el descodificador (500) se
basan en objetos, usan un formato diferente de macrobloque o de
bloque o realizan operaciones sobre conjuntos de píxeles de tamaño o
configuración diferentes a los bloques de 8 x 8 y a los macrobloques
de 16 x 16.
Dependiendo de la implementación y del tipo de
compresión deseado, los módulos del codificador o descodificador
pueden añadirse, omitirse, dividirse en múltiples módulos,
combinados con otros módulos, y/o sustituidos por módulos similares.
En formas de realización alternativas, unos codificadores o
descodificadores con diferentes módulos y/u otras configuraciones de
módulos realizan una o más de las técnicas descritas.
La fig. 4 es un diagrama de bloques de un
sistema general codificador de vídeo (400). El sistema codificador
(400) recibe una secuencia de tramas de vídeo que incluye una trama
actual (405) y produce información de vídeo comprimida (495) como
salida. Las formas de realización particulares de codificadores de
vídeo usan normalmente una variación o versión suplementada del
codificador generalizado (400).
El sistema codificador (400) comprime tramas
predichas y tramas clave. Por motivos de presentación, la fig. 4
muestra un camino para las tramas clave a través del sistema
codificador (400) y un camino para las tramas predichas delanteras.
Muchos de los componentes del sistema codificador (400) se usan para
comprimir tanto las tramas clave como las tramas predichas. Las
operaciones exactas realizadas por esos componentes pueden variar
dependiendo del tipo de información que se esté comprimiendo.
Una trama predicha (también llamada trama p,
trama b para la predicción bidireccional o trama intercodificada) se
representa en términos de predicción (o diferencia) con respecto a
otra u otras tramas. Un residuo de predicción es la diferencia entre
lo que se predijo y la trama original. Por el contrario, una trama
clave (también llamada trama i o trama intracodificada) se comprime
sin referencia a otras tramas.
Si la trama actual (405) es una trama predicha
delantera, un estimador de movimiento (410) estima el movimiento de
los macrobloques u otros conjuntos de píxeles de la trama actual
(405) con respecto a la trama de referencia, que es la trama
anterior reconstruida (425) almacenada en el almacén de tramas
(420). En formas de realización alternativas, la trama de referencia
es una trama posterior, o la trama actual se predice
bidireccionalmente. El estimador de movimiento (410) produce como
información lateral información de movimiento (415), como vectores
de movimiento. Un compensador de movimiento (430) aplica la
información de movimiento (415) a la trama anterior reconstruida
(425) para formar una trama actual compensada en movimiento (435).
Sin embargo, la predicción es raramente perfecta, y la diferencia
entre la trama actual compensada en movimiento (435) y la trama
actual original (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 de
frecuencia (es decir, espectral). Para tramas de vídeo basadas en
bloques, el transformador de frecuencia (460) aplica una
transformada discreta del coseno ["TDC"] o una variante de TDC
a los bloques de datos del residuo de predicción del movimiento,
produciendo bloques de coeficientes de TDC. Alternativamente, el
transformador de frecuencia (460) aplica otra transformada
convencional de frecuencia, como una transformada de Fourier, o usa
el análisis de ondículas o de sub-banda. En algunas
formas de realización, el transformador de frecuencia (460) aplica
una transformada de la frecuencia a bloques de residuos de
predicción espacial para tramas clave. El transformador de
frecuencia (460) puede aplicar transformadas de frecuencia de 8 x 8,
8 x 4, 4 x 8 o de otro tamaño.
A continuación, un cuantificador (470)
cuantifica 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 según una base entre trama y
trama o de otro tipo. 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 usa transformaciones de frecuencia.
Además de cuantificación adaptativa, el codificador (400) puede usar
descarte de tramas, filtrado adaptativo u otras técnicas de control
de la
tasa.
tasa.
Cuando se necesita una trama actual reconstruida
para la subsiguiente estimación/compensación de movimiento, un
cuantificador inverso (476) realiza una cuantificación inversa sobre
los coeficientes de los datos espectrales cuantificados. A
continuación, un transformador de frecuencia inverso (466) realiza
la inversa de las operaciones del transformador de frecuencia (460),
produciendo un residuo de predicción reconstruido (para una trama
predicha) o una trama clave reconstruida. Si la trama actual (405)
era una trama clave, se toma la trama clave reconstruida como trama
actual reconstruida (no mostrada). Si la trama actual (405) era una
trama predicha, se añade el residuo de predicción reconstruido a la
trama actual compensada en movimiento (435) para formar la trama
actual reconstruida. El almacén de tramas (420) almacena la trama
actual reconstruida para usarla en la predicción de la siguiente
trama. En algunas formas de realización, el codificador aplica un
filtro de desbloqueo a la trama reconstruida para suavizar
adaptativamente las discontinuidades de los bloques de la trama.
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). 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,
codificación LZ, codificación de tipo diccionario y combinaciones de
las anteriores. El codificador entrópico (480) usa normalmente
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 la memoria intermedia
(490). Se realimenta un indicador del nivel de la memoria intermedia
hacia los módulos adaptativos de la tasa de bits. La información de
vídeo comprimida (495) se extrae de la memoria intermedia (490) con
una tasa de bits constante o relativamente constante y se almacena
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 de la memoria intermedia (490),
la información de vídeo comprimida (495) puede someterse 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) datos de detección y corrección de errores.
La fig. 5 es un diagrama de bloques de un
sistema general descodificador de vídeo (500). El sistema
descodificador (500) recibe información (595) de una secuencia
comprimida de tramas de vídeo y produce una salida que incluye una
trama reconstruida (505). Las formas de realización particulares de
descodificadores de vídeo usan normalmente una variación o versión
suplementada del descodificador generalizado (500).
El sistema descodificador (500) descomprime
tramas predichas y tramas clave. Por motivos de presentación, la
fig. 5 muestra un camino para las tramas clave a través del sistema
descodificador (500) y un camino para las tramas predichas
delanteras. Muchos de los componentes del sistema descodificador
(500) se usan para descomprimir tanto las tramas clave como las
tramas predichas. Las operaciones exactas realizadas por esos
componentes pueden variar dependiendo del tipo de información que se
esté comprimiendo.
Una memoria intermedia (590) recibe la
información (595) para la secuencia de vídeo comprimida y deja
disponible la información recibida para el codificador entrópico
(580). La memoria intermedia (590) recibe normalmente la información
a una velocidad que es bastante constante a lo largo del tiempo, e
incluye una memoria intermedia con variación de retardo para
suavizar las variaciones a corto plazo en el ancho de banda o la
transmisión. La memoria intermedia (590) puede incluir también una
memoria intermedia de reproducción y otras memorias tampón.
Alternativamente, la memoria intermedia (590) recibe la información
a una tasa variable. Antes o después de la memoria intermedia (590),
la información de vídeo comprimida puede someterse a una
descodificación de canal y procesarse para detección y corrección de
errores.
El codificador entrópico (580) descodifica los
datos cuantificados codificados en entropía, así como información
lateral codificada en entropía (por ejemplo, información de
movimiento (515), el intervalo de cuantificación), aplicando
normalmente la inversa de la codificación entrópica realizada en el
codificador. Las técnicas de descodificación entrópica incluyen
descodificación aritmética, descodificación diferencial,
descodificación Huffman, descodificación por longitud de serie,
descodificación LZ, descodificación de tipo diccionario y
combinaciones de las anteriores. El codificador entrópico (580) usa
frecuentemente diferentes técnicas de descodificación para
diferentes clases de información (por ejemplo, coeficientes CC,
coeficientes CA, diferentes clases de información lateral) y puede
elegir entre múltiples tablas de códigos dentro de una técnica de
descodificación particular.
Si la trama reconstruida (505) que debe
reconstruirse es una trama predicha delantera, un compensador de
movimiento (530) aplica la información de movimiento (515) a una
trama de referencia (525) para formar una predicción (535) de la
trama reconstruida (505) que se esté reconstruyendo. Por ejemplo, el
compensador de movimiento (530) usa un vector de movimiento de
macrobloque para encontrar un macrobloque en la trama de referencia
(525). Un almacén de tramas (520) almacena las tramas reconstruidas
anteriores para usarlas como tramas 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 descodificador (500) reconstruye
también los residuos de predicción.
Cuando el descodificador necesita una trama
reconstruida para la subsiguiente compensación de movimiento, el
almacén de tramas (520) almacena la trama reconstruida para usarla
en la predicción de la siguiente trama. En algunas formas de
realización, el codificador aplica un filtro de desbloqueo a la
trama reconstruida para suavizar adaptativamente las
discontinuidades de los bloques de la trama.
Un cuantificador inverso (570) cuantifica
inversamente datos descodificados en entropía. En general, el
cuantificador inverso aplica una cuantificación escalar uniforme e
inversa a los datos descodificados en entropía con un intervalo que
varía según una base entre trama y trama o de otro tipo.
Alternativamente, el cuantificador inverso aplica a los datos otro
tipo de cuantificación inversa, por ejemplo, una cuantificación no
uniforme, vectorial o no adaptativa, o directamente cuantifica
inversamente los datos del dominio espacial en un sistema
descodificador que no usa transformaciones de frecuencia
inversas.
Un transformador de frecuencia inverso (560)
convierte los datos de dominio de frecuencia, cuantificados, en
información de vídeo de dominio espacial. Para tramas de vídeo
basadas en bloques, el transformador de frecuencia inverso (560)
aplica una TDC inversa ["TDCI"] o una variante de TDCI sobre
los bloques de coeficientes de TDC, produciendo datos del residuo de
predicción del movimiento. Alternativamente, el transformador de
frecuencia (560) aplica otra transformada de frecuencia inversa
convencional, como una transformada de Fourier, o usa una síntesis
de ondícula o de sub-banda. En algunas formas de
realización, el transformador de frecuencia inverso (560) aplica una
transformada de frecuencia inversa a bloques de residuos de
predicción espacial en tramas clave. El transformador de frecuencia
inverso (560) puede aplicar transformadas de frecuencia inversas de
8 x 8, 8 x 4, 4 x 8 u otro tamaño.
La codificación intertrama aprovecha las
redundancias temporales entre tramas para obtener la compresión. Las
reducciones de redundancia temporal usan tramas codificadas
previamente como predictores cuando se codifica la trama actual. En
las formas de realización descritas a continuación, un codificador
de vídeo aprovecha las redundancias temporales en las secuencias de
vídeo típicas para codificar la información usando un menor número
de bits. El codificador de vídeo usa estimación del movimiento para
parametrizar el movimiento de un bloque, un macrobloque u otro
conjunto de píxeles de una trama predicha con relación a una trama
de referencia (por ejemplo, una trama anterior previamente
codificada). El codificador de vídeo (así como un descodificador
correspondiente) usa la compensación del movimiento para reconstruir
la trama predicha usando la información de movimiento y la trama de
referencia.
La compensación de movimiento es el proceso de
generar una predicción para una trama de vídeo (es decir, la trama
predicha) desplazando la trama de referencia. Según se observó
anteriormente, la predicción se hace para un bloque, un macrobloque
u otro conjunto de datos de la trama de referencia. Además,
normalmente el desplazamiento es rectilíneo y constante sobre la
totalidad del mosaico que se está prediciendo. Dicho 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 el mosaico que se está
prediciendo actualmente y la localización correspondiente en la
trama 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 un mosaico
de 8 x 8 píxeles, un macrobloque es un mosaico de 16 x 16 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
descodificador aplican una o más de las técnicas descritas a
mosaicos de diferente tamaño o a mosaicos 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 habitualmente en términos de desplazamiento de píxeles,
a menudo con una precisión de subpíxel. Los desplazamientos subpíxel
se realizan filtrando la trama de referencia usando unos filtros de
compensación del movimiento definidos adecuadamente. 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 fraccionaria 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 bloque de la trama 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 uno o más filtros
correspondientes al desplazamiento subpíxel a las localizaciones de
píxel entero de la trama de referencia. Por tanto, el filtro de
compensación del movimiento está 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
píxel fraccionarias basándose en valores de referencia en
localizaciones de píxel entero. En general, la calidad de la
interpolación aumenta con el soporte del filtro. Algunas formas de
realización usan filtros separables de 2 vías y 4 vías (en cada
dirección), que corresponden a interpoladores bilineales y
bicúbicos.
En algunas formas de realización, los filtros de
compensación de movimiento usan aritmética de números enteros y
división implementada como un desplazamiento de bit. El parámetro
R de control de redondeo toma el valor 0 ó 1 y determina la
dirección del redondeo para esas divisiones. Este parámetro de
control de redondeo puede ajustarse a una constante, señalada
externamente, o puede obtenerse implícitamente a partir de una
información codificada anterior.
La fig. 6 muestra localizaciones de píxel entero
y de subpíxel en una trama de referencia (600) usadas durante la
estimación y compensación del movimiento subpíxel en algunas formas
de realización. A intervalos de un cuarto de píxel en cada
dirección, la trama de referencia (600) incluye unas localizaciones
subpíxel para las cuales un codificador o descodificador puede
interpolar valores de píxel para un desplazamiento particular. Las
posiciones enteras a-p de la trama de referencia
(600) se muestran como círculos sombreados en la fig. 6, mientras
que las posiciones de un cuarto de píxel y de medio píxel
interpuestas entre las localizaciones enteras se muestran mediante
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.
La posición de tres cuartos de píxel ilustrada
en P_{8} puede considerarse un caso especial de la posición de un
cuarto de píxel; es un desplazamiento de un cuarto de píxel desde
una localización de un píxel completo. Son posibles otras posiciones
de tres cuartos de píxel, pero no se muestran. Las posiciones
subpíxel P_{0} a P_{8} se citan en descripciones posteriores de
filtros de interpolación. En formas de realización alternativas, el
codificador y el descodificador interpolan valores en posiciones
subpíxel adicionales o diferentes, por ejemplo, las situadas en un
intervalo distinto a un cuarto de píxel en cada dirección.
Para la interpolación subpíxel en algunas formas
de realización, un codificador y descodificador de vídeo usa filtros
lineales/bilineales y/o filtros cúbicos/bicúbicos que se definen del
modo siguiente.
Un interpolador lineal es un polinomio lineal, o
de primer orden, en una dimensión que usa valores conocidos en los
dos puntos de retícula 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 usa valores conocidos en los
cuatro puntos de retícula 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
normalmente de modo indistinto 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 realizada en una dimensión se replica
en la otra dimensión, y por tanto cada fase de filtrado se denomina
filtrado bilineal. Los términos cúbico y bicúbico son igualmente
indistintos.
En este documento, los términos lineal y
bilineal se usan de modo indistinto para describir el filtrado en
una, dos o más dimensiones. Análogamente, los términos cúbico y
bicúbico se usan de modo indistinto 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 se refieren como filtros
bicúbicos porque, en la aplicación común de interpolación en dos
fases para las tramas de vídeo de referencia, los filtros se usan en
operaciones replicadas para las dos dimensiones de la interpolación
en dos fases. Más generalmente, la dimensionalidad del filtrado se
conoce por el contexto.
En algunas formas de realización, un codificador
y descodificador usa filtros bicúbicos aproximados para interpolar
valores en localizaciones subpíxel. Por ejemplo, el codificador y
descodificador 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 de desplazamiento de una
trama de referencia como la mostrada en la fig. 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 introducida
potencialmente 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. Esta operación da como resultado
una simple división por 2 elevado a la potencia del número de bits
desplazados (por ejemplo, un desplazamiento de 3 a la derecha da
como resultado una división por 2^{3} = 8), descartándose el
resto.
Los coeficientes de filtrado para F_{2} y
F_{3} se basan aproximadamente en el verdadero interpolador
bicúbico de un cuarto de píxel, que es un filtro de cuatro vías. La
siguiente ecuación muestra el resultado de aplicar el verdadero
filtro bicúbico de un cuarto de píxel para la localización
P_{0}:
- (-7e + 105f + 35g - 5h) >> 7
- (14)
Los valores de los coeficientes suman 128, y el
producto del filtrado se desplaza 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 rendimiento, pero tienen una resolución
más baja, según se muestra en la siguiente ecuación.
- \quad
- (-7e + 105f + 35g - 5h) >> 7
- \quad
- = (-3,5e + 52,5f + 17,5g - 2,5h) >> 6
- \approx (-4e + 53f + 18g - 3h) >> 6
- (15).
En muchos casos, el uso de un filtro bicúbico
puro da como resultado una pérdida de bits de precisión en la
interpolación multifase, por lo que el factor de normalización para
el filtro bicúbico aproximado se reduce como mínimo a ½ (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) se basan en redondear el filtro bicúbico
verdadero, después de haber tenido en cuenta el comportamiento del
dominio de frecuencia (por ejemplo, para conservar la información
de alta frecuencia) y el comportamiento empírico (por ejemplo, para
alcanzar la menor distorsión dado una cierta tasa de bits).
Específicamente, los filtros F_{2} y F_{3} incluyen todavía
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 de
coeficientes del filtro se ajustan para que sumen 64, lo que
facilita la implementación usando aritmética de 16 bits a la vez que
se aproximan al filtro bicúbico de alta resolución. Pueden usarse
otros valores de coeficientes del filtro que suman 64, a la vez que
se aproximan todavía al filtro bicúbico. 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 tiene buena correlación
(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 entre los vectores para los filtros (que deseablemente
será lo más próximo posible a 1), 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 filtro del filtro bicúbico
aproximado de 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 fig. 7 muestra generalmente las localizaciones de
píxel entero con los valores de píxel que se usan para calcular
píxeles interpolados para cada uno de los casos correspondientes a
los filtros bicúbicos tratados en las ecuaciones (11) a (13). P
denota 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 fig. 7 muestra
una interpolación horizontal, pero las mismas operaciones y
configuración de posiciones son aplicables a la interpolación
vertical.
En formas de realización alternativas, un
codificador y un descodificador usan filtros de interpolación
distintos y/o adicionales. Por ejemplo, el codificador y el
descodificador 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 fig. 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) a (3).
En diversas posiciones subpíxel, el codificador
y el descodificador de algunas formas de realización calculan un
valor interpolado solamente en una dimensión. Según se ilustra en la
fig. 7, las siguientes ecuaciones muestran el funcionamiento de los
filtros F_{1} (desplazamiento de medio píxel), F_{2}
(desplazamiento de un cuarto de píxel) y F_{3} (desplazamiento de
tres cuartos de píxel) cuando interpolan entre píxeles enteros:
- F_{1}: (-1I_{1} + 9I_{2} + 9I_{3} - 1I_{4} + 8 - r) >> 4
- (16),
- F_{2}: (-4I_{1} + 53I_{2} + 18I_{3} - 3I_{4} + 32 - r) >> 6
- (17), y
- F_{3}: (-3I_{1} + 18I_{2} + 53I_{3} - 4I_{4} + 32 - r) >> 6
- (18).
en las que el valor r controla el
redondeo. El valor r depende del parámetro binario R de control de
redondeo a nivel de trama y de la dirección de interpolación, del
modo
siguiente:
Para ilustrar mejor la interpolación
unidimensional, en la fig. 6, P_{1} y P_{5} muestran posiciones
de medio píxel en la trama de referencia (600) que requieren
interpolación en sólo una dimensión (es decir, la dirección
horizontal para P_{1} y la dirección vertical para P_{5}). Las
siguientes ecuaciones muestran el funcionamiento del filtro F_{1}
(desplazamiento de medio píxel) cuando interpola entre píxeles
enteros para P_{1} y P_{5}:
- P_{1} = (-1e + 9f + 9g - 1h + 8 - r) >> 4
- (20), y
- P_{5} = (-1b + 9f + 9j - 1n + 8 - r) >> 4
- (21).
Análogamente, en la fig. 6, P_{0} y P_{2}
representan posiciones de un cuarto de píxel en la trama de
referencia (600) que requieren interpolación en una dimensión
únicamente. Las siguientes ecuaciones muestran el funcionamiento del
filtro F_{2} (desplazamiento de un cuarto de píxel) cuando
interpola entre píxeles enteros para P_{0} y P_{2}:
- P_{0} = (-4e + 53f + 18g - 3h + 32 - r) >> 6
- (22), y
- P_{2} = (-4b + 53f + 18j - 3n + 32 - r) >> 6
- (23).
El filtro bicúbico aproximado F_{2} de un
cuarto de píxel también puede usarse, 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
Alternativamente, un codificador y un
descodificador 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
descodificador usan filtros con más o menos coeficientes de filtro,
diferentes coeficientes de filtro, diferente redondeo o sin
redondeo.
En algunas formas de realización se realiza la
interpolación en posiciones subpíxel que están separadas en dos
dimensiones. En la fig. 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 forma de realización, que corresponde al
procedimiento de interpolación (800) mostrado en la fig. 8, dos
localizaciones subpíxel bidimensionales se interpolan 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 realiza usando uno o más filtros F_{1}, F_{2} o
F_{3} especificados anteriormente en las ecuaciones (16) a (18).
En la forma de realización ilustrada en la fig. 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
permitida por la aritmética de 16 bits.
En la fig. 8, primero se realiza el filtrado
vertical, seguido por el filtrado horizontal. En algunas
arquitecturas se mejora el rendimiento empezando por el filtrado
vertical. En otras formas de realización, el orden del filtrado es
diferente. Por ejemplo, la interpolación se realiza en dirección
horizontal antes que en dirección vertical. O bien 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 bits de 8 bits, y tienen un
intervalo dinámico con 256 valores. Los valores intermedios (820)
tienen una profundidad de bits de 16 bits, para un intervalo
dinámico de 65.536 valores. En formas de realización alternativas,
los valores de entrada, de salida e intermedios tienen diferente
profundidad de bits (por ejemplo, superior).
\newpage
En una primera fase (810), se aplica un filtro
vertical adecuado (F_{v}) (812) 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 se desplace 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 la que 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
sobre una base de trama a trama. Así, la regla del redondeo incluye
redondear con un control de redondeo (813) alternante por fases y un
desplazamiento de bits
(814).
El desplazamiento a la derecha provoca
potencialmente una pérdida de resolución, por lo que se difiere al
menos una parte del desplazamiento hasta unas fases 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 filtro de la primera fase (por ejemplo,
el desplazamiento para el filtro bicúbico aproximado es inferior a
6 bits), pero suficiente para garantizar que los resultados
intermedios del filtrado subsiguiente se mantengan dentro del
intervalo dinámico de los valores intermedios (por ejemplo, 65.536
valores posibles para las palabras de 16 bits). En comparación con
el desplazamiento completo, este desplazamiento acortado mantiene la
precisión de los valores de píxel intermedios (820) después de la
primera fase (810) de interpolación. Los valores de píxel
intermedios (820) tienen un intervalo dinámico de y bits, en el que
y es mayor que 8 bits. La magnitud de desplazamiento realizado en
la primera fase puede depender de la profundidad de bits disponible
y de los coeficientes de los filtros de interpolación. Por ejemplo,
en la implementación ilustrativa 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 fig. 6 y unos
valores de entrada dentro del intervalo de 0...255 (8 bits). El
intervalo 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 filtro. El filtrado horizontal
subsiguiente, aplicando a los valores intermedios los coeficientes
del filtro bicúbico aproximado (con expansión adicional), puede
producir unos valores que estén fuera del intervalo dinámico de 16
bits, provocando un subdesbordamiento o un desbordamiento. Así, los
valores intermedios se desplazan lo suficiente para garantizar que
el filtrado horizontal subsiguiente produzca un valor que esté
dentro del intervalo dinámico de 16 bits. Para P_{3}, el primer
grado de desplazamiento es de cinco bits, y entonces el intervalo
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 intervalo 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
intervalo dinámico de menos de 16 bits. Así, el desplazamiento
acortado se calcula de manera que se utilice totalmente el límite de
la palabra de 16 bits, pero garantizando que éste no se supere
durante la segunda fase (830) de
interpolación.
interpolación.
En la segunda fase (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 la que S es el resultado
filtrado horizontalmente, y R es el valor de control de redondeo que
alterna en una base de trama a trama. Al igual que la regla de
redondeo de la primera fase, la regla de redondeo de la segunda fase
incluye redondear con un control de redondeo (833) alternante por
fases y un desplazamiento de bits (834). Teniendo en cuenta el
desplazamiento diferido de la primera fase, la magnitud de
desplazamiento de la segunda fase supera normalmente a la esperada
normalmente para el filtro horizontal seleccionado, y se calcula
para que el valor de salida tenga el intervalo 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 intervalo (por
ejemplo, 255 para una salida de 8 bits). En estos casos, con valores
de salida de 8 bits, el codificador y el descodificador recortan el
valor de salida (836) para que quede dentro del intervalo aceptado.
En particular, se fijan los subdesbordamientos a 0 y los
desbordamientos a 255. Después de la limitación se produce un valor
interpolado de 8 bits (838).
En la fig. 8, el desplazamiento de la segunda
fase es de 7 bits. Así, un valor de salida filtrado que tenga 9 bits
se conserva. Por ejemplo, siguiendo con el ejemplo anterior para
P_{3}, el intervalo del valor de salida filtrado es de -81 a 316,
que tiene un intervalo dinámico de aproximadamente 8,6 bits (que se
redondea a 9 en la implementación). Aunque el intervalo válido de
los datos interpolados es de sólo 8 bits, el bit adicional de
encabezamiento proporciona la información de desbordamiento y
subdesbordamiento. En otras palabras, si el bit más significativo
(es decir, el bit de "signo") está activo, existe un
subdesbordamiento o un desbordamiento. Para saber específicamente
cuál de los dos se ha producido hay que mirar los 8 bits de
"mantisa" restantes.
Las fig. 9 a 11 ilustran también la
interpolación bidimensional descrita anteriormente e ilustrada en la
fig. 8. La fig. 9 muestra la posición subpíxel P_{7} (medio píxel
horizontal, medio píxel vertical) de la trama de referencia (600) de
la fig. 6. Para interpolar el valor de P_{7} se usan dos filtros
de interpolación bicúbicos de medio píxel. En la primera fase, se
calculan los valores intermedios V_{1}-V_{4} a
partir de posiciones próximas de píxel entero mediante un filtro
bicúbico de medio píxel que tiene la forma general:
- V_{inter} = (-1x_{1} + 9x_{2} + 9x_{3} - 1x_{4})
- (27).
Así,
- V_{1} = (-1a + 9e + 9i - 1m)
- (28),
- V_{2} = (-1b + 9f + 9j - 1n)
- (29),
- V_{3} = (-1c + 9g + 9k - 1o)
- (30), y
- V_{4} = (-1d + 9h + 9l - 1p)
- (31).
Una vez añadido el valor de R_{v} apropiado,
se desplazan los resultados un bit a la derecha. En la segunda fase,
los valores intermedios V_{1}-V_{4} son usados
por un filtro de medio píxel para calcular el valor de píxel en
P_{7}. En particular, se usa un filtro de medio píxel que tiene la
forma siguiente:
(32).P_{7} =
(-1V_{1} + 9V_{2} + 9V_{3} -
1V_{4})
Según se expuso anteriormente, el resultado de
la segunda fase se desplaza siete bits a la derecha para obtener un
valor de 9 bits. El valor de 9 bits incluye ocho bits de mantisa y
un bit de signo. Después se realiza toda limitación necesaria para
compensar el desbordamiento o el subdesbordamiento, y se obtiene un
valor final interpolado de 8 bits.
La fig. 10 muestra la posición subpíxel P_{4}
(medio píxel horizontal, un cuarto de píxel vertical) de la trama de
referencia (600) de la fig. 6. Para interpolar el valor de P_{4}
se usa un filtro de interpolación bicúbico de un cuarto de píxel y
un filtro de medio píxel. En la primera fase 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 trama de referencia (600) de la misma manera descrita
anteriormente con respecto al cálculo de P_{7}. Después de añadir
el valor de R_{v} apropiado, los resultados se desplazan tres bits
a la derecha. En la segunda fase, los valores intermedios
V_{1}-V_{4} son usados por un filtro de medio
píxel para calcular el valor de píxel en P_{4}. En particular se
usa 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 fase se desplaza
siete bits a la derecha para obtener un valor de 9 bits, se realiza
cualquier limitación necesaria y se extrae un valor interpolado
final de 8 bits.
La fig. 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 usa 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 fase se usa un
filtro bicúbico de medio píxel. Las localizaciones de píxel
intermedias están representadas en la fig. 10 en
V_{5}-V_{8}. Durante la segunda fase, un filtro
bicúbico de un cuarto de píxel usa 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 forma siguiente:
(35).P_{6} =
(-4V_{5} + 53V_{6} + 18V_{7} -
3V_{8})
La magnitud del desplazamiento en la primera y
en la segunda fase es igual que en la técnica para calcular P_{4}
(es decir, el desplazamiento en la primera fase es tres y el
desplazamiento en la segunda fase es siete).
La fig. 11 muestra una posición subpíxel P_{3}
(un cuarto de píxel horizontal, un cuarto de píxel vertical) de la
trama de referencia (600) de la fig. 6. Para interpolar el valor de
P_{3} se usan dos filtros de interpolación bicúbicos de un cuarto
de píxel. En la primera fase se calculan los valores intermedios
V_{1}-V_{4} a partir de unas posiciones próximas
de píxel entero usando 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 trama de referencia (600) de la misma manera descrita
anteriormente con respecto al cálculo de P_{4}. Después de añadir
el valor de R_{v} apropiado, se desplazan los resultados cinco
bits a la derecha. En la segunda fase, los valores intermedios
V_{1}-V_{4} son usados por un filtro de medio
píxel para calcular el valor de píxel en P_{3}. En particular, se
usa un filtro de un cuarto de píxel que tiene la forma
siguiente:
(37).P_{3} =
(-4V_{1} + 53V_{2} + 18V_{3} -
3V_{4})
El resultado de la segunda fase se desplaza
siete bits a la derecha para obtener un valor de 9 bits, se realiza
cualquier limitación necesaria y se produce un valor interpolado
final de 8 bits.
Aunque no están representados en las fig. 9 a
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 procedimientos descritos anteriormente usando 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 formas de realización se usan filtros
bilineales o combinaciones de filtros bilineales y bicúbicos para
interpolar los valores en las posiciones subpíxel de muestra. El uso
de filtros bilineales reduce generalmente la magnitud del
desplazamiento realizado (después de la primera fase y en total)
porque los coeficientes introducen menos expansión que con los
filtros bicúbicos. En una implementación que usa filtros bilineales
y valores intermedios de 16 bits, por ejemplo, no se realiza ningún
desplazamiento en la primera fase, elevando así al máximo el uso del
límite de la palabra de 16 bits, y se realiza un desplazamiento a la
derecha de 4 bits después de la última fase. Análogamente, la
limitación puede diferirse hasta la última fase.
Uno de los principios que subyacen en los
procedimientos descritos anteriormente es el uso de la mayor
precisión posible en cada fase de filtrado, mientras se mantiene
dentro de un límite deseado W del "tamaño de palabra". Si el
valor de salida tiene un intervalo dinámico de D bits, y se
descartan L bits en la última fase, la salida de la última fase de
filtrado puede llegar a D + L + 1 bits, en lo que el último bit se
usa para señalar los subdesbordamientos y desbordamientos.
Trabajando hacia atrás, si la última fase de filtrado da como
resultado una expansión de k bits, entonces la entrada a la última
fase debería estar dentro de D + L - k. Así, 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 fase deberá ser D
+ L - k = W - k - 1 bits.
La lógica anterior puede aplicarse
recursivamente a la penúltima fase de filtrado, y así sucesivamente.
De hecho, los límites pueden estrecharse usando bits fraccionarios
para representar los intervalos distintos de 2^{k} y los factores
de expansión.
Las fig. 12 a 15 son diagramas que ilustran las
diversas técnicas que se han descrito antes combinadas, pero que
también son aplicables por separado a interpolación multifase. Las
fig. 12 a 15 no muestran las diversas maneras con que puede usarse
la interpolación multifase (1200, 1300, 1400, 1500) respectiva en
conjunción con otras técnicas de interpolación multifase.
Además, aunque cada una de las fig. 12 a 15
muestra dos fases, las técnicas de interpolación multifase (1200,
1300, 1400, 1500) ilustradas en las fig. 12 a 15 pueden incluir más
fases. Más generalmente, las técnicas de interpolación multifase
(1200, 1300, 1400, 1500) pueden implementarse con cualquier tipo de
filtro separable en múltiples dimensiones, así como con filtros
arbitrarios implementados según una estructura en cascada, escalera,
o retícula.
Las fig. 12 a 15 muestran los valores de
entrada, valores de salida y filtros generalizados que se usan en la
interpolación multifase. La elección específica de la profundidad de
bits para los valores de entrada de la primera fase, los valores de
salida de la última fase y los valores intermedios puede extenderse
arbitrariamente de acuerdo con las especificaciones técnicas de una
arquitectura o aplicación objeto. Por ejemplo, los valores de
entrada pueden ser valores de píxel de 8 bits en posiciones de píxel
entero de tramas de referencia, los valores de salida pueden ser
valores de píxel de 8 bits en posiciones subpíxel de tramas de
referencia y los filtros pueden ser filtros bicúbicos regulares y
aproximados (según se describió anteriormente con referencia a las
fig. 6 a 8). Alternativamente, los valores de entrada y/o los
valores de salida tienen intervalos dinámicos con diferente
profundidad de bits, o se usan filtros
diferentes.
diferentes.
Un componente como el codificador o
descodificador descrito con referencia a las fig. 4 y 5,
respectivamente, puede realizar la interpolación multifase (1200,
1300, 1400, 1500). Alternativamente, otro codificador o
descodificador, u otro tipo de componente, puede realizar la
interpolación multifase (1200, 1300, 1400, 1500).
La fig. 12 muestra un diagrama de interpolación
multifase (1200) con intervalo dinámico (en bits) mejorado para
valores interpolados intermedios. En la primera fase (1210), el
componente aplica (1212) un primer filtro F_{1} a uno o más
valores de entrada (1211) con intervalo de x bits, produciendo uno o
más valores intermedios (1220) con intervalo de y bits, en los que y
es mayor que x. Por ejemplo, los valores intermedios de y bits son
valores de píxel que tienen un intervalo dinámico de más de 8 bits,
y los valores de entrada de x bits tienen un intervalo dinámico de 8
bits.
En cada una de las cero o más fases intermedias
(1222), que no se muestran con detalle, el componente aplica un
filtro a los valores intermedios (1220) con intervalo de y bits. La
salida de las fases intermedias es uno o más valores intermedios
(1229) con intervalo de z bits, en los que z es mayor que x. (En las
fig. 12 a 15, si la última fase es la segunda fase, los valores
intermedios que salen de la primera fase son los valores intermedios
de entrada a la última fase).
En la última fase (1230), el componente aplica
(1232) un último filtro F_{L} al uno o más valores intermedios
(1229) con intervalo de z bits. La salida final es un valor de
salida (1234) con intervalo de x bits. Para cada una de las técnicas
de interpolación multifase (1200, 1300, 1400, 1500), si es
necesario, el componente repite la interpolación multifase (1200,
1300, 1400, 1500) para valores de salida adicionales. En la
interpolación repetida, el componente puede reutilizar ciertos
valores intermedios calculados en interpolaciones anteriores.
La fig. 13 muestra un diagrama de interpolación
multifase (1300) con limitación omitida. Al diferir la limitación,
por ejemplo, se acelera el cálculo, dado que el componente deja de
comparar cada valor intermedio con los extremos superior e inferior
del intervalo. Al diferir la limitación también se conserva la
precisión de los valores intermedios.
En la primera fase (1310), el componente aplica
(1312) un primer filtro F_{1} a uno o más valores de entrada
(1311) con intervalo de x bits. Después de la aplicación del primer
filtro F_{1} no se realiza ninguna limitación. Así, el uno o más
valores intermedios (1320) que salen del primer filtro F_{1}
pueden tener un intervalo 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 intervalo 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 fases intermedias
(1322), que no se muestran con detalle, el componente aplica un
filtro al valor o valores intermedios (1320) no limitados. También
puede omitirse la limitación en las cero o más fases intermedias
(1322). Los valores intermedios (1329) que salen de las cero o más
fases intermedias (1322) se introducen en una última fase (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 limita
(1334) y se produce un valor (1336) con un intervalo de 8 bits.
La fig. 14 muestra un diagrama de interpolación
multifase (1400) con desplazamiento de bits diferido. En la primera
fase (1410), el componente aplica (1412) un primer filtro F_{1} a
uno o más valores de entrada (1411) con intervalo de x bits. En
conjunción con o después de la aplicación del primer filtro F_{1}
se realiza un desplazamiento acortado (1414). El desplazamiento
acortado (1414) es menor que el requerido para garantizar un valor
de salida con un intervalo de x bits (en vista del factor de
expansión de los coeficientes del primer filtro F_{1}) y, por
tanto, menor que el asociado normalmente al primer filtro F_{1}.
En consecuencia, el desplazamiento acortado (1414) produce uno o más
valores intermedios que tienen un intervalo dinámico (de y bits)
mayor que x bits. Por ejemplo, los valores de entrada tienen un
intervalo dinámico de 8 bits, y los valores intermedios tienen un
intervalo dinámico de más de 8 bits.
En cada una de las cero o más fases 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) que tienen un intervalo dinámico de z bits (mayor
que x bits) salen de las cero o más fases intermedias (1422) y, en
una última fase (1430), el componente aplica (1432) un último filtro
F_{L} a los valores (1429). La salida final del último filtro
F_{L} se desplaza con una magnitud superior a la asociada
normalmente al último filtro F_{L}, contrayendo así el intervalo
dinámico del valor de salida (1434) a una profundidad de bits
especificada. Por ejemplo, el intervalo dinámico (en bits) del valor
de salida (1434) es igual a x o x + 1. En una implementación, el
desplazamiento de la primera fase y de cualquier fase intermedia se
difiere lo más posible hasta la última fase. La magnitud con que se
difiere el desplazamiento puede depender de la profundidad de bits
disponible para los cálculos intermedios y de los factores de
expansión de los filtros respectivos.
La fig. 15 muestra una técnica de interpolación
multifase (1500) que usa un control de redondeo alternante por
fases. Las múltiples fases 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 la acumulación de errores de
redondeo entre trama y trama en ciertas secuencias de vídeo. 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 trama y trama, lo que
puede provocar artefactos perceptibles. El control de redondeo
alternante por fases 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 alternante
por fases antes del desplazamiento de bits a la derecha. El
desplazamiento de bits a la derecha produce esencialmente una
división y un truncamiento del valor desplazado a la derecha. Añadir
un valor de redondeo antes del desplazamiento hace que el valor
desplazado se redondee hacia arriba o hacia abajo (al valor entero
más cercano), en vez de redondearse siempre hacia abajo
(truncamiento). 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
fases 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 número entero superior inmediato) de los valores que
tengan un componente fraccionario igual a 0,5 o más (después de una
división correspondiente al desplazamiento de bits). En caso
contrario, dichos valores serían truncamientos (al número entero
inferior inmediato) por el desplazamiento a la derecha. Con
independencia de la suma, los valores que tengan un componente
fraccionario inferior a 0,5 (después de una división
correspondiente al desplazamiento de bits) siguen siendo
truncamientos (al número entero inferior inmediato) por el
desplazamiento a la derecha. A continuación, el control de redondeo
cambia la dirección del redondeo para ciertos valores marginales.
Por ejemplo, en cada una de las múltiples fases se vuelve a ajustar
la salida del filtrado restando 0 ó 1 (el valor del control de
redondeo alternante) 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 fraccionario de 0,5
(después de una división correspondiente al desplazamiento de bits).
Cuando se resta 1, dichos valores marginales se redondean hacia
abajo. En caso contrario, dichos valores marginales se redondean
hacia arriba.
Cada una de las múltiples fases usa un valor de
control de redondeo que alterna entre 0 y 1 antes de la
interpolación multifase, de manera que las distintas fases se
alternan en el modo en que se aplica el valor de control de
redondeo. Alternativamente, la técnica de interpolación multifase
(1500) usa un valor de control de redondeo que se alterna por sí
mismo entre fase y fase.
En la primera fase (1510) de la fig. 15, el
componente aplica (1512) un primer filtro F_{1} a uno o más
valores de entrada (1511) con intervalo de x bits. En conjunción con
o después de la aplicación del primer filtro F_{1} se realiza un
redondeo (1514) sobre la salida del primer filtro F_{1}. El
redondeo (1514) se ajusta por control de redondeo alternante por
fases. Por ejemplo, en la primera fase (1510), el control de
redondeo alternante por fases hace que el valor de salida se
redondee hacia arriba al número entero más cercano si el valor de
salida es un valor marginal (cuyo valor de salida, en caso
contrario, se redondearía hacia abajo). De la primera fase salen uno
o más valores intermedios redondeados (1520) que entran en una
segunda fase (1530).
En la segunda fase (1530), el componente aplica
(1532) un segundo filtro F_{2} al valor o valores intermedios
(1520). Se realiza un redondeo (1534) sobre la salida del segundo
filtro F_{2}. En conjunción con o después de la aplicación del
segundo filtro F_{2}, se realiza un redondeo (1534) con control de
redondeo alternante por fases, cuyo control de redondeo provoca el
redondeo de los valores marginales en la dirección opuesta a la
primera fase. Por ejemplo, en la segunda fase (1530), el control de
redondeo alternante por fases hace que el valor de salida se
redondee hacia abajo al número entero más cercano si el valor de
salida es el valor marginal. De la segunda fase salen uno o más
valores intermedios (1536) que pueden usarse en cero o más fases
adicionales (1540). Las cero o más fases adicionales (1540) pueden
incluir también control de redondeo alternante por fases.
El control de redondeo alternante por fases no
se limita a su aplicación en fases consecutivas, sino que puede
aplicarse en otras combinaciones diversas de fases. Además, la
primera dirección puede depender de una serie de parámetros. Por
ejemplo, en un codificador y descodificador de vídeo, la primera
dirección puede depender del control de redondeo usado en la trama
anterior, o del tipo de trama que esté siendo interpolada (por
ejemplo, una trama I, una trama P o una trama B). En otras formas de
realización, la primera dirección puede fijarse como una constante,
obtenerse implícitamente de una información causal (por ejemplo, de
información codificada/descodificada en el pasado), obtenerse usando
un generador pseudoaleatorio o señalarse como parte del flujo de
bits. El control de redondeo alternante por fases puede aplicarse en
la interpolación multifase mediante el uso de cualquiera de una
diversidad de filtros de interpolación, incluyendo filtros
bilineales, bicúbicos y bicúbicos aproximados.
Como los vectores de movimiento de crominancia
(croma) se obtienen implícitamente de los vectores colocalizados de
movimiento de 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 descodificador sin que la
calidad percibida del vídeo codificado disminuya significativamente.
Además, el codificador y descodificador puede conmutar entre
diferentes modos de redondeo e interpolación para los vectores de
movimiento de crominancia. Por ejemplo, un modo realza la calidad
del vídeo codificado a expensas de una mayor complejidad de cálculo.
Otro modo realza la sencillez del cálculo a expensas de cierta
pérdida de calidad.
En una implementación, un codificador y
descodificador de vídeo usa 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 crominancia. Así, el codificador y descodificador de vídeo opera
selectivamente en uno o dos modos diferentes de redondeo de
crominancia, un modo rápido y un modo básico.
La fig. 16 muestra una técnica (1600) para
seleccionar entre múltiples modos de redondeo e interpolación de
crominancia. Por ejemplo, un codificador o descodificador de vídeo
como el descrito anteriormente con referencia a las fig. 4 y 5,
respectivamente, realiza esta técnica.
El codificador o descodificador de vídeo
determina (1610) si un indicador FASTUVMC de un bit indica el uso de
un modo rápido de compensación de movimiento de crominancia
(indicador = 1) o un modo básico de compensación de movimiento de
crominancia (indicador = 0). Por ejemplo, el indicador es un campo
de nivel de secuencia, correspondiente a un ajuste de usuario, que
un codificador escribe en un flujo de bits de vídeo codificado y un
descodificador lee en el flujo de bits. Alternativamente, el
codificador y el descodificador usan más bits para señalizar un
redondeo de 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 se señaliza en
cualquier otro lugar del flujo de bits y/o se ajusta según unos
criterios diferentes.
A continuación, el codificador o descodificador
de vídeo realiza una compensación de movimiento de crominancia en
modo básico (1620) o modo rápido (1630). Seguidamente 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 usada en la
implementación de modo rápido (1630), descrita más adelante, a una
ordenación diferente para obtener un nivel de rendimiento deseado
con una arquitectura de hardware específica, o se cambia para
trabajar con vectores de movimiento de precisiones diferentes. En
lugar o además del modo básico (1620) y del modo rápido (1630), el
codificador o descodificador puede usar otros modos para el redondeo
e interpolación de vectores de movimiento de crominancia.
En una implementación, en modo rápido (por
ejemplo, si el indicador de redondeo de crominancia = 1), los
vectores de movimiento de 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) se redondean a las
posiciones más cercanas de píxel completo, los vectores de
movimiento de crominancia que se encuentran en desviaciones de medio
píxel se desredondean a la izquierda, y se usa un filtrado bilineal
para toda la interpolación de crominancia. En este modo, la
velocidad del codificador y del descodificador 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 e 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
descodificación. Dado que esto se realiza sólo en la interpolación
de crominancia, la pérdida de codificación y de calidad
(especialmente la calidad visible) es insignificante.
En este modo rápido se hace el siguiente nivel
de redondeo final sobre los vectores de movimiento de
crominancia:
//RndTbl[-3] = -1, RndTbl[-2] = 0,
RndTbl[-1] = +1, RndTbl[-2] =
0
- \quad
- //RndTbl[1] = -1, RndTbl[2] = 0, RndTbl[3] = +1
- \quad
- cmv_x = cmv_x + RndTbl[cmv_x % 4];
- cmv_y = cmv_y + RndTbl[cmv_y % 4]
- (39)
en los que cmv_x y cmv_y
representan las coordenadas x e y del vector de movimiento de
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í, cuando cmv_x (o cmv_y) es
divisible por 4, entonces el vector de movimiento de crominancia
tiene una desviación entera. Cuando cmv_x % 4 = +/-2, entonces el
vector de movimiento de crominancia tiene una desviación de medio
píxel. Y cuando cmv_x % 4 = +/-1 o +/-3, entonces el vector de
movimiento de crominancia tiene una desviación de un cuarto de
píxel. Como puede verse por la operación de reordenación anterior,
las posiciones de un cuarto de píxel se desautorizan mediante el
redondeo del vector de movimiento de crominancia a la posición
entera más cercana (las posiciones de medio píxel quedan inalteradas
por la izquierda). Así, este modo reordena las coordenadas de
crominancia a las posiciones de píxel entero y de medio píxel. Para
obtener con este modo una aceleración de la velocidad, puede usarse
un filtrado bilineal para todas las interpolaciones de 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 usarse
independientemente (es decir, como único modo
posible).
La fig. 17 es una tabla (1700) que ilustra este
modo rápido de redondeo de crominancia. La primera fila (1710)
muestra valores del vector de movimiento de luminancia con una
precisión de un cuarto de píxel. Aunque los valores del vector de
movimiento de luminancia se muestran en términos de su desviación
fraccionaria con respecto a valores de píxeles enteros, podrían
representarse como valores enteros en los cuales cada entero
representara 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 valores del vector de
movimiento de crominancia correspondientes de manera que tengan una
precisión de un píxel entero y de medio píxel.
En el segundo modo, básico, de esta
implementación (por ejemplo, si el indicador de redondeo de
crominancia = 0), los vectores de movimiento de crominancia que
tengan desviaciones de un cuarto de píxel sin ningún error de
redondeo se mantienen con las desviaciones de un cuarto de píxel.
Los vectores de movimiento de crominancia con otras desviaciones
subpíxel se redondean a la posición de un píxel o de medio píxel más
cercana. En este modo, la velocidad del descodificador puede ser
menor que en otros modos, pero la precisión con la que se calculan
los valores de píxel de crominancia es mayor. Así, 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
crominancia puede usarse el filtrado bicúbico o bilineal según se ha
descrito anteriormente.
La fig. 18 es una tabla que ilustra este modo
básico de redondeo de crominancia. La primera fila (1810) muestra
valores del vector de movimiento de 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 valores correspondientes del vector de
movimiento de 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 crominancia se redondea a otras
resoluciones del espacio de crominancia.
Habiendo descrito e ilustrado los principios de
la invención con referencia a diversas formas de realización, se
apreciará que las diversas formas de realización pueden modificarse
en su disposición y detalle sin apartarse de dichos principios. Por
ejemplo, los principios y técnicas descritos anteriormente no están
limitados a su uso en un codificador de vídeo y/o un descodificador
de vídeo. En su lugar, pueden aplicarse a cualquier contexto de
cálculo en el que se calcule un valor basándose en parte en uno o
más valores intermedios o en el que se usen filtros separables en
múltiples dimensiones.
Debe entenderse que los programas, procesos o
procedimientos descritos en la presente memoria descriptiva no se
refieren ni se limitan a ningún tipo particular de entorno de
cálculo, a menos que se indique lo contrario. Pueden usarse diversos
tipos de entornos de cálculo especializados o de propósito general
para realizar las operaciones según las enseñanzas descritas en la
presente memoria descriptiva. Elementos de formas de realización que
se muestran en software pueden implementarse en hardware y a la
inversa.
A la vista de las muchas formas de realización
posibles a las que pueden aplicarse los principios de la presente
invención, los autores reclaman la invención para todas estas formas
de realización en cuanto puedan encuadrarse dentro del ámbito de las
siguientes reivindicaciones y equivalentes de las mismas.
Claims (8)
1. Un procedimiento de interpolación
bicúbica que comprende:
para una primera fase (810, 1410) de
interpolación bicúbica, filtrado (812, 1412) de muestras de una
trama de vídeo de referencia (600) en una primera dimensión usando
un filtro bicúbico aproximado que tiene coeficientes de filtro,
incluyendo desplazamiento de bits (814, 1414) para compensar la
expansión debida a los coeficientes de filtro en la primera fase, en
el que al menos parte del desplazamiento de bits se difiere, y en el
que el filtrado para la primera fase produce resultados intermedios
(820, 1420); y para una segunda fase (830, 1430) de la interpolación
bicúbica, filtrado (832, 1432) de los resultados intermedios en una
segunda dimensión usando el filtro bicúbico aproximado, incluyendo
desplazamiento de bits (834, 1434) para compensar el desplazamiento
de bits diferido y para expansión debida a los coeficientes de
filtro en la segunda fase,
en el que el filtro bicúbico aproximado se
aproxima a un filtro bicúbico puro que aplica un factor de
normalización a una suma ponderada de productos de valores de
coeficientes de filtro enteros y valores de muestra, en el que el
filtro bicúbico aproximado aplica valores de coeficientes de filtro
reducidos y un factor de normalización reducido, en el que el
desplazamiento de bits diferido se define para usar completamente
pero sin superar una profundidad de bits disponible de una
arquitectura objeto en la segunda fase.
2. El procedimiento de la
reivindicación 1 en el que los coeficientes de filtro del filtro
bicúbico aproximado tienen una suma y un factor de expansión que
están reducidos con respecto a la suma y el factor de expansión de
los coeficientes de filtro de un filtro bicúbico puro, permitiendo
así el desplazamiento de bits diferidos en aritmética de 16 bits
para muestras de 8 bits de la trama de vídeo de referencia.
3. El procedimiento de la reivindicación
1 en el que los coeficientes de filtro del filtro bicúbico
aproximado tienen una suma de 64.
4. El procedimiento de la reivindicación
1 en el que los coeficientes de filtro del filtro bicúbico
aproximado son -4, 53, 18 y -3.
5. Un medio legible por ordenador que
almacena instrucciones ejecutables por ordenador para hacer que un
sistema informático realice el procedimiento de la reivindicación 1
durante codificación de vídeo.
6. Un medio legible por ordenador que
almacena instrucciones ejecutables por ordenador para hacer que un
sistema informático realice el procedimiento de la reivindicación 1
durante descodificación de vídeo.
7. Un sistema de codificación de vídeo
que comprende medios para realizar el procedimiento de una
cualquiera de las reivindicaciones 1 a 4.
8. Un sistema de descodificación de
vídeo que comprende medios para realizar el procedimiento de una
cualquiera de las reivindicaciones 1 a 4.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US371860 | 1982-04-26 | ||
US37186002P | 2002-04-10 | 2002-04-10 | |
US10/379,606 US7110459B2 (en) | 2002-04-10 | 2003-03-04 | Approximate bicubic filter |
US379606 | 2003-03-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2278087T3 true ES2278087T3 (es) | 2007-08-01 |
Family
ID=28794436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES03007021T Expired - Lifetime ES2278087T3 (es) | 2002-04-10 | 2003-03-27 | Filtro bicubico aproximado. |
Country Status (9)
Country | Link |
---|---|
US (1) | US7110459B2 (es) |
EP (1) | EP1359763B1 (es) |
JP (1) | JP4625240B2 (es) |
KR (1) | KR100681972B1 (es) |
CN (1) | CN1238798C (es) |
AT (1) | ATE350860T1 (es) |
DE (1) | DE60310800T2 (es) |
ES (1) | ES2278087T3 (es) |
HK (1) | HK1060242A1 (es) |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7620109B2 (en) * | 2002-04-10 | 2009-11-17 | Microsoft Corporation | Sub-pixel interpolation in motion estimation and compensation |
JP4102973B2 (ja) * | 2002-04-24 | 2008-06-18 | 日本電気株式会社 | 動画像の符号化方法および復号化方法、これを用いた装置とプログラム |
US7336720B2 (en) * | 2002-09-27 | 2008-02-26 | Vanguard Software Solutions, Inc. | Real-time video coding/decoding |
US7869516B2 (en) * | 2003-03-31 | 2011-01-11 | Hewlett-Packard Development Company, L.P. | Motion estimation using bit-wise block comparisons for video compresssion |
US8824553B2 (en) * | 2003-05-12 | 2014-09-02 | Google Inc. | Video compression method |
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 |
US7512182B2 (en) * | 2004-08-30 | 2009-03-31 | General Instrument Corporation | Method and apparatus for performing motion compensated temporal filtering in video encoding |
FR2876860A1 (fr) * | 2004-10-20 | 2006-04-21 | Thomson Licensing Sa | Procede de codage hierarchique d'images video |
US20060285597A1 (en) * | 2005-06-20 | 2006-12-21 | Flextronics International Usa, Inc. | Reusing interpolated values in advanced video encoders |
EP2472507B1 (en) * | 2005-10-14 | 2016-02-10 | Samsung Display Co., Ltd. | Improved gamut mapping and subpixel rendering systems and methods |
CN1794821A (zh) * | 2006-01-11 | 2006-06-28 | 浙江大学 | 可分级视频压缩中插值的方法与装置 |
WO2007116551A1 (ja) * | 2006-03-30 | 2007-10-18 | Kabushiki Kaisha Toshiba | 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法 |
WO2007114368A1 (ja) * | 2006-03-30 | 2007-10-11 | Kabushiki Kaisha Toshiba | 画像符号化装置及び方法並びに画像復号化装置及び方法 |
US8208553B2 (en) * | 2006-05-04 | 2012-06-26 | Altera Corporation | Methods and apparatus for quarter-pel refinement in a SIMD array processor |
EP2092752A2 (en) * | 2006-12-01 | 2009-08-26 | France Telecom | Adaptive interpolation method and system for motion compensated predictive video coding and decoding |
US7529404B2 (en) * | 2007-06-20 | 2009-05-05 | Ahdoot Ned M | Digital video filter and image processing |
US8023562B2 (en) * | 2007-09-07 | 2011-09-20 | Vanguard Software Solutions, Inc. | Real-time video coding/decoding |
US8638852B2 (en) | 2008-01-08 | 2014-01-28 | Qualcomm Incorporated | Video coding of filter coefficients based on horizontal and vertical symmetry |
GB0800277D0 (en) * | 2008-01-08 | 2008-02-13 | Imagination Tech Ltd | Video motion compensation |
US20090201380A1 (en) * | 2008-02-12 | 2009-08-13 | Decisive Analytics Corporation | Method and apparatus for streamlined wireless data transfer |
US8326075B2 (en) | 2008-09-11 | 2012-12-04 | Google Inc. | System and method for video encoding using adaptive loop filter |
US8131056B2 (en) * | 2008-09-30 | 2012-03-06 | International Business Machines Corporation | Constructing variability maps by correlating off-state leakage emission images to layout information |
JP5697301B2 (ja) * | 2008-10-01 | 2015-04-08 | 株式会社Nttドコモ | 動画像符号化装置、動画像復号装置、動画像符号化方法、動画像復号方法、動画像符号化プログラム、動画像復号プログラム、及び動画像符号化・復号システム |
US8315434B2 (en) * | 2009-01-06 | 2012-11-20 | Avago Technologies Ecbu Ip (Singapore) Pte. Ltd. | Absolute tracking in a sub-pixel range |
US20100235314A1 (en) * | 2009-02-12 | 2010-09-16 | Decisive Analytics Corporation | Method and apparatus for analyzing and interrelating video data |
US8458105B2 (en) * | 2009-02-12 | 2013-06-04 | Decisive Analytics Corporation | Method and apparatus for analyzing and interrelating data |
WO2010126783A2 (en) * | 2009-04-30 | 2010-11-04 | Roman Gitlin | Method and apparatus for streamlined implementation of interpolation in multiple dimensions |
WO2011100347A2 (en) | 2010-02-09 | 2011-08-18 | Vanguard Software Solutions, Inc. | Video sequence encoding system and algorithms |
KR101682147B1 (ko) * | 2010-04-05 | 2016-12-05 | 삼성전자주식회사 | 변환 및 역변환에 기초한 보간 방법 및 장치 |
US9049454B2 (en) | 2011-01-19 | 2015-06-02 | Google Technology Holdings Llc. | High efficiency low complexity interpolation filters |
US20120224639A1 (en) * | 2011-03-03 | 2012-09-06 | General Instrument Corporation | Method for interpolating half pixels and quarter pixels |
US8437581B2 (en) | 2011-03-04 | 2013-05-07 | General Instrument Corporation | Method and system for interpolating fractional video pixels |
US20120230407A1 (en) | 2011-03-11 | 2012-09-13 | General Instrument Corporation | Interpolation Filter Selection Using Prediction Index |
US8780971B1 (en) | 2011-04-07 | 2014-07-15 | Google, Inc. | System and method of encoding using selectable loop filters |
US8780996B2 (en) | 2011-04-07 | 2014-07-15 | Google, Inc. | System and method for encoding and decoding video data |
US8781004B1 (en) | 2011-04-07 | 2014-07-15 | Google Inc. | System and method for encoding video using variable loop filter |
CN102811346B (zh) * | 2011-05-31 | 2015-09-02 | 富士通株式会社 | 编码模式选择方法和系统 |
EP2724534A2 (en) | 2011-06-24 | 2014-04-30 | Motorola Mobility LLC | Selection of phase offsets for interpolation filters for motion compensation |
JP5727673B2 (ja) | 2011-07-01 | 2015-06-03 | モトローラ モビリティ エルエルシーMotorola Mobility Llc | 時間予測のためのジョイントサブピクセル補間フィルタ |
US8885706B2 (en) | 2011-09-16 | 2014-11-11 | Google Inc. | Apparatus and methodology for a video codec system with noise reduction capability |
JP2013098933A (ja) * | 2011-11-04 | 2013-05-20 | Sony Corp | 画像処理装置および方法 |
US8693551B2 (en) | 2011-11-16 | 2014-04-08 | Vanguard Software Solutions, Inc. | Optimal angular intra prediction for block-based video coding |
US9131073B1 (en) | 2012-03-02 | 2015-09-08 | Google Inc. | Motion estimation aided noise reduction |
US9344729B1 (en) | 2012-07-11 | 2016-05-17 | Google Inc. | Selective prediction signal filtering |
US9185437B2 (en) | 2012-11-01 | 2015-11-10 | Microsoft Technology Licensing, Llc | Video data |
US20140119446A1 (en) * | 2012-11-01 | 2014-05-01 | Microsoft Corporation | Preserving rounding errors in video coding |
US9106922B2 (en) | 2012-12-19 | 2015-08-11 | Vanguard Software Solutions, Inc. | Motion estimation engine for video encoding |
KR20140123008A (ko) * | 2013-04-05 | 2014-10-21 | 삼성전자주식회사 | 휘도차를 보상하기 위한 인터 레이어 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치 |
US9762920B2 (en) * | 2013-06-07 | 2017-09-12 | Qualcomm Incorporated | Dynamic range control of intermediate data in resampling process |
US10015515B2 (en) * | 2013-06-21 | 2018-07-03 | Qualcomm Incorporated | Intra prediction from a predictive block |
TWI602144B (zh) * | 2013-10-02 | 2017-10-11 | 國立成功大學 | 包裝彩色圖框及原始景深圖框之方法、裝置及系統 |
US9774881B2 (en) | 2014-01-08 | 2017-09-26 | Microsoft Technology Licensing, Llc | Representing motion vectors in an encoded bitstream |
US9749642B2 (en) | 2014-01-08 | 2017-08-29 | Microsoft Technology Licensing, Llc | Selection of motion vector precision |
US9942560B2 (en) | 2014-01-08 | 2018-04-10 | Microsoft Technology Licensing, Llc | Encoding screen capture data |
US9883197B2 (en) | 2014-01-09 | 2018-01-30 | Qualcomm Incorporated | Intra prediction of chroma blocks using the same vector |
US10863200B2 (en) * | 2014-07-25 | 2020-12-08 | Intel Corporation | Techniques for performing a forward transformation by a video encoder using a forward transform matrix |
US10102613B2 (en) | 2014-09-25 | 2018-10-16 | Google Llc | Frequency-domain denoising |
JP6473608B2 (ja) | 2014-11-27 | 2019-02-20 | 三星ディスプレイ株式會社Samsung Display Co.,Ltd. | 画像処理装置、画像処理方法、及びプログラム |
WO2016147836A1 (ja) * | 2015-03-13 | 2016-09-22 | ソニー株式会社 | 画像処理装置および方法 |
US10009622B1 (en) | 2015-12-15 | 2018-06-26 | Google Llc | Video coding with degradation of residuals |
CN106127757B (zh) * | 2016-06-21 | 2018-10-23 | 鲁东大学 | 基于改进遗传算法的夜晚安防监控视频分割方法及装置 |
FR3087309B1 (fr) * | 2018-10-12 | 2021-08-06 | Ateme | Optimisation d'un sous-echantillonnage intervenant avant le codage d'images en compression |
US11102487B2 (en) * | 2019-08-30 | 2021-08-24 | Adobe Inc. | Image resampling for DCT based image encoding formats using memory efficient techniques |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0294958B1 (en) * | 1987-06-09 | 1995-08-23 | Sony Corporation | Motion compensated interpolation of digital television images |
US5103306A (en) * | 1990-03-28 | 1992-04-07 | Transitions Research Corporation | Digital image compression employing a resolution gradient |
US5594813A (en) * | 1992-02-19 | 1997-01-14 | Integrated Information Technology, Inc. | Programmable architecture and methods for motion estimation |
JPH06343172A (ja) * | 1993-06-01 | 1994-12-13 | Matsushita Electric Ind Co Ltd | 動きベクトル検出方法及び動きベクトル符号化方法 |
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 |
GB2301972B (en) * | 1995-06-06 | 1999-10-20 | Sony Uk Ltd | Video compression |
US6026182A (en) * | 1995-10-05 | 2000-02-15 | Microsoft Corporation | Feature segmentation |
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 |
US5787203A (en) * | 1996-01-19 | 1998-07-28 | Microsoft Corporation | Method and system for filtering compressed video images |
US5692063A (en) * | 1996-01-19 | 1997-11-25 | Microsoft Corporation | Method and system for unrestricted motion estimation for video |
US5799113A (en) * | 1996-01-19 | 1998-08-25 | Microsoft Corporation | Method for expanding contracted video images |
US6957350B1 (en) * | 1996-01-30 | 2005-10-18 | Dolby Laboratories Licensing Corporation | Encrypted and watermarked temporal and resolution layering in advanced television |
US5982438A (en) * | 1996-03-22 | 1999-11-09 | Microsoft Corporation | Overlapped motion compensation for object coding |
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 |
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 |
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 |
ES2431802T3 (es) * | 1997-06-09 | 2013-11-28 | Hitachi, Ltd. | Procedimiento de decodificación de imágenes y decodificador de imágenes |
JPH1169345A (ja) * | 1997-06-11 | 1999-03-09 | Fujitsu Ltd | フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法 |
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 |
US6122017A (en) * | 1998-01-22 | 2000-09-19 | Hewlett-Packard Company | Method for providing motion-compensated multi-field enhancement of still images from video |
JP4026238B2 (ja) * | 1998-07-23 | 2007-12-26 | ソニー株式会社 | 画像復号装置及び画像復号方法 |
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 |
US6320593B1 (en) * | 1999-04-20 | 2001-11-20 | Agilent Technologies, Inc. | Method of fast bi-cubic interpolation of image information |
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 |
CN101448162B (zh) | 2001-12-17 | 2013-01-02 | 微软公司 | 处理视频图像的方法 |
US7277587B2 (en) * | 2002-04-26 | 2007-10-02 | Sharp Laboratories Of America, Inc. | System and method for lossless video coding |
-
2003
- 2003-03-04 US US10/379,606 patent/US7110459B2/en active Active
- 2003-03-27 EP EP03007021A patent/EP1359763B1/en not_active Expired - Lifetime
- 2003-03-27 DE DE60310800T patent/DE60310800T2/de not_active Expired - Lifetime
- 2003-03-27 AT AT03007021T patent/ATE350860T1/de not_active IP Right Cessation
- 2003-03-27 ES ES03007021T patent/ES2278087T3/es not_active Expired - Lifetime
- 2003-04-09 KR KR1020030022411A patent/KR100681972B1/ko active IP Right Grant
- 2003-04-10 JP JP2003107078A patent/JP4625240B2/ja not_active Expired - Lifetime
- 2003-04-10 CN CNB031103774A patent/CN1238798C/zh not_active Expired - Lifetime
-
2004
- 2004-05-03 HK HK04103091A patent/HK1060242A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
EP1359763B1 (en) | 2007-01-03 |
HK1060242A1 (en) | 2004-07-30 |
CN1456992A (zh) | 2003-11-19 |
DE60310800T2 (de) | 2007-04-26 |
EP1359763A3 (en) | 2004-08-11 |
CN1238798C (zh) | 2006-01-25 |
JP2003333603A (ja) | 2003-11-21 |
US7110459B2 (en) | 2006-09-19 |
US20030194009A1 (en) | 2003-10-16 |
EP1359763A2 (en) | 2003-11-05 |
ATE350860T1 (de) | 2007-01-15 |
JP4625240B2 (ja) | 2011-02-02 |
DE60310800D1 (de) | 2007-02-15 |
KR20030081115A (ko) | 2003-10-17 |
KR100681972B1 (ko) | 2007-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2278087T3 (es) | Filtro bicubico aproximado. | |
ES2254811T3 (es) | Interpolacion subpixel en la estimacion y compesacion del movimiento. | |
ES2266665T3 (es) | Control del redondeo para la interpolacion multietapa. | |
ES2269850T3 (es) | Redondeos del vector de movimiento de crominancia. | |
JP5590574B2 (ja) | 多重解像度ビデオ符号化および復号化のための再サンプリングおよび画像サイズ変更の演算 | |
RU2683591C1 (ru) | Способ и устройство для компенсации движения с предсказанием | |
ES2275037T3 (es) | Procedimiento de codificacion de video con compensacion de fundido. | |
JP2010045816A (ja) | ビデオ符号化における中間画素高精度高速探索を実現する装置及び方法 | |
NZ590990A (en) | Content adaptive and art directable scalable video coding | |
JP5323252B2 (ja) | 動画像符号化方法、復号化方法、符号化装置および復号化装置 | |
JPH09502840A (ja) | テレビ画像サブバンド両立式符号化用エンコーダ/デコーダ及びツリー構造による階層的運動符号化へのその応用 | |
JP5612177B2 (ja) | 動画像符号化方法、復号化方法、符号化装置および復号化装置 |