ES2269850T3 - Redondeos del vector de movimiento de crominancia. - Google Patents

Redondeos del vector de movimiento de crominancia. Download PDF

Info

Publication number
ES2269850T3
ES2269850T3 ES03007020T ES03007020T ES2269850T3 ES 2269850 T3 ES2269850 T3 ES 2269850T3 ES 03007020 T ES03007020 T ES 03007020T ES 03007020 T ES03007020 T ES 03007020T ES 2269850 T3 ES2269850 T3 ES 2269850T3
Authority
ES
Spain
Prior art keywords
chrominance
pixel
motion vector
luminance
rounding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES03007020T
Other languages
English (en)
Inventor
Sridhar Srinivasan
Kunal Mukerjee
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2269850T3 publication Critical patent/ES2269850T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/162User input
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Procedimiento de codificación o descodificación de video implementado en un sistema informático (300), comprendiendo el procedimiento: la selección (1610) de un modo entre múltiples modos disponibles de redondeo de vector de movimiento de crominancia; la computación de un vector de movimiento de luminancia para un conjunto de valores de píxel dentro de una trama de vídeo prevista con respecto a una trama de vídeo de referencia en un espacio de luminancia; y la conversión del vector de movimiento de luminancia en un vector de movimiento de crominancia, llevándose a cabo la conversión de un modo entre múltiples modos disponibles de redondeo de vector de movimiento de crominancia, en el que, comparado con un primer modo (1620) entre múltiples modos disponibles de redondeo de vector de movimiento de crominancia, un segundo modo (1630) de los múltiples modos disponibles de redondeo de vector de movimiento de crominancia disminuye la precisión del vector de movimiento de crominancia y reduce conello la complejidad computacional de la compensación de movimiento subsecuente.

Description

Redondeos del vector de movimiento de crominancia.
Campo técnico
Se describen técnicas y herramientas destinadas a los redondeos de vector de movimiento de crominancia. Por ejemplo un codificador o descodificador de vídeo utiliza uno entre múltiples modos de redondeo de vector de movimiento de crominancia, incluyendo un modo en el que los vectores de movimiento de crominancia pueden tener una precisión de un cuarto de píxel.
Antecedentes
El vídeo digital consume grandes cantidades de capacidad de transmisión y memoria. Una típica secuencia de vídeo digital en bruto incluye 15 o 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 elemento diminuto de la imagen. En bruto una computadora habitualmente representa un píxel con 24 bits. Por ejemplo, un píxel puede comprender un valor de luminancia de 8 bits (también llamado valor luma) que define el componente de la escala de grises del píxel y dos valores de crominancia de 8 bits (también llamados valores croma) que definen el componente de color del píxel. Así, el número de bits por segundo, o tasa de bits, de una secuencia de vídeo digital en bruto típica puede ser de 5 millones de bits o más.
Muchas computadoras y redes de computadoras carecen de recursos para procesar un vídeo digital en bruto. Por esta razón los ingenieros utilizan la compresión (también llamada codificación) para reducir la tasa de bits del vídeo digital. La compresión puede ser sin pérdidas, en la cual no se resiente la calidad del vídeo, pero las reducciones de la tasa de bits están limitadas por la complejidad del vídeo. O bien, la compresión puede ser con pérdidas en la cual se resiente la calidad del vídeo, pero las reducciones de la tasa de bits son más drásticas. La descompresión invierte la compresión.
En general, las técnicas de compresión de vídeo incluyen la compresión intratramas y la compresión intertramas. Las técnicas de compresión intratramas comprimen tramas individuales, típicamente llamadas tramas-I o tramas clave. Las técnicas de compresión intertramas comprimen tramas con referencia a tramas precedentes y/o subsecuentes, típicamente llamadas tramas previstas, tramas-P o tramas-B.
El Vídeo Media Windows de Microsoft Corporation, Versión 8 ("WMV8") incluye un codificador de vídeo y un descodificador de vídeo. El codificador WMV8 utiliza la compresión intratramas e intertramas, y el descodificador WMV8 utiliza la descrompresión intertramas e intratramas. La compresión intratamas del codificador WMV8 utiliza una codificación de previsión de movimiento compensado a base de bloques seguida de una codificación de transformación de error residual.
En el WMV8, una trama se representa en forma de tres planos de píxel: un plano de luminancia (Y) de los valores de píxel de luminancia y dos planos de crominancia (U, V) de valores de píxel de crominancia. La resolución del plano Y es el doble de la resolución de los planos U y V horizontal y verticalmente. Por tanto, 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 fracciona una trama prevista en bloques de píxeles de 8 x 8. Los grupos de cuatro bloques de luminancia de 8 x 8 y los dos bloques anexos de crominancia de 8 x 8 (uno para el plano de crominancia U, y uno por el plano de crominancia V) forman unos macrobloques de 16 x 16. Así, cada macro bloque 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 prevista, el codificador WMV8 efectúa la estimación de movimiento. La estimación de movimiento aproxima el movimiento de un macrobloque de una trama prevista buscando y haciendo coincidir el macrobloque dentro de la trama prevista con un macrobloque procedente de una trama de referencia. En la Figura 1, por ejemplo, el codificador WMV8 computa un vector de movimiento de un macrobloque (115) dentro de la trama prevista (110). Para computar el vector de movimiento, el codificador busca en un área de búsqueda (135) de una trama de referencia (130). Dentro de dicha área de búsqueda (135), el codificador compara los valores de luminancia del macrobloque (115) derivados de la trama prevista (110) con los valores de luminancia de diversos bloques candidatos procedentes de la trama de referencia (130) con el fin de encontrar un adecuado encaje. El codificador WMV8 puede conmutar la precisión del vector de movimiento, y puede utilizar una extensión de búsqueda y unos vectores de movimiento con una resolución horizontal de un cuarto de píxel, de medio píxel, o de un píxel entero y una resolución vertical de medio píxel o de un píxel entero. Con vectores de movimiento de subpíxeles precisos, el codificador WMV8 puede aproximar el movimiento de los subpíxeles en una secuencia de vídeo.
Durante la compensación de movimiento el codificador WMV8 utiliza los vectores de movimiento para macrobloques de la trama prevista para determinar los predictores de los macrobloques a partir de la trama de referencia. Para cada uno de los macrobloques de movimiento previstos, el codificador WMV8 computa la diferencia (llamada residual o error) entre el macrobloque original y su predictor. El codificador WMV8 fracciona el residual en bloques y comprime en pérdidas los bloques residuales. Para reconstruir los macrobloques de movimiento previstos de la trama prevista, el codificador WMV8 descomprime los residuales y los añade a los predictores de los respectivos macrobloques.
El descodificador WMV8 utiliza también los vectores de movimiento para los macrobloques de la trama prevista para determinar los predictores para los macrobloques a partir de la trama de referencia. Para reconstruir los macrobloques de movimiento previstos de la trama prevista, el descodificador WMV8 descomprime los residuales y los suma los predictores para los macrobloques.
Durante la estimación o compensación de movimiento, cuando un vector de movimiento tiene una precisión de subpíxels (esto es, un cuarto de píxel o medio píxel), el codificador o el descodificador WMV8 debe determinar los valores de píxel en posiciones de subpíxel dentro de la trama de referencia. El codificador o descodificador WMV8 genera unos valores para posiciones de subpíxel utilizando filtros de interpolación. La Figura 2 muestra posiciones de muestra de subpíxel H_{0}, H_{1}, H_{2}, que tienen valores computados mediante la interpolación de valores de píxel entero a, b, c, ..., p.
Al operar con una precisión de movimiento de medio píxel, los filtros de interpolación utilizados para los valores de píxel de luminancia al nivel de las tres posiciones de medio píxel diferentes 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),
donde R_{1} y R_{2} son valores de control de redondeo que son controlados por un indicador de control de redondeo de un bit que indica un valor de redondeo para una trama concreta. Si el indicador de control de redondeo se fija en 0, entonces R_{1} = 2 y R_{2} = 1. Si el indicador de control de redondeo se fija en 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 vuelve a fijar en 0. Así, el control de redondeo opera sobre una base de trama por trama.
Las Ecuaciones 1, 2 y 3 son ejemplos de interpolaciones bilineales. La interpolación bilineal es rápida y tiende a alisar los valores de píxel. El alisado puede tener efectos deseables (como por ejemplo la reducción de la perceptibilidad del ruido de cuantificación), pero puede también conducir a una pérdida de la información del píxel válido.
Para una resolución del vector de movimiento de un cuarto de píxel, el codificador o descodificador WMV8 emplea primeramente unos filtros bicúbicos para interpolar los valores de píxel de luminancia en las posiciones de medio píxel. La interpolación bicúbica es más lenta que la interpolación bilineal, pero tiende a preservar los valores de los bordes y produce menos pérdida de la información del píxel válido. Los filtros bicúbicos para las tres posiciones de medio píxel diferenciadas 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),
donde t_{0}, t_{1}, t_{2}, t_{3} se computan 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 - I + 8) >> 4
(9), y
t_{3} = (-m + 9n + 9o - p + 8) >> 4
(10).
Las ecuaciones (4) - (10) puede producir una salida fuera de la amplitud de los valores de entrada.
Por ejemplo, para una entrada de 8 bits (0 ... 255), la serie de valores 0 255 255 0 produce un valor de salida de 287 en cualquiera de las ecuaciones (4) - (10). Por tanto, el codificador o descodificador WMV8 fija (o "grapa") el valor de salida de cualquiera de las ecuaciones (4) - (10) para situarlo dentro del intervalo válido. Por ejemplo, para los valores de salida de 8 bits, los valores inferiores a 0 se cambian a 0, y los valores de 255 se cambian a 255. La fijación resuelve el problema de la amplitud pero ralentiza la computación. Además, la fijación supone pérdida de precisión.
El codificador o descodificador WMV8 a continuación computa los valores de píxel en determinadas posiciones de cuarto de píxel en una etapa subsecuente de interpolación. Estos emplazamientos de cuarto de píxel son situados horizontalmente en medio de, o bien dos emplazamientos de medio píxel o de un emplazamiento de un píxel entero y de un emplazamiento de medio píxel. Para estos emplazamientos de cuarto de píxel, el codificador o descodificador WMV8 utiliza una interpolación bilineal (esto es, (x + y + 1) >> 1) empleando los dos emplazamientos horizontalmente vecinos de medio píxel/píxel entero sin control de redondeo.
Una vez que los vectores de movimiento de luminancia son computados, el codificador o descodifiador WMV8 deriva los vectores de movimiento de crominancia cosituados. Debido a que el plano de crominancia del WMV8 es la mitad de grande que el plano de luminancia tanto horizontal como verticalmente, los valores de vector de luminancia deben ser graduados hasta adoptar los valores apropiados de vector de movimiento de crominancia. En el WMV8 este procedimiento de conversión incluye reducir a la mitad los vectores de movimiento de luminancia y el redondeo de los vectores de movimiento de crominancia resultantes de una precisión de medio píxel. Así, los vectores de movimiento de luminancia con una precisión de medio píxel no son convertidos en vectores de movimiento de crominancia con una precisión de un cuarto de píxel. Así mismo, el redondeo de crominancia en el WMV8 opera en un modo único que no puede ser modificado o seleccionado por el usuario.
En el WMV8, los valores de píxel en las posiciones de subpíxel dentro de una trama de referencia pueden mostrar un infrallenado o desbordamiento en algunas circunstancias. Por ejemplo, el valor del píxel de luminancia en una posición de cuarto de píxel puede ser 271 (lo que está fuera de la distancia de 0 ... 255) si el valor de posición del píxel entero vecino es de 255 y el valor de posición del medio píxel vecino es 287 (0 + 9*255 + 9*255 - 0 + 8 >> 4 = 287) (255 + 287 + 1 >> 1 = 271). Para resolver este problema, después de añadir los bloques residuales al predictor para un macrobloque, el codificador y descodificador WMV8 fijan los valores reconstruídos para el macrobloque para que se situen dentro de los márgenes de 0 ... 255, si es necesario.
A parte del WMV8, diversos estándares internacionales se refieren a la compresión y descompresión de vídeo. Estos estándares incluyen los estándares 1, 2, y 4 del Grupo de Expertos de Imágenes de Movimiento ["MPEG"] y los estándares H.261, H.262, y H.263 de la Unión de Telecomunicación Internacional ["ITU"]. Como el WMV8, estos estándares utilizan una combinación de compresión de intratramas e intertramas, aunque los estándares típicamente difieren del WMV8 en los detalles de las técnicas de compresión utilizadas.
Diversos estándares (por ejemplo el MPEG 4 y H.263) proporcionan una estimación y compensación de movimiento de medio píxel utilizando filtros bilineales y un control de redondeo básico. Así mismo, en el H.263 los vectores de movimiento de crominancia que teóricamente tienen una resolución de un cuarto de píxel (esto es, la mitad de resolución de los vectores de movimiento de crominancia de medio píxel), son redondeados en una precisión de o bien medio píxel o bien de un píxel entero, de forma que ningún valor de un cuarto de píxel se admite en el espacio de crominancia. Para detalles adicionales acerca de la compensación/estimación de movimiento de los estándares, véanse las especificaciones mismas de los estándares.
La Solicitud de Patente europea No. EP 0 884 912 A2 describe unos codificadores y descodificadores de vídeo que utilizan tanto las tramas P+ (valores de medio entero de redondeo lejos de 0) y tramas P- (valores de medio entero de redondeo hacia 0) para cancelar los errores de redondeo y evitar la acumulación de los errores de redondeo. Kun-Min Yang, et al.: "Par-Chip VLSI de Gran Eficacia para la Correspondencia de Bloques de Búsqueda Total con Precisión Fracctional" ["Very High Efficiency VLSI Chip-Pair for Full Search Block Matching with Fracctional Precision"] Proc. ICASSP, Conferencia Internacional sobre Acústica, Voz y Tratamiento de Señales del IEEE [IEEE International Conference on Acoustics, Speech, and Signal Processing], Glasgow, UK, Mayo 23 a 26, 1989, XP 010083029 describe unos diseños e implementaciones de arquitectura de VLSI de un chip-par para el algoritmo de coincidencia de bloques de búsqueda total de compensación de movimiento. La Patente estadounidense No. 5,659,365 describe unos vectores de movimiento de crominancia utilizando la información de redondeo contenido en un extra bit para unos vectores de movimiento de luminancia que son valorados e impares. Masahiro Iwahashi et al., "Técnica de Compensación de Movimiento para Imágenes de Escala Decreciente en una Codificación Estratiforme" ["A Motion Compensation Technique for Down-Scaled Pictures in Layered Coding"], Transacciones sobre Comunicaciones E77-B del IEICE [IEICE Transactions on Communications E77-B] (1994), Agosto, No. 8, Tokio, JP, XP 00470652, describe una técnica de compensación de movimiento que reduce el emborronamiento llamado de deriva en sistemas de codificación estratificados.
La estimación y compensación del movimiento son técnicas de compresión eficaces, pero las diversas técnicas de estimación/compensación anteriormente existentes (como en el WMV8 y los estándares anteriormente analizados) tienen varias desventajas, incluyendo:
(1) Cuando se computan los valores de píxel a nivel de las posiciones de subpíxel en las tramas de referencia, los codificadores y descodificadores pierden innecesariamente precisión en los valores intermedios. Por ejemplo, cuando se computa el valor de píxel para una posición de cuarto de píxel en el WMV8, los valores intermedios en las posiciones de medio píxel son variados a derecha en cuatro bits a pesar del hecho de que pudiera disponerse de una mayor profundidad de bits. Así mismo, el codificador/descodificador del WMV8 fija los valores intermedios durante la interpolación de dos etapas de las posiciones de cuarto de píxel, lo que ralentiza la computación y produce una pérdida innecesaria de precisión.
(2) La interpolación de los valores de píxel en la estimación y compensación del movimiento de cuarto de píxel es ineficaz en muchos casos. Por ejemplo, en el WMV8, el cálculo de una posición de cuarto de píxel unidimensional requiere el empleo de un filtro para una posición de medio píxel seguido por el uso de un filtro bilineal.
(3) Los codificadores y descodificadores no consiguen explicar la acumulación de error de redondeo que podría crearse en la interpolación multietapa. El error de redondeo tiene lugar, por ejemplo, cuando los valores de píxel son repetidamente redondeados a la baja de trama a trama en una videosecuencia. El error de redondeo puede provocar deficiencias perceptibles en videosecuencias de baja calidad, con baja tasa de bits. Por ejemplo, cuando el codificador y descodificador del WMV8 interpolan para un valor de píxel en una posición de cuarto de píxel en múltiples etapas, el valor de redondeo no se utiliza. En su lugar, los resultados de cada etapa son redondeados de la misma forma en cada etapa de interpolación (y sin control de redondeo);
y
(4) El redondeo de crominancia no se efectúa con una precisión de cuarto de píxel, y no se proporcionan ningún control sobre las opciones de redondeo del vector de crominancia. Por ejemplo, el codificador y descodificador del WMV8 redondean todos los vectores de movimiento de crominancia en un valor de medio píxel y operan únicamente en un solo modo.
Dada la importancia crítica de la estimación y compensación de movimiento para el vídeo digital, no es sorprendente que la estimación y compensación de movimiento son campos ampliamente desarrollados. Cualesquiera que fueran los beneficios de las técnicas anteriores de estimación y compensación de movimiento, sin embargo, no tienen las ventajas de las técnicas y herramientas expuestas a continuación.
Sumario
Constituye el objeto de la presente invención mejorar el rendimiento de la conversión del vector de movimiento de crominancia para diferentes aplicaciones. Este objeto se consigue por la invención tal como se define en las reivindicaciones independientes. Determinadas formas de realización se ofrecen en las reivindicaciones dependientes.
En resumen, la descripción detallada tiene por objeto diversas técnicas y herramientas para el redondeo de vector de movimiento de crominancia. Para la compensación de movimiento en aplicaciones de codificación y descodificación de vídeo, por ejemplo, un codificador y descodificador de vídeo convierten los vectores de movimiento en espacio de luminancia (vectores de movimiento de luminancia) en vectores de movimiento en el espacio de crominancia (vectores de movimiento de crominancia).
En un aspecto, un componente, como por ejemplo un codificador o descodificador, de vídeo convierte los vectores de movimiento de luminancia con una precisión de un cuarto de píxel en vectores de movimiento de crominancia con una precisión de un cuarto de píxel. Por ejemplo, los vectores de movimiento de crominancia con valores de medio píxel en el espacio de luminancia son convertidos en vectores de movimiento de crominancia con unos valores correspondientes de un cuarto de píxel en el espacio de crominancia. El empleo de vectores de movimiento de crominancia precisos de un cuarto de píxel puede mejorar la calidad de la predición en una compensación de movimiento.
En otro aspecto, un componente, como por ejemplo, un codificador o descodificador de vídeo convierte los vectores de movimiento de luminancia en vectores de movimiento de crominancia en uno entre múltiples modos disponibles de redondeo de vector de movimiento de crominancia. Por ejemplo, comparado con un primer modo, un segundo modo reduce la precisión del vector de movimiento de crominancia, y con ello reduce la complejidad computacional de la compensación de movimiento subsecuente. El empleo de múltiples modos de redondeo del vector de movimiento de crominancia posibilita potenciar la calidad de la compensación de movimiento con relación a la simplicidad computacional o viceversa.
Las diversas técnicas y herramientas pueden utilizarse en combinación o independientemente. Las características y ventajas adicionales se pondrán de manifiesto mediante la descripción detallada subsecuente que se desarrolla con referencia a los dibujos que se acompañan.
Breve descripción de los dibujos
La Figura 1 es una diagrama que muestra la estimación de movimiento en un codificador de vídeo de acuerdo con la técnica anterior.
La Figura 2 es un gráfico que muestra los emplazamientos de subpíxel para la interpolación en la estimación y compensación de movimiento de subpíxel de acuerdo con la técnica anterior.
La Figura 3 es un diagrama de bloques de un entorno informático apropiado en el cual pueden implementarse las diversas formas de realización descritas.
La Figura 4 es un diagrama de bloques de un sistema codificador de vídeo generalizado en las diversas formas de realización descritas.
La Figura 5 es un diagrama de bloques de un sistema descodificador de vídeo generalizado utilizado en las diversas formas de realización descritas.
La Figura 6 es un gráfico que muestra los emplazamientos para una interpolación de valor de píxel durante la estimación y compensación de movimiento de subpíxel.
La Figura 7 es un gráfico que muestra los emplazamientos de un píxel entero con unos valores de píxel utilizados para computar valores de píxel interpolados para emplazamientos de subpíxel.
La Figura 8 es un diagrama que muestra una técnica de interpolación de dos etapas para la interpolación de valores en posiciones de subpíxel.
La Figura 9 es un gráfico que muestra una posición de muestra de medio píxel horizontal, de medio píxel vertical y los valores intermedios en los valores de subpíxel utilizadas para calcular el valor en la posición de muestra.
La Figura 10 es un gráfico que muestra un cuarto de píxel horizontal, una porción de muestra de medio píxel vertical y un medio píxel horizontal, una posición de muestra de un cuarto de píxel vertical, y los valores intermedios en las posiciones de subpíxel utilizados para calcular los valores en las posiciones de muestra.
La Figura 11 es un gráfico que muestra un cuarto de píxel horizontal, una posición de muestra de cuarto de píxel vertical y los valores intermedios en las posiciones de subpíxel utilizadas para calcular el valor en la posición de muestra.
La Figura 12 es un diagrama que muestra una técnica de interpolación multietapa con unos valores intermedios con una amplitud (en bits) dinámico potenciado.
La Figura 13 es un diagrama que muestra una técnica de interpolación multietapa con una fijación de salto.
La Figura 14 es un diagrama que muestra una técnica de interpolación multietapa con variación de bits diferida.
La Figura 15 es un diagrama que muestra una técnica de interpolación multietapa y utiliza un control de redondeo de etapas alternas.
La Figura 16 es un diagrama de flujo que muestra una técnica de selección entre múltiples modos de interpolación y redondeo de crominancia.
La Figura 17 es una tabla que muestra un primer modo de redondeo de crominancia.
La Figura 18 es una tabla que muestra un segundo modo de redondeo de crominancia.
Descripción detallada
Las formas de realización descritas se refieren a determinadas técnicas y herramientas para la interpolación de subpíxeles en la estimación y compensación de movimiento. Diversas formas de realización se refieren a determinadas técnicas y herramientas para mantener la precisión en la interpolación multietapa difiriendo la fijación y/o la variación de los bits (operaciones que pueden traducirse en pérdida de precisión) hasta etapas ulteriores en la interpolación. Otras formas de realización se refieren a filtros eficientes u operaciones de redondeo para la interpolación multietapa.
Un codificador o descodificador lleva a cabo la interpolación de subpíxel sobre una trama de referencia o sobre una porción de una trama como por ejemplo uno o más bloques o macrobloques. El codificador/descodificador conmuta los valores de píxel en emplazamientos de subpíxel dentro de la trama de referencia. El codificador/descodificador puede a continuación llevar a cabo la compensación de movimiento utilizando vectores de movimiento precisos de subpíxel.
En algunas formas de realización, un codificador de vídeo o un descodificador de vídeo lleva a cabo la interpolación de 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, lleva a cabo la interpolación de subpíxel u otra técnica descrita más adelante en otro tipo de aplicación.
En una alternativa para llevar a cabo la interpolación de subpíxel sobre tramas de referencia, en algunas formas de realización, un codificador/descodificador lleva a cabo la interpolación de subpíxel sobre campos, capas objeto, u otras imágenes.
En algunas formas de realización, la interpolación de subpíxel se produce computando valores de píxel en los planos de luminancia y crominancia de una trama de referencia en un espacio cromático YUV. Alternativamente, el espacio cromático es diferente (por ejemplo YIQ o RGB).
Las diversas técnicas y herramientas pueden utilizarse en combinación o independientemente. Diferentes formas de realización implementan una o más de las técnicas y herramientas descritas. Aunque las operaciones de estas técnicas típicamente se describen en un orden secuencial concreto por razones de presentación, debe entenderse que esta forma de descripción abarca redisposiciones menores en el orden de las operaciones, a menos que se requiera una ordenación concreta. Por ejemplo, las operaciones descritas secuencialmente pueden en algún caso redisponerse o llevarse a cabo de manera concurrente. Así mismo, por razones de claridad, los diagramas de flujo típicamente no muestran las diversas formas en las cuales pueden emplearse técnicas concretas en combinación con otras técnicas.
En algunas formas de realización, un codificador y descodificador de vídeo utilizan diversos indicadores y señales en un flujo de bits. Aunque se describen indicadores y señales específicas, debe entenderse que esta forma de descripción abarca diferentes convenciones (por ejemplo, de 0 mejor que de 1) para indicadores y señales.
I. Entorno Informático
La Figura 3 ilustra un ejemplo generalizado de un entorno informático apropiado (300) dentro del que pueden implementarse las formas de realización descritas. El entorno informático (300) no pretende indicar limitación alguna en cuanto al ámbito de empleo o funcionalidad, en cuanto a las técnicas y herramientas pueden implementarse en diversos entornos informáticos con fines generales o específicos.
Con referencia a la Figura 3, el entorno informático (300) incluye al menos una unidad de procesamiento (310) y una memoria (320). En la Figura 3, esta configuración esencialmente básica (330) se incluye dentro de una línea de puntos. La unidad de procesamiento (310) ejecuta las instrucciones ejecutables por computadora y puede ser un procesador real o virtual. En un sistema de multiprocesamiento, múltiples unidades de procesamiento ejecutan las instrucciones ejecutables por computadora para incrementar la potencia de procesamiento. La memoria (320) puede ser una memoria volátil (por ejemplo registros, caché, RAM), una memoria no volátil (por ejemplo ROM, EEPROM, memoria flash, etc), o alguna combinación de las dos. La memoria (320) almacena el software (380) que implementa las técnicas de interpolación de subpíxel en un codificador y/o descodificador, como por ejemplo un codificador y/o descodificador de vídeo.
Un entorno informático puede tener características adicionales, Por ejemplo, el entorno informático (300) incluye un 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 por ejemplo un bus, controlador o red interconecta los componentes del entorno informático (300). Típicamente, el software (no mostrado) del sistema operativo proporciona un entorno operativo para otro software de ejecución dentro del entorno informático (300), y coordine las actividades de los componentes del entorno informático (300).
El almacenamiento (340) puede ser fijo o retirable, e incluye discos magnéticos, cintas o casetes magnéticas, CD-ROMs, DVDs, u otro medio que pueda utilizarse para almacenar información y al que pueda accederse dentro del entorno informático (300). El almacenamiento (340) almacena instrucciones con destino al software (380) que implementa las técnicas de implementación de subpíxel.
El (los) dispositivo(s) de entrada (350) pueden ser un dispositivo de entrada táctil como un teclado, ratón, lápiz selector, o seguibola, un dispositivo de entrada de voz, un dispositivo de escaneo, u otro dispositivo que proporcione una entrada al entorno informático (300). Para la codificación de audio o vídeo, el (los) dispositivo(s) de entrada (350) pueden ser una placa de sonido, tarjeta de vídeo, tarjeta sintonizadora de TV o dispositivo similar que acepte una entrada de audio o vídeo de forma analógica o digital, o un CD-ROM o CD-RW que lea las muestras de audio o vídeo introducidas en el entorno informático (300). El (los) dispositivo(s) de salida (360) puede(n) ser una pantalla, una impresora, un altavoz, CD-grabador, u otro dispositivo que proporcione una salida del entorno informático (300).
La(s) conexión(es) de comunicación (370) posibilitan la comunicación sobre un medio de comunicación con otra entidad de computación. El medio de comunicación traslada la información, por ejemplo, instrucciones ejecutables por computadora, entrada o salida o 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 más de sus características fijadas o modificadas de manera que se codifique la 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, de infrarrojos, o acústica.
Las técnicas y herramientas pueden describirse en el contexto general de los medios legibles por computadora. Los medios legibles por computadora son cualesquiera medios legibles a los que pueda accederse dentro de un entorno informático. A modo de ejemplo, y no de limitación, en el entorno informático (300) los medios legibles por computadora incluyen una memoria (320), un sistema de almacenamiento (340), unos medios de comunicación y combinaciones de cualquiera de los expuestos.
Las técnicas y herramientas pueden describirse en el contexto general de las instrucciones ejecutables por computadora, como por ejemplo las incluidas en módulos de programa, que se ejecutan en un entorno informático sobre un procesador real o virtual escogido como objetivo. En general, los módulos de programa incluyen rutinas, programas, bibliotecas, objetos, clases, componentes, estructuras de datos, etc., que llevan a cabo tareas concretas o implementan determinados tipos de datos abstractos. La funcionalidad de los módulos de programa puede combinarse o fraccionarse entre módulos de programa según lo deseado en las diversas formas de realización. Las instrucciones ejecutables por computadora con destino a los módulos de programa pueden ejecutarse dentro de un entorno informático local o distribuido.
Por razones de presentación, la descripción detallada utiliza términos como "determinar" y "seleccionar" para describir operaciones informáticas dentro de un entorno informático. Estos términos son abstracciones de alto nivel para operaciones llevadas a cabo por una computadora y no deben ser confundidos con actos llevados a cabo por un ser humano. Las operaciones informáticas reales correspondientes a estos términos varían dependiendo de la implementación.
II. Codificador y Descodificador de Vídeo Generalizados
La Figura 4 es un diagrama de bloques de un codificador de vídeo generalizado (400) y la Figura 5 es un diagrama de bloques de un descodificador de vídeo generalizado (500).
Las relaciones mostradas entre módulos dentro del codificador y descodificador indican el flujo de información principal del codificador y del descodificador; otras relaciones no se muestran por razones de sencillez. En particular, las Figuras 4 y 5 normalmente no muestran información colateral que indique los ajustes, modos, tablas, etc., del codificador utilizadas en una secuencia de vídeo, trama, macrobloque, bloque, etc. Dicha información colateral es enviada dentro del flujo de bits de salida, típicamente después de la codificación de entropía de la información colateral. El formato del flujo de bits de salida puede ser un formato Windows Media Vídeo u otro formato.
El codificador (400) y el descodificador (500) están basados en bloques y utilizan un formato de macrobloque de 4:2:0 incluyendo cada macrobloque 4 unos bloques de luminancia de 8 x 8 (a veces tratados 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) están basados en objetos, utilizan un macrobloque o formato de bloques diferente, o llevan a cabo operaciones sobre series de píxeles de diferente tamaño o configuración que los bloques de 8 x 8 y los macrobloques de 16 x 16.
Dependiendo de la implementación y compresión deseadas, los módulos del codificador/descodificador pueden ser sumados, omitidos, fraccionados en múltiples módulos combinados con otros módulos, y/o ser sustituidos por otros módulos. En formas de realización alternativas, el codificador o descodificador con módulos diferentes y/u otras configuraciones de módulos efectúan una o más de las técnicas descritas.
A. Codificador de Vídeo
La Figura 4 es un diagrama de bloques de un sistema general (400) de codificador de vídeo. El sistema codificador (400) recibe una secuencia de tramas de vídeo que incluye una trama actual (405), y produce una información de vídeo comprimida (495) como salida. Formas de realización concretas de los codificadores de vídeo típicamente emplean una versión en variante o suplementaria del codificador generalizado (400).
El sistema codificador (400) comprime las tramas previstas y las tramas clave. Por razones de presentación, la Figura 4 muestra una trayectoria de las tramas de clave a lo largo del sistema codificador (400) y una trayectoria para las tramas previstas hacia delante. Muchos de los componentes del sistema codificador (400) se utilizan para comprimir tanto las tramas de clave como las tramas previstas. Las operaciones exactas llevadas a cabo por aquellos componentes pueden variar dependiendo del tipo de información que está siendo comprimida.
Una trama prevista [también llamada trama p, trama b de predicción bidireccional, u otra trama intercodificada] se representa en términos de predicción (o diferencia) respecto de una o más tramas distintas. Un residual de predicción es la diferencia entre lo que se previó y la trama original. Por contra, una trama de clave [también llamada trama-I, trama intracodificada] es comprimida sin referencia a otras tramas.
Si la trama actual (405) es una trama prevista hacia delante, un estimador de movimiento (410) estima el movimiento de los cuatro bloques o de otras series de píxeles de la trama actual (405) con respecto a una trama de referencia, la cual es la trama previa reconstruida (425) baferizada en el almacén (420) de tramas. En formas de realización alternativas, la trama de referencia es una trama posterior o la trama actual está prevista de forma bidireccional. El estimador de movimiento (410) da salida como información colateral la información de movimiento (415), como por ejemplo los vectores de movimiento. Un compensador de movimiento (430) aplica la información de movimiento (415) a la trama previa reconstruida (425) para formar una trama actual (435) de movimiento compensado. La predicción es raramente perfecta, sin embargo, y la diferencia entre la trama actual (435) de movimiento compensado y la trama actual (405) original es el residual de predicción (445). Alternativamente, un estimador de movimiento, compensador de movimiento aplica otro tipo de estimación/compensación de movi-
miento.
Un transformador de frecuencia (460) convierte la información de vídeo de dominio espacial en datos de dominio (esto es, espectrales) de frecuencia. En las tramas de vídeo a base de bloques, el transformador de frecuencia (460) aplica una transformación cosenoidal discreta ("DCT") o variante de la DCT a los bloques de los datos residuales de predicción de movimiento, produciendo bloques de coeficientes DCT. Alternativamente, el transformador de frecuencia (460) aplica otra transformación de frecuencia convencional, como por ejemplo una transformación Fourier o utiliza un análisis de wavelet o de subbanda. En algunas formas de realización, el transformador de frecuencia (460) aplica una transformación de frecuencia a los bloques de los residuales de predicción espacial para las tramas de clave. El transformador de frecuencia (460) puede aplicar unas transformaciones de frecuencia de 8 x 8, 8 x 4, 4 x 8, u otro tamaño de transformación de frecuencia.
Un cuantificador (470) cuantifica entonces los bloques de los coeficientes de datos espectrales con un tamaño gradual que varía sobre una base de trama a trama u otra base. Alternativamente, el cuantificador aplica otro tipo de cuantificación a los coeficientes de datos espectrales, como por ejemplo, un vector no uniforme, o una cuantificación no adaptativa, o directamente cuantifica los datos de dominio espaciales en un sistema codificador que no utiliza transformaciones de frecuencia. Además de la cuantificación adaptativa, el codificador (400) puede utilizar la caída de tramas, el filtrado adaptativo, u otras técnicas de control de la tasa.
Cuando, para la estimación/compensación de movimientos subsecuente, se necesita una trama actual reconstruida, un cuantificador inverso (476) lleva a cabo la cuantificación inversa sobre los coeficientes de datos espectrales cuantificados. Un transformador de frecuencia inverso (476) lleva a continuación a cabo la inversa de las operaciones del transformador de frecuencia (460) produciendo un residual de predicción reconstruido (para una trama prevista) o para una trama de clave reconstruida. Si la trama actual (405) fuese una trama de clave, la trama de clave reconstruida es considerada como la trama actual reconstruida (no mostrada). Si la trama actual (405) fuese una trama prevista, el residual de predicción reconstruido es añadido a la trama actual (435) de movimiento compensado para formar la trama actual reconstruida. El almacenamiento (420) de tramas baferiza la trama actual reconstruida para su uso en la predicción de la trama siguiente. En algunas formas de realización, el codificador aplica un filtro de desbloqueo a la trama reconstruida para alisar de manera adaptativa las discontinuidades de los bloque de la trama.
El codificador de entropía (480) comprime la salida del cuantificador (470) así como cierta información colateral (por ejemplo, la información (415) de movimiento, el tamaño de la etapa de cuantificación). Las técnicas de codificación de entropía típicas incluyen la codificación aritmética, la codificación diferencial, la codificación Huffman, la codificación de longitud de tirada, la codificación LZ, la codificación de diccionario, y combinaciones de las expuestas. El codificador de entropía (480) típicamente utiliza técnicas de codificación diferentes para diferentes tipos de información (por ejemplo coeficientes TC, coeficientes AC, diferentes tipos de información colateral), y puede escoger entre múltiples tablas de códigos dentro de una técnica de codificación particular.
El codificador de entropía (480) sitúa la información de vídeo comprimida (495) en el báfer (490). Un indicador del nivel del báfer es retroalimentado hasta los módulos adaptativos de la tasa de bits. La información de vídeo comprimida (495) es reducida por el báfer (490) a una tasa de bits constante o relativamente constante y almacenada para su flujo subsecuente en esa tasa de bits. Alternativamente, el sistema codificador (400) emite el torrente de información de vídeo comprimida inmediatamente después de la compresión.
Antes o después del báfer (490) la información de vídeo comprimida (495) puede ser codificada y canalizada para su transmisión sobre la red. La codificación en canales puede aplicar unos datos de corrección y detección de errores a la información de vídeo comprimida (495).
B. Descodificador de Vídeo
La Figura 5 es un diagrama de bloques de un sistema general descodificador de vídeo (500). El sistema descodificador (500) recibe información (595) destinada a una secuencia comprimida de tramas de vídeo y produce una salida que incluye una trama reconstruida (505). Formas de realización concretas de descodificadores de vídeo utilizan típicamente una variante o versión suplementaria del descodificador generalizado (500).
El sistema descodificador (500) descomprime las tramas previstas y las tramas de clave. Por razones de presentación, la Figura 5 muestra una trayectoria de las tramas de clave a través del sistema descodificador (500) y una trayectoria para las tramas previstas hacia delante. Muchos de los componentes del sistema descodificador (500) se utilizan para descomprimir tanto las tramas de clave como las tramas previstas. Las operaciones exactas llevadas a cabo por aquellos componentes pueden variar dependiendo del tipo de información que está siendo comprimida.
Un báfer (590) recibe la información (595) para la secuencia de vídeo comprimida y convierte en disponible la información recibida para el descodificador de entropía (580). El báfer (590) típicamente recibe la información a una tasa que es casi constante lo largo del tiempo, e incluye un báfer de las distorsiones de la imagen para alisar a largo plazo las variaciones de la banda ancha o de la transmisión. El báfer (590) puede incluir un báfer de reproducción y también otros báferes. Alternativamente, el báfer (590) recibe la información a una tasa variable. Antes o después del báfer (590), la información de vídeo comprimida puede ser sometida a la descodificación de canales y procesada para la detección y corrección de errores.
El descodificador (580) de entropía somete a la descodificación de entropía los datos cuantificados sometidos a la codificación de entropía así como la información colateral sometida a la codificación de entropía (por ejemplo, la información (515), el tamaño del escalón de la cuantificación), aplicando típicamente el procedimiento inverso de la codificación de entropía llevada a cabo en el codificador. Las técnicas de descodificación de entropía incluyen la descodificación aritmética, la descodificación diferencial, la descodificación de Huffman, la descodificación de longitud de tirada, la descodificación LZ, la descodificación de diccionario, y combinaciones de las anteriores. El descodificador de entropía (580) frecuentemente utiliza técnicas de descodificación diferentes para diferentes tipos de información (por ejemplo, coeficientes DC, coeficientes AC, diferentes tipos de información colateral), y puede escoger entre múltiples tablas de código dentro de una partícula técnica de descodificación.
Si la trama (505) que va a ser reconstruida es una trama prevista hacia delante, 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 (505) que está siendo reconstruida. Por ejemplo, el compensador de movimiento (530) utiliza un vector de movimiento de macrobloque para encontrar un macrobloque en la trama de referencia (525). Un báfer (520) de tramas almacena las tramas anteriores reconstruidas para su uso como tramas de referencia. Alternativamente, un compensador de movimiento aplica otro tipo de compensación de movimiento. La predicción por el compensador de movimiento
es rara veces perfecta, por tanto el descodificador (500) reconstruye también los residuales de la predicción.
Cuando el descodificador necesita una trama reconstruida para una compensación de movimiento subsecuente, el almacén (520) de tramas baferiza la trama reconstruida para su uso en la predicción de la trama siguiente. En algunas formas de realización, el codificador aplica un filtro de desbloqueo a la trama reconstruida para alisar de manera adaptable las discontinuidades existentes en los bloques de la trama.
Un cuantificador inverso (570) cuantifica de manera inversa los datos descodificados de entropía. En general, el cuantificador inverso aplica una cuantificación inversa escalar uniforme a los datos descodificados por entropía con un tamaño de escalón que varía sobre una base de trama a trama o sobre otra base. Alternativamente, el cuantificador inverso aplica otro tipo de cuantificación inversa a los datos, por ejemplo, una cuantificación no adaptable, de vectores, uniforme, o cuantifica directamente de forma inversa los datos de dominio espaciales de un sistema descodificador que no utiliza las transformaciones de frecuencia inversa.
Un transformador de frecuencia inversa (560) convierte los datos de dominio de frecuencia cuantificados en información de vídeo de dominio espacial. Para tramas de vídeo a base de bloques, el transformador de frecuencia inversa (560) aplica una DCT ["IDCT"] o variante de IDCT a los bloques de los coeficientes de DCT, produciendo unos datos residuales de predicción de movimiento. Alternativamente, el transformador de frecuencia (560) aplica otra transformación de frecuencia inversa convencional, como por ejemplo una transformación Fourier o utiliza una síntesis de wavelet o de subbanda. En algunas formas de realización, el transformador de frecuencia inversa (560) aplica una transformación de frecuencia inversa a los bloques de los residuales de predicción espaciales con destino a las tramas de clave. El transformador de frecuencia inversa (560) puede aplicar unas transformaciones 8 x 8, 8 x 4, 4 x 8, u otros tamaños de transformaciones de frecuencia inversa.
III. Estimación y Compensación de Movimiento
La codificación intertramas explota la redundancias temporales entre tramas para conseguir la compresión. Las reducciones de las redundancias temporales utilizan tramas previamente codificadas como predictores al codificar la trama actual. En las formas de realización descritas más adelante, un codificador de vídeo explota las redundancias temporales en secuencias de vídeo típicas con el fin de codificar la información utilizando un número de bits más pequeño. El codificador de vídeo utiliza una estimación del movimiento para parametrizar el movimiento de un bloque, de un macrobloque, u otra serie de píxeles de una trama prevista con respecto a una trama de referencia (por ejemplo una trama anterior previamente codificada). El codificador de vídeo (así como un correspondiente descodificador) utiliza la compensación del movimiento para reconstruir la trama prevista utilizando la información del movimiento y la trama de referencia.
La compensación del movimiento es el procedimiento para generar una predicción para una trama de vídeo (esto es, la trama prevista) mediante el desplazamiento de la trama de referencia. Como se indicó anteriormente, la predicción se forma para un bloque, un macrobloque, u otra serie de datos a partir de la trama de referencia. Así mismo, típicamente el desplazamiento es rectilíneo y constante a lo largo del entero mosaico que está siendo sometido a predicción. Dicho desplazamiento se define por un vector de movimiento con dos componentes correspondientes al desplazamiento o variación a lo largo de las direcciones X e Y. Los componentes de los vectores del movimiento X (horizontal) e Y (vertical) representan el desplazamiento entre el mosaico que actualmente está siendo sometido a predicción y el emplazamiento correspondiente dentro de la trama de referencia. Los valores positivos representan emplazamientos que están por debajo y a la derecha del emplazamiento actual. Los valores negativos representan emplazamientos que están por encima y a la izquierda del emplazamiento actual.
En una implementación, un bloque es un mosaico de píxeles de 8 x 8, un macrobloque es un mosaico de píxeles de 16 x 16, y los vectores de movimiento se definen 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 diferentes tamaños o a mosaicos con tamaños variables de manera arbitraria, con vectores de movimiento de resolución diferente o variables de manera arbitraria y/o utilizando la información de movimiento u otros vectores de movimiento.
Los componentes de los vectores de movimiento habitualmente se especifican en términos de desplazamientos de píxel, a menudo con una precisión de subpíxel. Los desplazamientos de subpíxel se llevan a cabo filtrando la trama de referencia utilizando filtros de compensación del movimiento adecuadamente definidos. En el caso de la compensación de movimiento de subpíxeles, los componentes X e Y son representados como números de puntos fijos. La parte entera de estos números se denomina variación de píxel completo, y la parte fraccional se denomina variación de subpíxel. Cuando la variación de subpíxel es 0, el movimiento es un número entero de píxeles. En la mayoría de las ocasiones, esto es implementado como una copia de bloques a partir de la trama de referencia para generar el predictor (aunque, en teoría, alguna forma de filtrado podría potencialmente aplicarse). Por otro lado, cuando la variación de subpíxel es distinta de 0, el predictor es generado aplicando uno o más filtros correspondientes a la variación de subpíxel con respecto a los emplazamientos del píxel entero dentro de la trama de referencia. Por consiguiente, el filtro de compensación de movimiento se determina mediante la variación del subpíxel.
Para implementar las variaciones de subpíxel como operaciones de filtrado, los filtros de compensación de movimiento interpolan unos puntos de dato al nivel de los emplazamientos de píxel fraccionales basados en valores de referencia al nivel de los emplazamientos de píxel entero. En general, la cantidad de interpolación aumenta con el soporte del filtro. Algunas formas de realización utilizan filtros separables de 2 derivadores y 4 derivadores (en cada dirección), los cuales se corresponden con los interpoladores bilineales y bicúbicos.
En algunas formas de realización, los filtros de compensación de movimiento utilizan como variación de bits una implementada con aritmética de enteros y divisiones. El parámetro de control de redondeo R adopta el valor de 0 o 1, y determina la dirección de redondeo de estas divisiones. El parámetro de control de redondeo puede fijarse respecto de una constante, externamente señalada, o puede derivarse implícitamente a partir de la información codificada pasada.
La Figura 6 muestra los emplazamientos de subpíxel y de píxel entero dentro de una trama de referencia (600) utilizada durante una estimación y compensación del movimiento de subpíxel en algunas formas de realización. En intervalos de cuarto de píxel en cada dirección, la trama de referencia (600) incluye unos emplazamientos de subpíxel para los cuales un codificador o descodificador puede interponer unos valores de píxel para un desplazamiento concreto. Las posiciones de entero a-p de la trama de referencia (600) se muestran en forma de círculos sombreados en la Figura 6, mientras que las posiciones de medio píxel y de cuarto de píxel interpuestas entre los emplazamientos de entero se muestran en forma de círculos no sombreados. Los emplazamientos P_{0} a P_{8} muestran nueve posiciones representativas de subpíxel de acuerdo con lo descrito en la Tabla 1.
TABLA 1 Posiciones representativas de subpíxel
Posición Descripción
P_{0} Cuarto de píxel horizontal, píxel entero vertical
P_{1} Medio píxel horizontal, píxel entero vertical
P_{2} Píxel entero horizontal, cuarto de píxel vertical
P_{3} Cuarto de píxel horizontal, cuarto de píxel vertical
P_{4} Medio píxel horizontal, cuarto de píxel vertical
P_{5} Píxel entero horizontal, medio píxel vertical
P_{6} Cuarto de píxel horizontal, medio píxel vertical
P_{7} Medio píxel horizontal, medio píxel vertical
P_{8} Píxel entero horizontal, tres cuartos de píxel vertical
La posición de tres cuartos de píxel especificada en la referencia P_{8} puede ser considerada un caso especial de la posición de cuarto de píxel; es una variación de cuarto de píxel respecto de un emplazamiento de un píxel entero. Otras posiciones de tres cuartos de píxel son posibles pero no se muestran. Las posiciones de subpíxel P_{0} a P_{8} son referenciadas en posteriores descripciones de filtros de interpolación. En formas de realización alternativas, el codificador y el descodificador interpolan valores en las posiciones de subpíxel adicionales o diferentes, por ejemplo, las situadas en un intervalo distinto de un cuarto de píxel en cada dirección.
A. Filtros Aproximados de Interpolación Bicúbica
Para una interpolación de subpíxel en algunas formas de realización, un codificador y descodificador de vídeo utilizan filtros lineales/bilineales y filtros cúbicos/bicúbicos que se definen como sigue.
Un interpolador lineal es un polinomio lineal, o de primer orden, en una dimensión que utiliza valores conocidos en los puntos más próximos de la celosía respecto del punto que está siendo interpolado. El valor de la función lineal en el punto que está siendo interpolado es la interpolación lineal. Los multiplicadores del polinomio lineal se calculan resolviendo un sistema lineal de ecuaciones, determinando los coeficientes del filtro lineal. Un filtro interpolador lineal se define por dos filtros derivados. Un interpolador lineal es un interpolador lineal separable en dos dimensiones.
Un interpolador cúbico es un polinomio cúbico o de tercer orden, en una dimensión que utiliza valores conocidos en los cuatro puntos más próximos de la celosía con respecto al punto en el que está siendo interpolado. El valor de la función cúbica en el punto que está siendo interpolado es la interpolación cúbica. Los multiplicadores de polinomio cúbico se calculan resolviendo un sistema de ecuaciones, determinando los coeficientes del filtro cúbico. Un filtro interpolador cúbico se define por cuatro derivadores de filtro. Un interpolador cúbico es un interpolador cúbico separable en dos dimensiones.
Los términos lineal y bilineal se utilizan típicamente de manera intercambiable en los campos de la comprensión y descompresión de vídeo. En una interpolación normal de dos dimensiones, una operación de interpolación llevada a cabo en una dirección tiene su réplica en la otra dimensión y, por consiguiente, cada etapa de filtrado es denominada filtrado bilineal. Los términos cúbico y bicúbico son intercambiables de modo similar.
En el presente documento, los términos lineal y bilineal se utilizan de manera intercambiable para describir el filtrado en una, dos, o más dimensiones. De modo similar los términos cúbico y bicúbico se utilizan de manera intercambiable para describir el filtrado en una, dos o más dimensiones. Por ejemplo las ecuaciones (11) a (13) definen tipos de filtro cúbicos, pero se designan como filtros bicúbicos porque, en la aplicación habitual de interpolación de dos etapas con destino a las tramas de vídeo de referencia, los filtros se utilizan en operaciones que tienen su réplica para ambas dimensiones de la interpolación de dos etapas. En sentido más general, el carácter dimensional de filtrado se determina a partir del contexto.
En algunas formas de realización, un codificador y un descodificador utilizan filtros bicúbicos determinados para interpolar valores en determinados emplazamientos de subpíxel. Por ejemplo, el codificador y el descodificador utilizan 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 emplazamientos de posibles variaciones dentro de una trama de referencia, como por ejemplo la mostrada en la Figura 6.
variación de medio píxel F_{1}: [-1 9 9 -1]
(11),
variación de cuarto de píxel F_{2}: [-4 53 18 -3]
(12), y
variación de tres cuartos de píxel F_{3}: [-3 18 53 -4]
(13).
En la práctica los filtros pueden también incluir una variación a derecha (por ejemplo, 4 bits para F_{1}, 6 bits para F_{2} y F_{3}) para compensar la expansión potencialmente introducida por los coeficientes de los filtros. El operador >> es un operador de variación a derecha. La operación de variación a derecha varía los bits de un número binario hacia la derecha, excluyendo 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 en la potencia del número de bits varios (por ejemplo una variación a derecha por 3 da como resultado una división por 2^{3} = 8) quedando el resto excluido.
Los coeficientes de los filtros para F_{2} y F_{3} se basan de modo aproximado en el interpolador bicúbico verdadero de tres cuartos de píxel, el cual es un filtro de cuatro derivadores. La ecuación siguiente muestra el resultado de aplicar el verdadero filtro bicúbico de cuarto de píxel para el emplazamiento P_{0}:
(-7e + 105f + 35g - 5h) >> 7
(14)
Los valores de coeficiente suman hasta 128, y el producto del filtrado es variado a derecha en 7 bits. Los filtros bicúbicos aproximados F_{2} y F_{3} se aproximan al filtro bicúbico puro en términos de prestaciones, pero tienen una resolución menor, como 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, la utilización de un filtro bicúbico puro da como resultado una pérdida de bits de precisión en la interpolación multietapa, por tanto el factor de normalización para el filtro bicúbico aproximado se reduce en al menos ½ (esto es, la valoración a derecha se debilita en 1 bit o más). Los coeficientes de filtro elegidos para el filtro cúbico aproximado de la ecuación (15) se basan en el redondeo del filtro bicúbico verdadero, después de tener en cuenta el comportamiento del dominio de frecuencia (por ejemplo, para preservar la información de alta frecuencia), y el comportamiento empírico (por ejemplo, para alcanzar la distorsión menor dada una determinada tasa de bits). Específicamente, los filtros F_{2} y F_{3} todavía incluyen cuatro coeficientes de filtro. En general, la utilización de coeficientes de filtro menores en un filtro acelera la implementación, pero deben utilizarse suficientes coeficientes de filtro para evitar el ruido en un píxel adyacente. Los valores de coeficiente de filtro se ajustan hasta sumar 64, lo que facilita la implementación utilizando una aritmética de 16 bits aproximando al tiempo el filtro bicúbico de resolución más alta. Los valores de coeficiente de filtro que totalizan 64 pueden ser también utilizados, manteniendo al tiempo la aproximación del filtro bicúbico. Un filtro que funcione sustancialmente como filtro bicúbico puro, pero que tiene menos soporte y/o una resolución más baja, se denomina un filtro bicúbico "aproximado". Una forma para medir objetivamente si un filtro funciona sustancialmente como filtro bicúbico puro es verificar si el filtro aproximado se correlaciona bien (esto es, dentro de un umbral definido) con el filtro bicúbico puro. En una implementación, la correlación se mide mediante el coseno del ángulo entre los vectores de los filtros (que se desea sean lo más próximo a 1 posible), y el umbral es .95. También pueden utilizarse otras mediciones objetivas o subjetivas, otras medidas correlativas, y/o umbrales. Por ejemplo, los coeficientes de filtro del filtro cúbico aproximado pueden seleccionarse de forma que su suma sea otro valor que facilite la transformación eficiente de Fourier u otra manipulación matemática.
Como se describe con mayor detalle más adelante, la Figura 7 muestra genéricamente los emplazamientos de píxel entero con unos valores de píxel que se utilizan para computar los píxeles interpolados para cada uno de los casos correspondientes a los filtros bicúbicos esbozados en las ecuaciones (11) a (13). P indica la posición de subpíxel para la cual se computa un valor de píxel. I_{1}, I_{2}, I_{3}, e I_{4} representan posiciones de píxel entero a lo largo de la dimensión de la interpolación. La Figura 7 muestra una interpolación horizontal, pero las mismas operaciones y disposición de posiciones se aplican a la interpolación vertical.
En formas de realización alternativas, un codificador y un descodificador utilizan otros y/o adicionales filtros de interpolación. Por ejemplo, el codificador y el descodificador utilizan un filtro bilineal (esto es, un filtro de dos derivadores) para interpolar el valor. Por ejemplo, con referencia a las posiciones de subpíxel de la Figura 6, los filtros de interpolación utilizados para determinar los valores de P_{1}, P_{5} y P_{7} pueden ser los filtros ilustrados en las ecuaciones (1) a (3).
B. Interpolación Unidimensional
Para varias posiciones de subpíxel, el codificador y el descodificador de algunas formas de realización computan un valor interpolado solamente en una dimensión. Como se ilustra en la Figura 7, las siguientes ecuaciones muestran la operación de los filtros F_{1} (variación de medio píxel), F_{2} (variación de un cuarto de píxel), y F_{3} (variación de tres cuartos de píxel) cuando se interpolan entre píxeles enteros:
\vskip1.000000\baselineskip
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),
\vskip1.000000\baselineskip
donde el valor r controla el redondeo. El valor r depende del parámetro R de control del redondeo de nivel de trama binaria y de la dirección de interpolación como sigue:
\vskip1.000000\baselineskip
\hskip3cm1
Para ilustrar con mayor profundidad una interpolación unidimensional, P_{1} y P_{5} de la Figura 6 muestran posiciones de medio píxel dentro de la trama de referencia (600) que requieren la interpolación solamente en una dimensión (esto es, la dirección horizontal para P_{1} y la dirección vertical para P_{5}). Las ecuaciones siguientes muestran la operación del filtro F_{1} (variación de medio píxel) al llevar a cabo la interpolación entre píxeles enteros para P_{1} y P_{5}:
\vskip1.000000\baselineskip
P_{1} = (-1e + 9f + 9g - 1h + 8 - r) >> 4
(20), y
P_{5} = (-1b + 9f + 9j - 1n + 8 - r) >> 4
(21).
\vskip1.000000\baselineskip
De modo similar, P_{0} y P_{2} de la Figura 6 muestran posiciones de un cuarto de píxel dentro de la trama de referencia (600) que requieren la interpolación solamente en una dimensión. Las ecuaciones siguientes muestran la operación del filtro F_{2} (variación de un cuarto de píxel) cuando se lleva a cabo la interpolación entre píxeles enteros para P_{0} y P_{2}:
\vskip1.000000\baselineskip
P_{0} = (-4e + 53f + 18g - 3h + 32 - r) >> 6
(22), y
P_{2} = (-4b + 53f + 18j - 3n + 32 - r) >> 6
(23).
\vskip1.000000\baselineskip
El filtro F_{2} de un cuarto de píxel aproximado puede también utilizarse con solo una pequeña modificación para calcular posiciones de tres cuartos de píxel. Por ejemplo, la ecuación siguiente muestra la operación del filtro F_{3} (variación de tres cuartos de píxel) cuando se efectúa la interpolación entre píxeles enteros para P_{5}:
\vskip1.000000\baselineskip
P_{5} = (-3b + 18f + 53j - 4n + 32 - r) >> 6
(24).
\vskip1.000000\baselineskip
Alternativamente, un codificador y un descodificador utilizan otros y/o adicionales filtros de interpolación para posiciones variadas de medio píxel, cuarto de píxel, tres cuartos de píxel en una dimensión. Por ejemplo, el codificador y el descodificador utilizan filtros con más o menos coeficientes de filtro, coeficientes de filtro diferentes, redondeos diferentes o sin redondeos.
C. Interpolación Multidimensional
En algunas formas de realización, la interpolación se lleva a cabo para posiciones de subpíxel que están desfasadas en dos dimensiones. En la Figura 6 por ejemplo, P_{3}, P_{4}, P_{6} y P_{7} son posiciones para las cuales la interpolación tiene lugar tanto en las dimensiones horizontales como verticales.
En una forma de realización, que corresponde al procedimiento de interpolación (800) mostrado en la Figura 8, dos emplazamientos de subpíxel son interpolados primeramente a lo largo de la dirección vertical y a continuación a lo largo de la dirección horizontal. Como se describirá más detenidamente más adelante, la interpolación se lleva a cabo utilizando uno o más de los 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 Figura 8, el redondeo es aplicado después tanto del filtrado vertical como del filtrado horizontal. La variación de bits en la regla de redondeo asegura la retención de la precisión permitida por la aritmética de 16 bits en los resultados intermedios.
En la Figura 8, el filtrado vertical se lleva a cabo en primer término, seguido por el filtrado horizontal. El inicio con el filtrado vertical mejora las prestaciones en algunas arquitecturas. En otras formas de realización, el orden de filtrado es diferente. Por ejemplo, la interpolación se lleva a cabo en la dirección horizontal antes de la dirección vertical. O bien se utilizan otras combinaciones distintas de filtros de interpolación (por ejemplo, múltiples filtros horizontales y/o múltiples filtros verticales, etc.).
Los valores de píxel (811, 838) de entrada y salida tienen una profundidad de bit de 8 bits, y una amplitud dinámica con 256 valores. Los valores intermedios (820) tienen una profundidad de bit de 16 bits, para una amplitud dinámica con 65,536 valores. En formas de realización alternativas, la entrada, la salida, y los valores intermedios tienen diferente (por ejemplo más elevada) profundidad de bit.
En una primera etapa (810), un filtro vertical apropiado (F_{v}) se aplica (812) a un(os) valor(es) de píxel (811) de entrada. El filtro vertical aplicado dependerá de si la posición de subpíxel seleccionada es variada en 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 anteriormente
descritos.
La regla de redondeo después del filtrado vertical se define como:
(25),(S + R_{V}) >> variaciónV
donde S es el resultado verticalmente filtrado y R_{V} = 2^{varV-1} - 1 + R. R es el valor de control de redondeo que alterna entre 0 y 1 sobre una base de trama por trama. Así, la regla de redondeo incluye el redondeo con un control de redondeo (813) de etapas alternadas y una variación (814) de bits.
La variación a derecha potencialmente provoca pérdida de resolución, por tanto al menos un par de la variación a derecha es diferida a etapas posteriores de interpolación. El valor de variación a derecha de shiftV depende de la posición de subpíxel que está siendo interpolada. Específicamente shiftV = {5, 3, 3, 1} para P_{3}, P_{4}, P_{6}, y P_{7}. La cantidad de variación es menor a la requerida para compensar la expansión debida a los valores de coeficiente de filtro de la primera etapa (por ejemplo, la variación es menor de 6 bits para el filtro bicúbico aproximado), pero suficiente para garantizar que los resultados intermedios del filtrado se mantengan dentro de la amplitud dinámica para los valores intermedios (por ejemplo, 65,536 posibles valores para palabras de 16 bits). Comparada con una variación normal, esta variación acortada mantiene la precisión de los valores de píxel intermedios (820) después de la primera etapa (810) de interpolación. Los valores de píxel intermedios (820) tienen una amplitud dinámica de y bits, donde y es mayor de 8 bits. La cantidad de variación efectuada en la primera etapa puede depender de la profundidad de bits disponible y del coeficiente de los filtros de interpolación. Por ejemplo, en la implementación ejemplar descrita en la presente memoria, los valores intermedios están limitados a un límite de palabras de 16 bits.
Considérese el punto P_{3} de la Figura 6 y los valores de entrada dentro de la amplitud 0 ... 255 (8 bits). La amplitud de los valores intermedios mediante la aplicación de los coeficientes de filtro bicúbicos aproximados [-4 53 18 -3] a los valores de entrada de 8 bits es de -1785 a 18,105 (aproximadamente 14,3 bits lo que se redondea hasta 15 bits para la implementación) debido al factor de expansión derivado de los coeficientes de filtro. El filtrado horizontal subsecuente aplicando los coeficientes de filtro bicúbicos aproximados, con expansión adicional) a los valores intermedios puede producir valores fuera de la amplitud dinámica de 16 bits, provocando desbordamiento. Por tanto, los valores intermedios son sometidos a una suficiente variación para garantizar que el filtrado horizontal subsecuente produzca un valor dentro de la amplitud dinámica de 16 bits. Para P_{3}, la primera cantidad de variación es cinco bits, y la amplitud dinámica de los valores intermedios variados oscila entonces de -55 a 565 (aproximadamente 9.3 bits, que redondeado supone 10 bits en la implementación). La amplitud de salida mediante la aplicación de los coeficientes bicúbicos aproximados a los valores intermedios variados oscila entonces entre -7,860 y 40,500, lo que presenta una amplitud dinámica de menos de 16 bits. Así, la variación acortada, se calcula de forma que el límite de palabras de 16 bits es completamente utilizado, sin que se garantice que se exceda durante la segunda etapa (830) de inter-
polación.
En la segunda etapa (830), un filtro horizontal apropiado (F_{H}) es aplicado (832) para interpolar el valor en la posición de subpíxel de dos dimensiones a partir de los valores (820) determinados por el filtro vertical. La regla de redondeo después del filtrado horizontal es:
(26),(S + 64 - R) >> 7
donde S es el resultado filtrado horizontalmente, y R es el valor de control de redondeo que alterna sobre una base de trama por trama. Como la regla de redondeo de la primera etapa, la regla de redondeo de la segunda etapa incluye el redondeo con el control de redondeo (833) de etapas alternadas y variación (834) de bits. Teniendo en cuenta la variación diferida de la primera etapa, la cantidad de variación de la segunda etapa típicamente excede la normalmente esperada para el filtro horizontal seleccionado y se calcula para dar salida a un valor que tiene la amplitud dinámica deseada.
Todos los casos de filtrado bicúbico pueden potencialmente producir un píxel interpolado cuyo valor es negativo, o cuyo valor es mayor que el máximo de la amplitud (por ejemplo, 255 para una salida de 8 bits). En estos casos, con valores de salida de 8 bits, el descodificador y el codificador sujetan el valor de salida (836) para que se mantenga dentro de la amplitud afectada. En particular, los infrallenados se fijan en 0 y los desbordamientos en 255. Después de la fijación, se da salida a un valor interpolado (838) de 8 bits.
En la Figura 8, la variación de la segunda etapa es 7 bits. Así, se retiene un valor de salida filtrado con 9 bits. Por ejemplo, continuando con el ejemplo anterior para P_{3}, la amplitud del valor de salida filtrado es de -61 a 316, lo que tiene una amplitud dinámica de aproximadamente 8.6 bits (lo que redondeando para la implementación asciende a 9 bits). Aunque la amplitud válida de los datos interpolados es únicamente de 8 bits, el bit extra del espacio cabecero proporciona la información de desbordamiento e infrallenado. En otras palabras, si se establece el bit más significativo (esto es el bit "signo"), hay infrallenado o sobreabundancia. Específicamente cuál de los dos se ha producido puede deducirse observando los 8 bits "mantissa" restantes.
Las Figuras 9 a 11 ilustran con mayor amplitud la interpolación de dos dimensiones anteriormente descrita e ilustrada en la Figura 8. La Figura 9 muestra la posición de subpíxel P_{7} (medio píxel horizontal, medio píxel vertical) de la trama de referencia (600) de la Figura 6. Los filtros de interpolación bicúbicos de medio píxel se utilizan para interpolar el valor de P_{7}. En la primera etapa, los valores intermedios V_{1}-V_{4} se calculan a partir de las posiciones de píxel entero próximas utilizando 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 + 9i - 1p)
(31).
Después de que se ha sumado el valor apropiado de R_{v}, los resultados son variados a derecha en un bit. En la segunda etapa, los resultados intermedios V_{1}-V_{4} se utilizan mediante un filtro de medio píxel para calcular el valor de píxel en P_{7}. En particular, se utiliza un filtro de medio píxel que tiene la siguiente forma:
(32).P_{7} = (-1V_{1} + 9V_{2} + 9V_{3} - 1V_{4})
De acuerdo con lo expuesto, el resultado de la segunda etapa es variado a la derecha en 7 bits con el fin de obtener un valor de 9 bits. El valor de 9 bits incluye 8 bits de mantissa y un bit de signo. Después de llevar a cabo cualquier fijación necesaria para compensar el desbordamiento o el infrallenado, se saca un valor interpolado de 8 bits.
La Figura 10 muestra una posición de subpíxel P_{4} (medio píxel horizontal, un cuarto de píxel vertical) de la trama de referencia (600) de la Figura 6. Un filtro de interpolación bicúbico de un cuarto de píxel y de medio píxel se utiliza para interpolar el valor de P_{4}. En la primera etapa, los valores intermedios V_{1} - V_{4} se calculan a partir de posiciones de píxel entero utilizando 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})
El filtro es aplicado 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 sumar el valor apropiado de R_{v}, los resultados son variados a derecha en 3 bits. En la segunda etapa, los resultados intermedios V_{1} - V_{4} se utilizan por un filtro de medio píxel para calcular el valor de píxel en P_{4}. En particular, se utiliza un filtro de medio píxel que tiene la siguiente forma:
(34).P_{4} = (-1V_{1} + 9V_{2} + 9V_{3} - 1V_{4})
El resultado de la segunda etapa es variado a derecha en siete bits con el fin de obtener un valor de 9 bits, llevándose a cabo cualquier fijación necesaria, y se saca un valor final interpolado de 8 bits.
La Figura 10 muestra también una posición de subpíxel P_{8} (cuarto de píxel horizontal, cuarto de píxel vertical). Con el fin de interpolar el valor de P_{8}, se utiliza la técnica de interpolar P_{4} solo con una ligera modificación. En la técnica modificada, un filtro bicúbico de medio píxel es utilizado en la primera etapa para determinar los valores intermedios. Los emplazamientos de píxel intermedios se muestran en la Figura 10 en las referencias V_{5} a V_{8}. Durante la segunda etapa un filtro bicúbico de un cuarto de píxel utiliza los valores intermedios para calcular el valor de P_{6}. En particular, se utiliza un filtro bicúbico de un cuarto de píxel que tiene la siguiente forma:
(35).P_{8} = (-4V_{5} + 53V_{6} + 18V_{7} - 3V_{8})
La cantidad de la variación en la primera y segunda etapas es la misma que la técnica para calcular P_{4} (esto es, la variación de la primera etapa es tres y la variación de la segunda etapa es siete).
La Figura 11 muestra una posición de subpíxel P_{3} (un cuarto de píxel horizontal, un cuarto de píxel vertical) de la trama de referencia (600) de la Figura 6. Los filtros de interpolación bicúbicos de un cuarto de píxel se utilizan para interpolar el valor de P_{2}. En la primera etapa, los valores intermedios V_{1} - V_{4} se calculan a partir de las posiciones del píxel entero próximo utilizando 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 es aplicado 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 sumar el valor apropiado de R_{v}, los resultados se varían a la derecha en cinco bits. En la segunda etapa, los resultados intermedios V_{1} - V_{4} se utilizan por otro filtro bicúbico de un cuarto de píxel para calcular el valor de píxel en P_{3}. En particular, se utiliza un filtro de un cuarto de píxel que tiene la siguiente forma:
(37).P_{3} = (-4V_{1} + 53V_{2} + 18V_{3} - 3V_{4})
El resultado de la segunda etapa es variado a derecha en siete bits con el fin de obtener un valor de nueve bits, llevándose a cabo cualquier necesaria fijación y se saca un valor interpolado final de ocho bits.
Aunque no se muestran en las Figuras 9 a 11, también pueden computarse los valores de las posiciones de subpíxel que tienen variaciones de tres cuartos de píxel en una a varias dimensiones. Con el fin de computar dicha posición de subpíxel, los procedimientos expuestos anteriormente pueden modificarse utilizando los pertinentes filtros bicúbicos 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, los filtros bilineales o una combinación de filtros bilineales y bicúbicos se utilizan para interpolar los valores en las posiciones de muestra de subpíxel. El uso de filtros bilineales genéricamente reduce la cantidad de la variación que se lleva a cabo (después de la primera etapa y globalmente) porque los coeficientes introducen menos expansión que con los filtros bicúbicos. En una implementación que utiliza filtros bilineales y valores intermedios de 16 bits, por ejemplo, no se lleva a cabo ninguna variación en la primera etapa, potenciando al máximo con ello el empleo del límite de palabras de 16 bits, y se lleva a cabo una variación a derecha de cuatro bits después de la última etapa. De modo similar, la fijación puede diferirse hasta la última etapa.
Uno de los principios adyacentes a los procedimientos anteriormente descritos es el empleo de la precisión más alta posible en todas las etapas de filtrado manteniéndose al tiempo dentro de un límite deseado W de "tamaño de palabra". Si el valor de salida tiene una amplitud dinámica de D bits y se descartan L bits en la última etapa, la salida de la última etapa de filtrado puede ascender hasta D + L + 1 bits, donde el bit extra es utilizado para señalar los infrallenados y los desbordamientos. Operando hacia atrás, si la última etapa de filtrado da como resultado una expansión de k bits, entonces la entrada a la última etapa debe situarse dentro de D + L - k. Así, con el fin de mantener la máxima precisión con una representación de bits W, existe la siguiente relación:
(38).D + L + 1 = W
Así mismo, la entrada a la ultima etapa debe ser D + L - k = W - k - 1 bits.
La lógica anterior puede aplicarse repetidamente en la penúltima etapa de filtrado, y así sucesivamente. De hecho, los límites pueden apretarse utilizando bits fraccionarios para representar amplitudes de no-2^{k} y factores de expan-
sión.
Las Figuras 12 a 15 son diagramas que ilustran diversas técnicas que se describen en combinación con lo anteriormente expuesto, pero que son también aplicables de manera separada a la interpolación multietapa. Las Figuras 12 a 15 no muestran las diversas formas en las cuales se puede utilizar la interpolación multietapa respectiva (1200, 1300, 1400, 1500) en conjunción con otras técnicas de interpolación multietapa.
Así mismo, aunque cada una de las Figuras 12 a 15 muestran dos etapas, las técnicas de interpolación multietapa (1200, 1300, 1400, 1500) ilustradas en las Figuras 12 a 15 pueden incluir más etapas. En términos más generales, las técnicas de interpolación multietapa (1200, 1300, 1400, 1500) pueden implementarse con cualquier tipo de filtros separables en múltiples dimensiones, así como de filtros arbitrarios implementados en una estructura en cascada, en enrejado, o de celosía.
Las Figuras 12 a 15 muestran valores de entrada generalizados, valores de salida, y los filtros utilizados en la interpolación multietapa. La elección específica de la profundidad de bits de los valores de entrada de la primera etapa, los valores de salida de la última etapa, y de los valores intermedios pueden ser arbitrariamente extendidos de acuerdo con las especificaciones técnicas de una arquitectura o aplicación elegida como objetivo. Por ejemplo, los valores de entrada pueden ser valores de píxel de 8 bits en las posiciones de píxel entero dentro de las tramas de referencia, los valores de salida pueden ser valores de píxel de 8 bits en las posiciones de subpíxel dentro de las tramas de referencia, y los filtros pueden ser filtros bicúbicos aproximados y regulares (de acuerdo con lo anteriormente descrito con referencia a las Figuras 6 a 8). Alternativamente, los valores de entrada y/o los valores de salida tienen amplitudes dinámicas de profundidad de bit diferentes, o se utilizan filtros diferentes.
Un componente, como por ejemplo el codificador o descodificador descrito con referencia a las Figuras 4 y 5, respectivamente, puede llevar a cabo la interpolación multietapa (1200, 1300, 1400, 1500). Alternativamente otro codificador o descodificador, u otro tipo de componente, puede llevar a cabo la interpolación multietapa (1200, 1300, 1400, 1500).
La Figura 12 muestra un diagrama de interpolación multietapa (1200) con una amplitud dinámica potenciada (en bits) para valores interpolados intermedios. En la primera etapa (1210) el componente aplica (1212) un primer filtro F_{1} a uno o más valores (1211) de entrada de amplitud de x bits, produciendo uno o más valores (1220) intermedios de amplitud de y bits, donde y es mayor que x. Por ejemplo, los valores intermedios de y bits son valores de píxel que tienen una amplitud dinámica mayor que 8 bits, y los valores de entrada de x bits tienen una amplitud dinámica de 8 bits.
En cada una de las etapas (1222) cero o más intermedias, las cuales no se muestran con detalle, el componente aplica un filtro a los valores intermedios (1220) de amplitud de y bits. La salida de las etapas intermedias es uno o más valores intermedios (1229) de amplitud de z bits, donde z es mayor que x. En las Figuras 12 a 15, si la última etapa, la salida de los valores intermedios procedente de la primera etapa es los valores intermedios de entrada para la última etapa.
En la última etapa (1230), el componente aplica (1232) un último filtro F_{L} al uno o más valores intermedios (1229) de amplitud z bits. La salida final es un valor de salida (1234) de amplitud de x bits. Para cada una de las técnicas de interpolación multietapa (1200, 1300, 1400, 1500), si es necesario, el componente repite la interpolación multietapa (1200, 1300, 1400, 1500) para valores de salida adicionales. En la interpolación repetida, el componente puede reutilizar determinados valores intermedios computados en interpolaciones anteriores.
La Figura 13 muestra un diagrama de interpolación multietapa (1300) con fijaciones de salto. La fijación diferida acelera la computación, por ejemplo, debido a que el componente ya no verifica cada valor intermedio respecto de los límites superior e inferior de la extensión. La fijación diferida mantiene la precisión en los valores interme-
dios.
En la primera etapa (1310) el componente aplica (1312) un primer filtro F_{1} a uno o más valores de entrada (1311) de amplitud de x bits. Después de la aplicación del primer filtro F_{1}, no se lleva a cabo fijación alguna. Así, la salida de los uno o más valores intermedios (1320) procedente del primer filtro F_{1} puede tener una amplitud dinámica mayor de x bits. Por ejemplo, los valores de entrada son valores de 8 bits, y la salida procedente del primer filtro F_{1} tiene una amplitud dinámica 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 etapas intermedias (1322), de cero o más, las cuales no se muestran con detalle, el componente aplica un filtro a uno o más valores intermedios (1320) no fijados. La fijación puede ser también de salto en las etapas intermedias (1322) de cero o más. La salida de los valores intermedios (1329) procedente de las etapas intermedias (1322) de cero o más son la entrada a la última etapa (1330), en la cual el componente aplica (1332) un último filtro F_{L} a los valores (1329). La salida final procedente del último filtro F_{L} es fijada (1334) y se saca un valor (1336) con una amplitud de x bits.
La Figura 14 muestra un diagrama de la interpolación multietapa (1400) con una variación de bits diferida. En la primera etapa (1410) el componente aplica (1412) un primer filtro F_{1} a los uno o más valores de entrada (1411) en una amplitud de x bits. En conjunción con o después de la aplicación del primer filtro F_{1} se efectúa una variación acortada (1414). La variación acortada (1414) es menor que la requerida para garantizar un valor de salida con una amplitud de x bits (en vista del factor de expansión de los coeficientes del primer filtro F_{1}), y así es menor que la típicamente asociada con el primer filtro F_{1}. En consecuencia, la variación acortada (1414) produce uno o más valores intermedios con una amplitud dinámica (de y bits) mayor de x bits. Por ejemplo, los valores de entrada tienen una amplitud dinámica de 8 bits y los valores intermedios tienen una amplitud dinámica mayor de 8
bits.
En cada una de las etapas intermedias (1422) de cero o más, las cuales no se muestran con detalle, el componente aplica un filtro a los uno o más valores intermedios (1420). Uno o más valores intermedios (1429) que tienen una amplitud dinámica de z bits (mayor de x bits) son sacados de las etapas intermedias (1422) de cero o más y, en una última etapa (1430), el componente aplica (1432) un último filtro F_{L} a los valores (1429). La salida final procedente del último filtro F_{1} es variada (1434) en una cantidad mayor que la típicamente asociada con el último filtro F_{v}, contrayendo de esta forma la amplitud dinámica del valor de salida (1434) hasta una profundidad de bits específica. Por ejemplo, la amplitud dinámica (en bits) del valor de salida (1434) es igual a x o x + 1. En una implementación, la variación de la primera etapa y de cualquier etapa intermedia es diferida lo más posible hasta la etapa final. La cantidad en la cual se difiere la variación puede depender de la profundidad de bits disponible para los cálculos intermedios y para los factores de expansión de los respectivos filtros.
La Figura 15 muestra una técnica de interpolación multietapa (1500) que utiliza un control de redondeo de etapas alternantes. Las etapas múltiples en la técnica de interpolación (1500) alternan en cómo aplican el control de redondeo para ajustar el redondeo. Esto ayuda a impedir la acumulación del error de redondeo de trama a trama en determinadas secuencias de vídeo. Por ejemplo, si una secuencia de vídeo de baja calidad incluye un movimiento gradual en una dimensión (panorámica horizontal) o dos dimensiones (zoom), la acumulación del error de redondeo puede dar como resultado el desvanecimiento gradual de color de trama a trama, lo cual puede provocar distorsiones perceptibles. El control de redondeo de etapas alternantes ayuda a prevenir dicho desvanecimiento de color.
Un ejemplo numérico puede contribuir a ilustrar el redondeo en el cual el control de redondeo de etapas alternantes se aplica antes de la variación de bits de derecha. La variación de bits de derecha esencialmente produce la división y ruptura del valor variado de derecha. La suma de un valor de redondeo antes de la variación provoca que el valor variado sea redondeado por exceso o por defecto (hasta el entero más próximo), más que ser siempre redondeado por defecto (truncado). El empleo del control de redondeo modifica la dirección del redondeo (por exceso o por defecto) para un valor marginal. Por ejemplo, supóngase que en cada una de las múltiples etapas, la salida del filtrado se ajusta sumando ½ del "divisor" antes de una variación de derecha antes de la variación de derecha (por ejemplo, sumando 2^{4} = 16 antes de una variación de derecha de 5 bits sumando 2^{6} = 64 antes de una variación de derecha de 7 bits). El efecto de esta adición es redondear por exceso (hasta el entero más alto siguiente) los valores que tendrían un componente fraccional de .5 o mayor (después de una división correspondiente a la variación de los bits). Dichos valores en otro caso resultarían truncados (hasta el entero inferior siguiente) por la variación de derecha. Con independencia de la variación, los valores que tendrían un componente adicional de menos de .5 (después de una división correspondiente a la variación de los bits), resultan aún truncados (hasta el entero inferior siguiente) por la variación de derecha. El control de redondeo cambia entonces la dirección del redondeo para determinados valores margines. Por ejemplo, en cada una de las múltiples etapas la salida del filtrado se ajusta con mayor precisión sustrayendo 0 a 1 (el valor de control de redondeo alternativo) antes de la variación de derecha por ejemplo 2^{var.v-1} o 2^{var.v-1} -1). El efecto del ajuste de control de redondeo es modificar la dirección de redondeo para los valores que tendrían un componente fraccional de .5 (después de una división correspondiente a la variación de los bits), cuando se sustrae 1, dichos valores marginales son redondeados por defecto. En otro caso dichos valores marginales son redondeados por
exceso.
Cada una de las múltiples etapas utiliza un valor de control de redondeo que alterna entre 0 y 1 antes de la interpolación multietapa, de forma que etapas diferentes alternan en cómo se aplica el valor de control de redondeo. Alternativamente, la técnica de interpolación multietapa (1500) utiliza un valor de control de redondeo que ella misma alterna de etapa a etapa.
En la primera etapa (1510) de la Figura 15, el componente aplica (1512) un primer filtro F_{1} a uno o más valores de entrada (1511) de amplitud de x bits. En conjunción con o después de la aplicación del primer filtro F_{1} el redondeo (1514) se lleva a cabo sobre la salida procedente del primer filtro F_{1}. El redondeo (1514) se ajusta mediante el control de redondeo de capas alternantes. Por ejemplo, en la primera etapa (1510), el control de redondeo de capas alternantes provoca que el valor de salida sea redondeado al alza hasta el entero más próximo si el valor de salida es un valor marginal (en otro caso el valor de salida sería redondeado a la baja). Uno o más valores de redondeo (1520) son sacados de la primera etapa e introducidos en la segunda etapa (1530).
En la segunda etapa (1530), el componente aplica un segundo filtro F_{2} a los uno o más valores intermedios (1520). El redondeo (1534) se lleva a cabo sobre la salida del segundo filtro F_{2}. En conjunción con o después de la aplicación del segundo filtro F_{2} el redondeo (1534) se lleva a cabo con el control de redondeo de etapas alternantes, provocando el control de redondeo el redondeo en la dirección opuesta como la primera etapa para los valores margines. Por ejemplo, en la segunda etapa (1530), el control de redondeo de etapas alternantes provoca que el valor de salida sea redondeado a la baja hasta el entero más próximo si el valor de salida es el valor marginal. Uno o más valores intermedios (1536) son sacados de la segunda etapa y pueden ser utilizados en etapas adicionales (1540) de cero o más. Las etapas adicionales (1540) de cero o más pueden incluir así mismo el control de redondeo de etapas alternantes.
El control de redondeo alternante no se limita a ser aplicado en etapas consecutivas, sino que puede aplicarse en otras distintas combinaciones de etapas. Así mismo, la primera dirección puede depender de una serie de parámetros. Por ejemplo, en un codificador o descodificador de vídeo, la primera dirección puede depender del control de redondeo utilizado en la trama anterior o sobre el 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, implícitamente derivada de la información causal (por ejemplo, de la información codificada/descodificada pasada), derivada utilizando un generador seudoaleatorio, o señalado como parte de la corriente de bits. El control de redondeo de etapas alternantes puede aplicarse en la interpolación multietapa utilizando cualquiera entre una variedad de filtros de interpolación, incluyendo filtros bilineales, bicúbicos y bicúbicos aproximados.
D. Vectores de Movimiento de Crominancia
Dado que los vectores de movimiento de crominancia (croma) son implícitamente derivados de los vectores de movimiento de luminancia coemplazados, su precisión es limitada y ofrece campo para la simplificación. Esta simplificación puede reducir la complejidad computacional de la interpolación de subpíxel para los valores de crominancia en el codificador y descodificador sin reducir significativamente la calidad percibida del vídeo codificado. Así mismo, el codificador y descodificador pueden conmutar entre diferentes modos para el redondeo e interpolación de los vectores de movimiento de crominancia. Por ejemplo, un modo pone el énfasis en la calidad del vídeo codificado a expensas de una mayor complejidad computacional. Otro modo pone el énfasis en la simplicidad computacional a expensas hasta cierto punto de la calidad.
En una implementación, un codificador o descodificador de vídeo utilizan un "FASTUVMC" con un nivel de secuencia de un campo de un bit para controlar la interpolación de subpíxel para los valores de crominancia y el redondeo de los vectores de redondeo de crominancia. Así, el codificador y descodificador selectivamente operan en uno entre dos modos diferentes de redondeo de crominancia, un modo rápido y un modo básico.
La Figura 16 muestra una técnica (1600) para seleccionar entre múltiples modos de interpolación y redondeo de crominancia. Por ejemplo, un codificador o descodificador de vídeo, como por ejemplo el descrito anteriormente con referencia a las Figuras 4 y 5, respectivamente, lleva a cabo la técnica.
El codificador o descodificador de vídeo determina (1810) si el FASTUVMC con un indicador de un bit indica usar un modo de compensación de movimiento de crominancia rápido (indicador =1) o un modo de compensación de movimiento de crominancia básico (indicador = 0). Por ejemplo, el indicador es un campo de nivel de secuencia, correspondiente a una posición fijada por un usuario, la cual registra un codificador de la corriente de bits del vídeo codificado y un descodificador lee a partir de la corriente de bits. Alternativamente, el codificador y el descodificador utilizan más bits para señalar un redondeo de crominancia y/o un modo de interpolación utilizando códigos de longitud fija o de longitud variable, por ejemplo, para seleccionar entre dos modos disponibles. O bien, en lugar de ser un campo del nivel de secuencia correspondiente a una posición fijada por un usuario, la información de conmutación es señalada en alguna parte dentro de la corriente de bits y/o fijada de acuerdo con diferentes criterios.
El codificador o descodificador de vídeo lleva entonces a cabo la compensación de movimiento de crominancia en el modo básico (1620) o en el modo rápido (1630). Los detalles del redondeo e interpolación de vector de movimiento en el modo básico (1620) y en el modo rápido (1630) se ofrecen más abajo para una implementación. Alternativamente, estos modos tienen diferentes implementaciones. Por ejemplo, la tabla de búsqueda utilizada en la implementación de modo rápido (1630) descrita a continuación se modifica en una representación diferente para dar como resultado un nivel de prestación deseado para una específica arquitectura del hardware o se modifica para operar con vectores de movimiento de diferentes precisiones. En lugar de o además del modo básico (1620) y del modo rápido (1630), el codificador o descodificador pueden utilizar otros modos para el redondeo e interpolación de vector de movimiento de crominancia.
En una implementación, en el modo rápido, (por ejemplo, si el indicador de redondeo de crominancia = 1), los vectores de movimiento de crominancia que están desfasados en un cuarto de píxel (esto es, desfases de un cuarto de píxel y de tres cuartos de píxel) son redondeados hasta las posiciones del píxel completo más próximo, los vectores de movimiento de crominancia que están desfasados en medio píxel se dejan sin redondear, y el filtrado lineal se utiliza para toda la interpolación de crominancia. En este modo, la velocidad del codificador y del descodificador se incrementa. El motivo de esta optimización es la diferencia significativa entre las complejidades de los desfases del píxel de interpolación que están en: (a) posiciones de píxel entero; (b) posiciones de medio píxel; (c) una posición de un cuarto de píxel para al menos una coordenada (de x e y); y (d) posición de un cuarto de píxel para ambas coordenadas. La relación de a:b:c:d es aproximadamente 1:4:4.7:6.6. Aplicando este modo rápido, se puede favorecer a (a) y (b), recortando así el tiempo de descodificación. Debido a que esto se lleva únicamente a cabo para la interpolación de crominancia, la codificación y la pérdida de calidad (especialmente la calidad visible) son ambas
desdeñables.
\newpage
En este modo rápido, se efectúa un nivel final de redondeo sobre los vectores de movimiento de crominancia como sigue:
\quad
// RndTbl[-3] = -1, RndTbl[-2] = 0, RndTbl[-1] = +1, RndTbl[0] = 0
\quad
// RndTbl[1] = -1, RndTbl[2] = 0, RndTbl [3] = +1
cmv_x=cmv_v + RndTbl[cmv_x % 4];
(39)
\quad
cmv_y= cmv_y + RndTbl[cmv_y % 4];
donde 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 del módulo (o resto) el cual se define así: (x % a) = -(x % a). (El módulo de un número negativo es igual al negativo del módulo del correspondiente número positivo). Así, cuando cmv_x (o cmv_y) es divisible por 4, entonces el vector de movimiento de crominancia tiene un desfase de un entero. Cuando cmv_x % 4 = +/- 2, entonces el vector de movimiento de crominancia tiene un desfase de medio píxel. Y, cuando cmv_x % 4 = +/- 1 o +/- 3 el vector de movimiento de crominancia tiene un desfase de un cuarto de píxel. Como puede apreciarse mediante la operación de reconfiguración anterior no se permiten las posiciones de un cuarto de píxel mediante el redondeo del vector de movimiento de crominancia hasta la posición de entero más próxima (las posiciones de medio píxel quedan inalteradas). Así, este modo reconfigura las coordenadas de crominancia hasta las posiciones de píxel entero y de medio píxel. El filtrado bilineal puede ser utilizado en todas las interpolaciones de crominancia en este modo para una mayor rapidez. Aunque esta implementación de modo rápido se describe en combinación con la selección entre múltiples modos de redondeo, la implementación de modo rápido puede alternativamente utilizarse de manera independiente (esto es, como el único modo posible).
La Figura 17 es una tabla (1700) que ilustra este modo rápido de redondeo de crominancia. La primera fila (1710) muestra los valores de vector de luminancia con una precisión de un cuarto de píxel. Aunque los valores de vector de movimiento de luminancia se muestran en términos de desfase fraccionario respecto de los valores de píxel enteros, podrían representarse como valores enteros donde cada entero representase un incremento de un cuarto de píxel (esto es, 0, 1, 2, 3, 4 en lugar de 0, ¼, ½, ^{2}/_{4}, 1). La segunda fila (1720) muestra como los correspondientes valores de vector de movimiento de crominancia son redondeados en el modo rápido de forma que tienen una precisión de píxel entero y de medio píxel.
En el segundo, básico modo de esta implementación (por ejemplo, si el indicador de redondeo de crominancia = 0), los vectores de movimiento de crominancia que están desfasados en un cuarto de píxel con ningún error de redondeo permanecen en desfases de un cuarto de píxel. Los vectores de movimiento de crominancia desfasados en otro subpíxel son redondeados hasta la posición más próxima de píxel entero o de medio píxel. En este modo, la velocidad del descodificador puede ser más lenta que en los otros modos, pero la precisión con la cual se calculan los valores de píxel de crominancia es más alta. Así, el modo básico reconfigura las coordenadas de crominancia hasta posiciones de píxel entero, medio píxel, y un cuarto de píxel. El filtrado bicúbico o bilineal de acuerdo con lo anteriormente descrito puede utilizarse para la interpolación de crominancia.
La Figura 18 es una tabla que ilustra este modo básico de redondeo de crominancia. La primera fila (1810) muestra los valores de vector de crominancia con una precisión de un cuarto de píxel. La tercera fila (1830) muestra cómo los correspondientes valores de vector de movimiento de crominancia son redondeados dentro del modo básico anteriormente descrito, de forma que tienen 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 es redondeado en otras resoluciones del espacio de crominancia.
Después de describir e ilustrar los principios de nuestra invención con referencia a diversas formas de realización, debe advertirse que las diversas formas de realización pueden modificarse en disposición y detalle sin apartarse de los referidos principios. Por ejemplo, los principios y técnicas anteriormente descritos no se limitan a su uso en un codifiador de vídeo y/o un descodificador de vídeo. Por el contrario, pueden aplicarse en cualquier contexto informático donde se calcule un valor basado en parte en uno o más valores intermedios o en el que los filtros separables sean utilizados en múltiples dimensiones.
Debe entenderse que los programas, procesos o procedimientos descritos en la presente memoria no se relacionan o limitan a cualquier tipo concreto de entorno informático, a menos que se indique lo contrario. Pueden utilizarse diversos tipos de entornos con finalidad general o específica o llevar a cabo operaciones de acuerdo con las enseñanzas descritas en la presente memoria. Los elementos de las formas de realización mostradas en software pueden ser implementadas en hardware y viceversa.
En vista de las muchas posibles formas de realización a las cuales pueden aplicarse los principios de nuestra invención, reivindicados como nuestra invención todas estas formas de realización en cuanto se incluyan en el ámbito de las reivindicaciones subsecuentes y en sus equivalentes.

Claims (28)

1. Procedimiento de codificación o descodificación de vídeo implementado en un sistema informático (300), comprendiendo el procedimiento:
la selección (1610) de un modo entre múltiples modos disponibles de redondeo de vector de movimiento de crominancia;
la computación de un vector de movimiento de luminancia para un conjunto de valores de píxel dentro de una trama de vídeo prevista con respecto a una trama de vídeo de referencia en un espacio de luminancia; y
la conversión del vector de movimiento de luminancia en un vector de movimiento de crominancia, llevándose a cabo la conversión de un modo entre múltiples modos disponibles de redondeo de vector de movimiento de crominancia,
en el que, comparado con un primer modo (1620) entre múltiples modos disponibles de redondeo de vector de movimiento de crominancia, un segundo modo (1630) de los múltiples modos disponibles de redondeo de vector de movimiento de crominancia disminuye la precisión del vector de movimiento de crominancia y reduce con ello la complejidad computacional de la compensación de movimiento subsecuente.
2. El procedimiento de la reivindicación 1 en el que los múltiples modos disponibles de vector de movimiento de crominancia pueden disponerse por un usuario para su uso en la compensación de movimiento.
3. El procedimiento de las reivindicaciones 1 o 2 en el que los múltiples modos disponibles de vector de movimiento de crominancia pueden seleccionarse antes de la codificación.
4. El procedimiento de una de las reivindicaciones 1 a 3, en el que un solo modo entre los múltiples modos disponibles de redondeo de vector de movimiento de crominancia es seleccionado para una secuencia de vídeo.
5. El procedimiento de unas de las reivindicaciones 1 a 4 en el que, de acuerdo con un primer modo (1620), la conversión incluye el redondeo del vector de movimiento de crominancia con una precisión de un cuarto de píxel en el espacio de crominancia.
6. El procedimiento de la reivindicación 5 en el que, de acuerdo con el segundo modo (1630), la conversión incluye el redondeo del vector de movimiento de crominancia con una precisión de medio píxel en el espacio de crominan-
cia.
7. El procedimiento de una de las reivindicaciones 1 a 6 en el que el vector de movimiento de luminancia tiene un valor de un cuarto de píxel en una dimensión en el espacio de luminancia y en el que el vector de movimiento de crominancia tiene un valor correspondiente de un píxel entero o de medio píxel en una dimensión en el espacio de crominancia.
8. El procedimiento de una de las reivindicaciones 1 a 6 en el que el vector de movimiento de crominancia tiene un valor de medio píxel en una dimensión del espacio de luminancia, y en el que el vector de movimiento de crominancia tiene un valor correspondiente de un cuarto de píxel en la dimensión en el espacio de luminancia.
9. El procedimiento de una de las reivindicaciones 1 a 8 en el que una señal en una corriente de bits de vídeo indica uno de los múltiples modos disponibles de redondeo de vector de movimiento de crominancia.
10. El procedimiento de la reivindicación 9 en el que la señal es un valor de un bit en un campo de nivel de secuencia de corriente de bits de vídeo.
11. El procedimiento de una de las reivindicaciones 1 a 4, en el que la computación del vector de movimiento de luminancia se lleva a cabo con una precisión de un cuarto de píxel en el espacio de luminancia; y
en el que la conversión del vector de movimiento de luminancia en el vector de movimiento de crominancia se lleva a cabo con una precisión de un cuarto de píxel en el espacio de crominancia.
12. El procedimiento de la reivindicación 11 en el que la escala de vector de movimiento de crominancia es la mitad del vector del movimiento de crominancia.
13. El procedimiento de las reivindicaciones 11 o 12 en el que el vector de movimiento de crominancia tiene un valor de un cuarto de píxel en al menos una dimensión en el espacio de crominancia.
14. El procedimiento de las reivindicaciones 11 o 12 en el que el vector de movimiento de crominancia tiene un vector de un cuarto de píxel en al menos una dimensión en el espacio de crominancia.
15. El procedimiento de la reivindicación 11 en el que:
si el vector de movimiento de crominancia tiene un desfase de un cuarto de píxel en una dimensión determinada, el vector de movimiento de crominancia tiene un valor de un píxel entero en la dimensión determinada;
si el vector de movimiento de luminancia tiene un desfase de medio píxel en la dimensión determinada, el vector de movimiento de crominancia tiene un desfase de un cuarto de píxel en la dimensión determinada; y
si el vector de movimiento de luminancia tiene un desfase de tres cuartos de píxel en la dimensión determinada, el vector de movimiento de crominancia tiene un desfase de medio píxel en la dimensión determinada.
16. El procedimiento de las reivindicaciones 11, 12 o 13 en el que el vector de movimiento de crominancia tiene un valor de medio píxel en una dimensión en el espacio de luminancia, y en el que el vector de movimiento de crominancia tiene un valor correspondiente de un cuarto de píxel en una dimensión en el espacio de crominancia.
17. Medio legible por computadora que almacena unas instrucciones ejecutables por computadora para provocar que el sistema informático (300) lleve a cabo uno de los procedimientos de las reivindicaciones 1 a 16 durante la codificación de vídeo.
18. Medio legible por computadora que almacena unas instrucciones ejecutables por computadora para provocar que el sistema informático (300) lleve a cabo uno de los procedimientos de las reivindicaciones 1 a 16 durante la descodificación de vídeo.
19. Sistema para la codificación o descodificación (300) de vídeo que comprende:
un medio para seleccionar (1610) uno entre múltiples modos disponibles de redondeo de vector de movimiento de crominancia;
un medio para computar los vectores de movimiento de crominancia para una trama de vídeo prevista con respecto a una trama de vídeo de referencia; y
un medio para convertir los vectores de movimiento de luminancia en vectores de movimiento de crominancia de acuerdo con el modo de redondeo de vector de movimiento de crominancia,
en el que comparado con un primer modo (1620) entre los múltiples modos disponibles de redondeo de vector de movimiento de crominancia, un segundo modo (1630) entre los múltiples modos disponibles de redondeo de vector de movimiento de crominancia disminuye la precisión de vector de movimiento de crominancia y reduce con ello la complejidad computacional de la compensación de movimiento subsecuente.
20. El sistema (300) de la reivindicación 19 en el que la selección del modo entre los múltiples modos disponibles de redondeo de vector de movimiento de crominancia se lleva a cabo a base de una entrada de un usuario.
21. El sistema (300) de las reivindicaciones 19 o 20 en el que al menos algunos vectores de movimiento de luminancia tienen una precisión de un cuarto de píxel, y en el que el modo seleccionado de redondeo de vector de movimiento de crominancia hace corresponder al menos algunos de los vectores de movimiento de luminancia con unos vectores de movimiento de crominancia con precisión de un cuarto de píxel en el espacio de crominancia.
22. El sistema (300) de las reivindicaciones 19 o 20 en el que al menos algunos vectores de movimiento de luminancia tienen una precisión de un cuarto de píxel, y en el que el modo seleccionado de redondeo de vector de movimiento de luminancia no hace corresponder ninguno de los vectores de movimiento de luminancia con unos vectores de movimiento de crominancia con una precisión de un cuarto de píxel en el espacio de crominancia.
23. El sistema (300) de una de las reivindicaciones 19 a 22 en el que una señal en una corriente de bits indica el modo seleccionado de redondeo de vector de movimiento de crominancia.
24. El sistema (300) de la reivindicación 23 en el que la señal es un valor de un bit en un campo de nivel de secuencia de la corriente de bits.
25. El sistema de la reivindicación 19, en el que el medio para computar los vectores de movimiento de luminancia está dispuesto para computar los vectores de movimiento de luminancia con una precisión de un cuarto de píxel para la trama de vídeo prevista con respecto a la trama de vídeo de referencia; y
en el que el medio para convertir los vectores de luminancia en vectores de movimiento de crominancia está dispuesto para convertir los vectores de movimiento de luminancia en vectores de movimiento de crominancia con una precisión de un cuarto de píxel en el espacio de crominancia.
26. El sistema (300) de la reivindicación 25 en el que la escala de los vectores de movimiento de crominancia es la mitad de la escala de los vectores de movimiento de luminancia.
27. El sistema (300) de las reivindicaciones 25 o 26 en el que el medio de conversión redondea los vectores de movimiento de crominancia con un valor no igual a un cuarto de píxel un valor de medio píxel o de un píxel entero.
28. El sistema (300) de las reivindicaciones 25 o 26 en el que para un determinado vector de movimiento de luminancia entre los vectores de movimiento de luminancia y el vector correspondiente de movimiento de crominancia entre los vectores de movimiento de crominancia:
si el vector de movimiento de luminancia tiene un valor de desfase de un cuarto de píxel en una determinada dimensión, el vector de movimiento de crominancia tiene un valor de píxel entero en la dimensión determinada;
si el vector de movimiento de luminancia tiene un valor de desfase de medio píxel en la dimensión determinada, el vector de movimiento de crominancia tiene un valor de desfase de un cuarto de píxel en la dimensión determinada; y
si el vector de movimiento de luminancia tiene un valor de desfase de tres cuartos de píxel en la dimensión determinada, el vector de movimiento de crominancia tiene un valor de desfase de medio píxel en la dimensión determinada.
ES03007020T 2002-04-10 2003-03-27 Redondeos del vector de movimiento de crominancia. Expired - Lifetime ES2269850T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US37186002P 2002-04-10 2002-04-10
US371860P 2002-04-10
US10/379,615 US7116831B2 (en) 2002-04-10 2003-03-04 Chrominance motion vector rounding
US379615P 2003-03-04

Publications (1)

Publication Number Publication Date
ES2269850T3 true ES2269850T3 (es) 2007-04-01

Family

ID=28794437

Family Applications (1)

Application Number Title Priority Date Filing Date
ES03007020T Expired - Lifetime ES2269850T3 (es) 2002-04-10 2003-03-27 Redondeos del vector de movimiento de crominancia.

Country Status (9)

Country Link
US (1) US7116831B2 (es)
EP (1) EP1359768B1 (es)
JP (1) JP2003333604A (es)
KR (1) KR100635410B1 (es)
CN (1) CN100390777C (es)
AT (1) ATE336144T1 (es)
DE (1) DE60307354T2 (es)
ES (1) ES2269850T3 (es)
HK (1) HK1060241A1 (es)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3934568B2 (ja) * 2003-03-04 2007-06-20 松下電器産業株式会社 動画符号化方法および装置
US8824553B2 (en) 2003-05-12 2014-09-02 Google Inc. Video compression method
US8218624B2 (en) 2003-07-18 2012-07-10 Microsoft Corporation Fractional quantization step sizes for high bit rates
US7738554B2 (en) 2003-07-18 2010-06-15 Microsoft Corporation DC coefficient signaling at small quantization step sizes
US10554985B2 (en) 2003-07-18 2020-02-04 Microsoft Technology Licensing, Llc DC coefficient signaling at small quantization step sizes
US7852919B2 (en) 2003-09-07 2010-12-14 Microsoft Corporation Field start code for entry point frames with predicted first field
US8213779B2 (en) * 2003-09-07 2012-07-03 Microsoft Corporation Trick mode elementary stream and receiver system
US7924921B2 (en) * 2003-09-07 2011-04-12 Microsoft Corporation Signaling coding and display options in entry point headers
US7839930B2 (en) * 2003-11-13 2010-11-23 Microsoft Corporation Signaling valid entry points in a video stream
NO319629B1 (no) * 2003-11-28 2005-09-05 Tandberg Telecom As Fremgangsmate for korrigering av interpolerte pikselverdier
US20050129130A1 (en) * 2003-12-10 2005-06-16 Microsoft Corporation Color space coding framework
US7471843B2 (en) * 2004-02-04 2008-12-30 Sharp Laboratories Of America, Inc. System for improving an image displayed on a display
KR100618910B1 (ko) * 2004-04-03 2006-09-01 (주)씨앤에스 테크놀로지 최적화된 연산복잡도를 갖는 움직임 추정 장치 및 그 방법
US7801383B2 (en) 2004-05-15 2010-09-21 Microsoft Corporation Embedded scalar quantizers with arbitrary dead-zone ratios
US7366354B2 (en) * 2004-06-30 2008-04-29 Xerox Corporation 10-bit per pixel processing using 8-bit resources
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
JP4145275B2 (ja) * 2004-07-27 2008-09-03 富士通株式会社 動きベクトル検出・補償装置
TWI274508B (en) * 2004-10-19 2007-02-21 Ali Corp Device and method for computing reference address of motion compensation in image processing
US8422546B2 (en) 2005-05-25 2013-04-16 Microsoft Corporation Adaptive video encoding using a perceptual model
WO2006131891A2 (en) * 2005-06-10 2006-12-14 Nxp B.V. Alternating up- and down-ward motion vector
KR100746022B1 (ko) 2005-06-14 2007-08-06 삼성전자주식회사 서브픽셀 움직임 추정시 모델 스위칭을 통한 압축 효율을증가시키는 인코딩 방법 및 장치
US20060285597A1 (en) * 2005-06-20 2006-12-21 Flextronics International Usa, Inc. Reusing interpolated values in advanced video encoders
US7881563B2 (en) * 2006-02-15 2011-02-01 Nokia Corporation Distortion correction of images using hybrid interpolation technique
US7974340B2 (en) 2006-04-07 2011-07-05 Microsoft Corporation Adaptive B-picture quantization control
US7995649B2 (en) 2006-04-07 2011-08-09 Microsoft Corporation Quantization adjustment based on texture level
US8130828B2 (en) 2006-04-07 2012-03-06 Microsoft Corporation Adjusting quantization to preserve non-zero AC coefficients
US8503536B2 (en) 2006-04-07 2013-08-06 Microsoft Corporation Quantization adjustments for DC shift artifacts
US8059721B2 (en) 2006-04-07 2011-11-15 Microsoft Corporation Estimating sample-domain distortion in the transform domain with rounding compensation
US8208553B2 (en) * 2006-05-04 2012-06-26 Altera Corporation Methods and apparatus for quarter-pel refinement in a SIMD array processor
US8711925B2 (en) 2006-05-05 2014-04-29 Microsoft Corporation Flexible quantization
JP4682384B2 (ja) * 2006-07-11 2011-05-11 株式会社メガチップス 1/4画素輝度用動き予測機構、組合せ輝度用動き予測機構、及び組合せ輝度・色差用動き予測機構
KR20080008137A (ko) 2006-07-19 2008-01-23 삼성전자주식회사 영상 복원 장치 및 방법
KR100899730B1 (ko) 2006-10-20 2009-05-27 삼성전자주식회사 영상 인코더 및 디코더에서의 색차 신호 보간 방법
US8238424B2 (en) 2007-02-09 2012-08-07 Microsoft Corporation Complexity-based adaptive preprocessing for multiple-pass video compression
US8498335B2 (en) 2007-03-26 2013-07-30 Microsoft Corporation Adaptive deadzone size adjustment in quantization
US8243797B2 (en) 2007-03-30 2012-08-14 Microsoft Corporation Regions of interest for quality adjustments
US8442337B2 (en) 2007-04-18 2013-05-14 Microsoft Corporation Encoding adjustments for animation content
US8331438B2 (en) 2007-06-05 2012-12-11 Microsoft Corporation Adaptive selection of picture-level quantization parameters for predicted video pictures
KR100909390B1 (ko) * 2007-09-18 2009-07-24 한국과학기술원 고속 움직임 보상 장치 및 방법
KR101291196B1 (ko) * 2008-01-25 2013-07-31 삼성전자주식회사 영상의 부호화, 복호화 방법 및 장치
US8189933B2 (en) 2008-03-31 2012-05-29 Microsoft Corporation Classifying and controlling encoding quality for textured, dark smooth and smooth video content
US8897359B2 (en) 2008-06-03 2014-11-25 Microsoft Corporation Adaptive quantization for enhancement layer video coding
US8705896B2 (en) * 2008-06-13 2014-04-22 Hewlett-Packard Development Company, L.P. Processing a super-resolution target image
JP2010035137A (ja) * 2008-07-01 2010-02-12 Sony Corp 画像処理装置および方法、並びにプログラム
US8326075B2 (en) 2008-09-11 2012-12-04 Google Inc. System and method for video encoding using adaptive loop filter
US8311111B2 (en) 2008-09-11 2012-11-13 Google Inc. System and method for decoding using parallel processing
US8325796B2 (en) 2008-09-11 2012-12-04 Google Inc. System and method for video coding using adaptive segmentation
EP2222086A1 (de) * 2009-02-18 2010-08-25 EcoDisc Technology AG Verfahren und Vorrichtung zur Vermeidung von Rundungsfehlern nach Durchführung einer inversen diskreten orthogonalen Transformation
WO2010126783A2 (en) * 2009-04-30 2010-11-04 Roman Gitlin Method and apparatus for streamlined implementation of interpolation in multiple dimensions
KR101630688B1 (ko) * 2010-02-17 2016-06-16 삼성전자주식회사 움직임 예측 장치 및 방법과 영상 처리 장치
US20110200108A1 (en) * 2010-02-18 2011-08-18 Qualcomm Incorporated Chrominance high precision motion filtering for motion interpolation
CN101883286B (zh) * 2010-06-25 2012-12-05 无锡中星微电子有限公司 运动估计中的校准方法及装置、运动估计方法及装置
KR20130054408A (ko) 2010-10-05 2013-05-24 제너럴 인스트루먼트 코포레이션 지그재그 스캔에 의한 적응적 컨텍스트 모델 선택을 이용하는 코딩 및 디코딩
CN102611887B (zh) * 2011-01-21 2015-08-05 华为技术有限公司 非整像素位置运动矢量的坐标值取整方法和装置
US8938001B1 (en) 2011-04-05 2015-01-20 Google Inc. Apparatus and method for coding using combinations
US9154799B2 (en) 2011-04-07 2015-10-06 Google Inc. Encoding and decoding motion via image segmentation
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
US8780971B1 (en) 2011-04-07 2014-07-15 Google, Inc. System and method of encoding using selectable loop filters
CN102811346B (zh) * 2011-05-31 2015-09-02 富士通株式会社 编码模式选择方法和系统
US9300975B2 (en) * 2011-09-11 2016-03-29 Texas Instruments Incorporated Concurrent access shared buffer in a video encoder
US8885706B2 (en) 2011-09-16 2014-11-11 Google Inc. Apparatus and methodology for a video codec system with noise reduction capability
US9247257B1 (en) 2011-11-30 2016-01-26 Google Inc. Segmentation based entropy encoding and decoding
US9262670B2 (en) 2012-02-10 2016-02-16 Google Inc. Adaptive region of interest
US9131073B1 (en) 2012-03-02 2015-09-08 Google Inc. Motion estimation aided noise reduction
US11039138B1 (en) 2012-03-08 2021-06-15 Google Llc Adaptive coding of prediction modes using probability distributions
US8819525B1 (en) 2012-06-14 2014-08-26 Google Inc. Error concealment guided robustness
US9774856B1 (en) 2012-07-02 2017-09-26 Google Inc. Adaptive stochastic entropy coding
US9344729B1 (en) 2012-07-11 2016-05-17 Google Inc. Selective prediction signal filtering
US9008363B1 (en) 2013-01-02 2015-04-14 Google Inc. System and method for computing optical flow
US9509998B1 (en) 2013-04-04 2016-11-29 Google Inc. Conditional predictive multi-symbol run-length coding
US11425395B2 (en) 2013-08-20 2022-08-23 Google Llc Encoding and decoding using tiling
TWI602144B (zh) * 2013-10-02 2017-10-11 國立成功大學 包裝彩色圖框及原始景深圖框之方法、裝置及系統
US9392288B2 (en) 2013-10-17 2016-07-12 Google Inc. Video coding using scatter-based scan tables
US9179151B2 (en) 2013-10-18 2015-11-03 Google Inc. Spatial proximity context entropy coding
US9596478B2 (en) * 2013-11-20 2017-03-14 Kyocera Document Solutions Inc. Image compressing/decompressing apparatus and image forming apparatus
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
WO2016147836A1 (ja) * 2015-03-13 2016-09-22 ソニー株式会社 画像処理装置および方法
US10200713B2 (en) * 2015-05-11 2019-02-05 Qualcomm Incorporated Search region determination for inter coding within a particular picture of video data
GB201510652D0 (en) * 2015-06-17 2015-07-29 Beers Uk De Ltd Colour measurement of gemstones
NZ741321A (en) 2015-09-25 2019-10-25 Huawei Tech Co Ltd Adaptive sharpening filter for predictive coding
RU2696311C1 (ru) * 2015-09-25 2019-08-01 Хуавэй Текнолоджиз Ко., Лтд. Устройство и способ для компенсации движения видео с выбираемым интерполяционным фильтром
JP6673599B2 (ja) 2015-09-25 2020-03-25 ホアウェイ・テクノロジーズ・カンパニー・リミテッド ビデオ動き補償のための装置及び方法
BR112018006031A2 (pt) 2015-09-25 2018-10-09 Huawei Tech Co Ltd codificador de vídeo, decodificador de vídeo e métodos para codificação e decodificação preditiva
WO2017052405A1 (en) 2015-09-25 2017-03-30 Huawei Technologies Co., Ltd. Apparatus and method for video motion compensation
US10235763B2 (en) 2016-12-01 2019-03-19 Google Llc Determining optical flow
US11272207B2 (en) 2017-06-12 2022-03-08 Futurewei Technologies, Inc. Selection and signaling of motion vector (MV) precisions
EP3682634A1 (en) * 2017-10-09 2020-07-22 Huawei Technologies Co., Ltd. Motion vector refinement of a motion vector pointing to a fractional sample position
CN110324627B (zh) * 2018-03-30 2022-04-05 杭州海康威视数字技术股份有限公司 色度的帧内预测方法及装置
US11025946B2 (en) * 2018-06-14 2021-06-01 Tencent America LLC Method and apparatus for video coding
TWI729483B (zh) * 2018-09-04 2021-06-01 聯發科技股份有限公司 視訊編解碼系統的運動向量湊整統一的方法以及裝置
US11477476B2 (en) * 2018-10-04 2022-10-18 Qualcomm Incorporated Affine restrictions for the worst-case bandwidth reduction in video coding
CN113039796B (zh) 2018-11-17 2023-09-19 北京字节跳动网络技术有限公司 视频处理中的广义双向预测模式
WO2020125755A1 (en) 2018-12-21 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Motion vector range based on motion vector precision
WO2020125750A1 (en) * 2018-12-21 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Motion vector precision in merge with motion vector difference mode

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3854337T2 (de) 1987-06-09 1996-02-01 Sony Corp Bewegungskompensierte Interpolation von digitalen Fernsehbildern.
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
EP0585051B1 (en) * 1992-08-21 2001-03-07 Canon Kabushiki Kaisha Image processing method and apparatus
JPH06343172A (ja) * 1993-06-01 1994-12-13 Matsushita Electric Ind Co Ltd 動きベクトル検出方法及び動きベクトル符号化方法
KR0151210B1 (ko) * 1994-09-23 1998-10-15 구자홍 엠펙2를 수용하는 반화소 움직임 보상조절장치
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
US5825929A (en) 1995-10-05 1998-10-20 Microsoft Corporation Transformation block optimization method
US5929940A (en) 1995-10-25 1999-07-27 U.S. Philips Corporation Method and device for estimating motion between images, system for encoding segmented images
US5991463A (en) 1995-11-08 1999-11-23 Genesis Microchip Inc. Source data interpolation method and apparatus
US5692063A (en) 1996-01-19 1997-11-25 Microsoft Corporation Method and system for unrestricted motion estimation for video
US5799113A (en) 1996-01-19 1998-08-25 Microsoft Corporation Method for expanding contracted video images
US5787203A (en) 1996-01-19 1998-07-28 Microsoft Corporation Method and system for filtering compressed video images
US6957350B1 (en) * 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5982438A (en) 1996-03-22 1999-11-09 Microsoft Corporation Overlapped motion compensation for object coding
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
EP2288164B1 (en) * 1997-06-09 2013-09-11 Hitachi, Ltd. Image decoding method and image decoder
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

Also Published As

Publication number Publication date
JP2003333604A (ja) 2003-11-21
ATE336144T1 (de) 2006-09-15
CN100390777C (zh) 2008-05-28
HK1060241A1 (en) 2004-07-30
KR20030081117A (ko) 2003-10-17
KR100635410B1 (ko) 2006-10-18
DE60307354D1 (de) 2006-09-21
DE60307354T2 (de) 2006-12-14
US7116831B2 (en) 2006-10-03
EP1359768B1 (en) 2006-08-09
EP1359768A1 (en) 2003-11-05
CN1456999A (zh) 2003-11-19
US20030194010A1 (en) 2003-10-16

Similar Documents

Publication Publication Date Title
ES2269850T3 (es) Redondeos del vector de movimiento de crominancia.
ES2254811T3 (es) Interpolacion subpixel en la estimacion y compesacion del movimiento.
ES2266665T3 (es) Control del redondeo para la interpolacion multietapa.
ES2278087T3 (es) Filtro bicubico aproximado.
ES2845728T3 (es) Filtrado de compensación de movimiento adaptativo al contenido para codificación de vídeo de alta eficiencia
KR101581100B1 (ko) 참조 픽쳐 리스트 관리 방법 및 이러한 방법을 사용하는 장치
CN101335896B (zh) 用于前向预测的隔行扫描视频帧的场的预测运动矢量
ES2540583T7 (es) Método para interpolación de valor de subpíxeles
RU2683591C1 (ru) Способ и устройство для компенсации движения с предсказанием
ES2275037T3 (es) Procedimiento de codificacion de video con compensacion de fundido.
US20030156646A1 (en) Multi-resolution motion estimation and compensation
US7958177B2 (en) Method of parallelly filtering input data words to obtain final output data words containing packed half-pel pixels
KR20100074137A (ko) 영상 부호화 방법 및 영상 복호 방법