Published: — -without international search report and to be republished upon receipt of that report
FILTROS DINAMICOS DE CODIFICACION
Campo de la Invención La presente invención se refiere a la compensación de movimiento en la codificación de video. Más específicamente, la invención está relacionada con un método para codificar los coeficientes de filtros de interpolación utilizados para reconstruir valores de píxel de la imagen en codificadores y decodificadores de video con compensación de movimiento. La invención también se refiere a un codificador de video, un decodificador de video y un sistema de transmisión de video correspondientes que implementan el método de la invención. Antecedentes de la Invención Hoy en día hay en existencia varios estándares de codificación de video. Estos incluyen la recomendación H.263 del Sector de Estandarización de Telecomunicaciones de la Unión Internacional de Telecomunicaciones (ITU-T, por sus siglas en inglés) y los estándares MPEG-1, MPEG-2 y MPEG-4 del Grupo de Expertos en Imágenes en Movimiento (MPEG, por sus siglas en inglés) de la Organización de Estándares Internacionales (ISO, por sus siglas en inglés) . Estos estándares de codificación de video se basan en el uso de la predicción con compensación de movimiento y la codificación de error de predicción. La predicción con compensación de movimiento se realiza al analizar y codificar el movimiento
REF : 157174 2
entre cuadros sucesivos en una secuencia de video y reconstruir bloques de imágenes utilizando la información de movimiento. La reconstrucción de los bloques de imágenes se construye utilizando filtros de interpolación de movimiento que son capaces de generar valores de imágenes (pixeles) para las posiciones de pixeles y sub-pixeles necesarias. Los principios básicos de la predicción con compensación de móvimiento y la reconstrucción de imágenes utilizando filtros de interpolación se describe en mayor detalle en los siguientes párrafos. Las secuencias de video digital, como imágenes ordinarias en movimiento grabadas en una película, comprenden una secuencia de imágenes fijas, f ecuentemente referidas como "cuadros" . La ilusión de movimiento se crea al exhibir los cuadros uno después de otro a una velocidad relativamente rápida, típicamente de 15 a 30 cuadros por segundo. Debido a la velocidad de los cuadros relativamente rápida, el contenido de imágenes de los cuadros consecutivos tiende a ser muy similar y de esta manera los cuadros consecutivos contienen una cantidad considerable de información redundante . Cada cuadro de una secuencia de video digital comprende un ordenamiento de pixeles de la imagen. En un formato de video digital utilizado comúnmente, conocido como Formato de Intercambio Común de Cuartos (OCIF, por sus siglas 3
en inglés) , un cuadro comprende un ordenamiento de 176 x 144 pixeles y, de esta manera, cada cuadro tiene 25,344 pixeles. Cada píxel del cuadro es representado por un cierto número de bitios, los cuales llevan información acerca de la luminancia y/o contenido de color (crominancia) de la región de la imagen que corresponde al píxel. Comúnmente, un modelo de color comúnmente llamado YUV se utiliza para representar el cóntenido de luminancia y crominancia de una imagen. El componente de luminancia, o Y, representa la intensidad (brillo) de la imagen, mientras que el contenido de color de la imagen es representado por dos componentes de crominancia, etiquetados U y V. Los modelos de color basados en una representación de luminancia/crominancia de un contenido de imagen proporcionan ciertas ventajas en comparación con los modelos de color que se basan en una representación que involucra colores primarios (esto es rojo, verde y azul, RGB, por sus siglas en inglés) . Debido a que el sistema visual humano es más sensible a las variaciones de intensidad que a las variaciones de color, los modelos de color YUV explotan esta propiedad al utilizar una resolución espacial más baja para los componentes de crominancia (U, V) que para el componente de luminancia (Y) . De esta manera, la cantidad de información necesaria para codificar la información de color en una imagen puede ser reducida con una reducción menor en la 4
calidad de la imagen. La resolución espacial, inferior de los componentes de crominancia se logra usualmente mediante el sub-muestreo espacial. Típicamente, un bloque de 16x16 pixeles de la imagen es codificado por un bloque de 16x16 valores que representan información de luminancia y dos componentes de crominancia son representados cada uno por un bloque de 8x8 válores que representan un área de la imagen que es equivalente a aquella del ordenamiento de 16x16 de los valores de luminancia. De esta manera, los componentes de crominancia son sub-muestreados espacialmente por un factor de 2 en las direcciones horizontal y vertical. El montaje resultante de un bloque de luminancia de 16x16 y dos bloques de crominancia de 8x8 es referido comúnmente como un macrobloque YUV, o un macrobloque, para abreviar. Una imagen QCIF comprende 11x9 macrobloques . Si los bloques de luminancia y los bloques de crominancia son representados con una resolución de 8 bitios (esto es por números en el rango de 0 a 255) , el número total de bitios requeridos por macrobloque es (16x16x18) +2x (8x8x8) = 3072 bitios. De esta manera, el número de bitios necesarios para representar un cuadro de video en el formato QCIF, utilizando una resolución de número de 8 bitios por componente, es 99x3071 = 304,128 bitios. Por lo tanto, la cantidad de datos requeridos para transmitir, registrar o exhibir una secuencia 5
de video que comprende una serie de estos cuadros de formato QCIF a una velocidad de 30 cuadros por segundo es más de 9 Mbps (millones de bitios por segundo) . Esta velocidad de datos no es práctica para el uso en las aplicaciones de grabación, transmisión y exhibición de video debido a la capacidad de almacenamiento, la capacidad de canal de transmisión y el desempeño de los componentes físicos muy g andes que se requieren. Por esta razón, se han desarrollado estándares de codificación de video, tales como aquellos mencionados anteriormente, a fin de reducir la cantidad de información requerida para representar y transmitir datos de video mientras que se retiene una calidad de imagen aceptable . Cada uno de los estándares de codificación de video mencionados previamente está adaptado para la aplicación en los sistemas de grabación o transmisión de video que tienen diferentes características. Por ejemplo, el estándar ISO MPEG-1 está diseñado específicamente para el uso en situaciones donde el ancho de banda de datos disponible es de hasta aproximadamente 1.5 Mbitios/s. El estándar de codificación de video MPEG-2 es aplicable principalmente a los medios de almacenamiento digitales y la transmisión y comunicación de video con anchos de banda de datos disponibles de hasta aproximadamente 10 Mbitios/s. La recomendación H.263 de ITU-T está propuesta para el uso en 6
sistemas donde el ancho de banda disponible es generalmente mucho más bajo. Es particularmente adecuado para el uso en situaciones donde los datos de video deben ser transmitidos en tiempo real a través de una red de línea fija, tal como la Red Digital de Servicios Integrados (ISDN, por sus siglas en inglés) o una Red Telefónica de Servicio Público (PSTN, por sus siglas en inglés) , donde el ancho de banda de transmisión dé datos disponible está típicamente en el orden de 64 kbitios/s. En la videotelefonía móvil, donde la transmisión toma lugar al menos en parte a través de un enlace de radiocomunicación, el ancho de banda disponible puede ser tan bajo como 20 kbitios/s. Aunque los diversos estándares de codificación de video actualmente en existencia están adaptados para el uso en diferentes situaciones, los mecanismos que éstos emplean a fin de reducir la cantidad de información a transmitirse tienen muchas características en común. En particular, todos éstos trabajan de manera tal para reducir la cantidad de información redundante y perceptivamente irrelevante en una secuencia de video a transmitirse. Básicamente, existen tres tipos de redundancia en las secuencias de video: redundancia espacial, temporal y espectral. La redundancia espacial es el término utilizado para describir la correlación entre pixeles vecinos dentro de un cuadro individual de una secuencia. La redundancia temporal expresa el hecho que es probable que los 7
efectos que aparecen en un cuadro de una secuencia aparezcan en los cuadros subsecuentes. La redundancia espectral se refiere a la correlación entre diferentes componentes de color de la misma imagen. La compresión suficientemente eficiente no puede lograrse usualmente al reducir simplemente las diversas formas de redundancia en una secuencia de imágenes dada. De esta manera, los codificadores de video más actuales también pueden reducir la calidad de aquellas partes de la secuencia de video que son subjetivamente las menos importantes. Además, la redundancia de la corriente de bitios de video comprimido es reducida en sí por medio de la codificación de menos pérdidas, eficiente. Típicamente, esto se logra utilizando una codificación entrópica. La predicción con compensación de movimiento es una forma de reducción de redundancia temporal en la cual el contenido de algunos (frecuentemente muchos) cuadros en una secuencia de video es "previsto" a partir de otros cuadros en la secuencia al trazar el movimiento de los objetos o regiones de una imagen entre los cuadros. Los cuadros que son comprimidos utilizando la predicción con compensación de movimiento son referidos típicamente como cuadros INTER-codificados o cuadros-P, mientras que los cuadros que son comprimidos sin utilizar la predicción con compensación de movimiento son llamados cuadros INTRA-codificados o cuadros- 8
I. Una imagen prevista (con compensación de movimiento, INTER-codificada) en raras ocasiones es suficientemente precisa para representar el contenido de la imagen con calidad suficiente y, por lo tanto, un cuadro de error de predicción (PE, por sus siglas en inglés) espacialmente comprimido también está asociado con cada cuadro INTER. Muchos esquemas de compresión de video también pueden hacer uso de cuadros bi-direccionalmente previstos, los cuales son referidos comúnmente como imágenes-B o cuadros-B. Las imágenes-B son insertadas entre pares de imágenes de referencia o comúnmente llamadas "ancla" (cuadros I o P) y son previstas a partir de ya sea una o ambas de las imágenes ancla . Los diferentes tipos de cuadros que se encuentran ocurren en una secuencia típica de video comprimido se ilustran en la figura 3 de los dibujos que acompañan este texto. Como se puede observar a partir de la figura, la secuencia inicia con un cuadro INTRA o I 30. En la figura 3, las flechas 33 representan el proceso de predicción "adelantada" mediante el cual se forman los cuadros-P 34. El proceso de predicción bi-direccional mediante el cual se forman los cuadros-B 36 es representado por las flechas 31a y 31b, respectivamente. Un diagrama esquemático de un sistema de codificación de video genérico que utiliza la predicción con compensación 9
de movimiento se muestra en las figuras 1 y 2. La figura 1 ilustra un codificador 10 que emplea la predicción con compensación de movimiento y la figura 2 ilustra un decodificador correspondiente 20. El codificador 10 mostrado en la figura 1 comprende un bloque de Estimación de Campo de Movimiento 11, un bloque de Codificación de Campo de Movimiento 12, un bloque de Predicción con Compensación de Movimiento 13, un bloque de Codificación de Error de Predicción 14, un bloque de Decodificación de Error de Predicción 15, un bloque de Multiplexión 16, una Memoria de Cuadros 17, y un adicionador 19. El decodificador 20 comprende un bloque de Predicción con Compensación de Movimiento 21, un bloque de Decodificación de Errores de Predicción 22, un bloque de Desmultiplexion 23, una Memoria de Cuadros 24. El principio operativo de las codificaciones de video que emplean la predicción con compensación de movimiento es minimizar la cantidad de información en un cuadro de error de predicción En(x,y) , el cual es la diferencia entre un cuadro actual „(·*,y) que es codificado y un cuadro de predicción Pn(x,y) . De esta manera, el cuadro de error de predicción es definido como sigue: En{x,y) = In(x,y)-Pn{x,y) . (3) : 10
El cuadro de predicción P„(x, y) se construye utilizando valores de píxel de un cuadro de referencia R„( ,y) , el cual es generalmente uno de los cuadros previamente codificados y transmitidos, por ejemplo, el cuadro que precede inmediatamente el cuadro actual y está disponible en la Memoria de Cuadros 17 del codificador 10. Más específicamente, el cuadro de predicción P„(x,y) está construido al encontrar "pixeles de predicción" en el cuadro de referencia Rn (x,y) que corresponde sustancialmente a los pixeles en el cuadro actual. La información de movimiento, que describe la relación (por ejemplo la ubicación relativa, rotación, escala, etcétera) entre los pixeles en el cuadro actual y sus pixeles de predicción correspondientes en el cuadro de referencia es derivada y el cuadro de predicción se construye el mover los pixeles de predicción de acuerdo con la información de movimiento. De esta manera, el cuadro de predicción se construye como una representación aproximada del cuadro actual, utilizando valores de píxel en el cuadro de referencia. Por lo tanto, el cuadro de error de predicción referido anteriormente representa la diferencia entre la representación aproximada del cuadro actual proporcionada por el cuadro de predicción y el cuadro actual mismo. La ventaja básica proporcionada por los codificadores de video que utilizan la predicción con compensación de movimiento surge del hecho que se puede obtener una descripción 11
comparativamente compacta del cuadro actual por medio de la información de movimiento requerida para formar su predicción, junto con la información de error de predicción asociada en el cuadro de error de predicción. Debido al gran número de pixeles en un cuadro, generalmente no es eficiente transmitir información de movimiento separada para cada píxel al decodificador . En cambio, en la mayoría de esquemas de codificación de video, el cuadro actual es dividido en segmentos de imagen más grandes ¾, y la información de movimiento con relación a los segmentos es transmitida al decodificador . Por ejemplo, la información de movimiento es proporcionada típicamente para cada macrobloque de un cuadro y la misma información de movimiento luego se utiliza para todos los pixeles dentro del macrobloque. En algunos estándares de codificación de video, tales como la recomendación H.26L de ITU-T, actualmente bajo desarrollo, un macrobloque puede ser dividido en bloques más pequeños, cada bloque más pequeño puede ser provisto con su propia información de movimiento. La información de movimiento toma usualmente la forma de vectores de movimiento [Ax(*,y),Ay(j:,y)] . El par de números ??(?,?) y Ay(x,y) representa los desplazamientos horizontal y vertical de un píxel {x,y) en el cuadro actual In{x,y) con respecto a un píxel en el cuadro de referencia Rn(x,y) . Los vectores de movimiento [Ax(*,;y),Ay(;í,y)] son calculados en el 12
bloque de Estimación de Campo de Movimiento 11 y el conjunto de vectores de movimiento del cuadro actual [??(·),?>>(·)] es referido como el campo de vector de movimiento . Típicamente, la ubicación de un macrobloque en un cuadro de video actual es especificada por la coordenada (x,y) de su esquina superior izquierda. De esta manera, en un esquema de codificación de video en el cual la información de movimiento está asociada con cada macrobloque de un cuadro, cada vector de movimiento describe el desplazamiento horizontal y vertical Ax(x,y) y Ay(x,y) de un píxel que representa la esquina superior izquierda de un macrobloque en el cuadro actual I„(x,y) con respecto a un píxel en la esquina superior izquierda de un bloque sustancialmente correspondiente de los pixeles de predicción en el cuadro de referencia Ra(x,y) (como se muestra en la figura 4b) . La estimación de movimiento es una tarea intensiva desde el punto de vista computacional . Dado un cuadro de referencia Rn(x,y) y, por ejemplo, un macrobloque cuadrado que comprende N x N pixeles en un cuadro actual (como se muestra en la figura 4a) , el objetivo de la estimación de movimiento es encontrar un bloque de N x N pixeles en el cuadro de referencia que iguala las características del macrobloque en la imagen actual de acuerdo con el mismo criterio. Este criterio puede ser, por ejemplo, una suma de las diferencias absolutas (SAD, por sus siglas en inglés) entre los pixeles 13
del macrobloque en el cuadro actual y el bloque de pixeles en el cuadro de referencia con el cual se compara. Este proceso es conocido generalmente como "igualación de bloques" . Se debe observar que, en general, la geometría del bloque a igualarse y aquella en el cuadro de referencia no tiene que ser la misma, ya que los objetos del mundo real pueden someterse a cambios de escala, así como también rotación y . torcedura. Sin embargo, en los estándares internacionales, actuales de codificación de video, tales como aquellos referidos anteriormente, solo se utiliza un modelo de movimiento de translación (véase posteriormente) y de esta manera es suficiente la geometría rectangular fija. Idealmente, a fin de obtener la mejor oportunidad para encontrar una igualación, debe buscarse el total del cuadro de referencia. Sin embargo, esto no es práctico ya que impone una carga computacional muy alta al codificador de video. En cambio, la región de búsqueda es restringida generalmente a una región [-/?,p] alrededor de la ubicación original del macrobloque en el cuadro actual, como se muestra en la figura 4c. A fin de reducir adicionalmente la cantidad de información de movimiento a transmitirse desde el codificador 10 al decodificador 20, el campo de vector de movimiento es codificado en el bloque de Codificación de Campo de —Mo-v-i.mi.en o—12—del- codi-f-icado —10-,—a-—rep-r-esent-rio—co —un- 14
modelo de movimiento. En este proceso, los vectores de movimiento de los segmentos de imagen son re-expresados utilizando ciertas funciones predeterminadas o, en otras palabras, el campo de vector de movimiento es representado con un modelo. Casi todos los modelos de campos de vectores de movimiento actualmente utilizados son modelos de movimiento aditivo, que cumplen con las siguientes fórmulas generales :
(2) ;=0
M-\ &y(x,y) = ? b gi(x,y) :3) ,=0
donde ai y bi son coeficientes de movimiento. Los coeficientes de movimiento son transmitidos al decodificador 20 (corriente de información 2 en las figuras 1 y 2) . Las funciones f¡ y gi son funciones básicas de campo de movimiento. Estas son conocidas tanto para el codificador como el decodificador . Un campo de vector de movimiento aproximado (Ax(x,y), y(x,y)) puede ser construido utilizando los coeficientes y las funciones básicas. Como las funciones básicas son conocidas para (esto es, almacenadas en) tanto el codificador 10 como el decodificador 20, solo los coeficientes de movimiento 15
necesitan ser transmitidos al codificador, reduciendo de esta manera la cantidad de información requerida para representar la información de movimiento del cuadro. El modelo de movimiento más simple es el modelo de movimiento de translación, el cual requiere solo dos coeficientes para describir los vectores de movimiento de cada segmento. Los valores de los vectores de movimiento son proporcionados por:
Ax(x,y) Ay(x,y) (4)
Este es el modelo utilizado en la recomendación H.263 de ITU-T y los estándares MPEG-1, MPEG-2, MPEG-4 de ISO para describir el movimiento de los bloques de 16x16 y 8x8 pixeles. Los sistemas que utilizan un modelo de movimiento de translación realizan típicamente la estimación de movimiento a una resolución de pixeles completos o alguna fracción de la resolución de pixeles completos, por ejemplo a una resolución de mitad o cuarto de pixel. El cuadro de predicción P„{x,y) está construido en el bloque de Predicción con Compensación de Movimiento 13 del codificador 10, y es proporcionado por:
pn{x,y)=Rjx+ ^ y+fy&y)] 16
En el bloque de Codificación de Error de Predicción 14, el cuadro de error de predicción En{x,y) es comprimido típicamente al representarlo como una serie finita (transformada) de algunas funciones bidimensionales . Por ejemplo, se puede utilizar una transformada de coseno discreta bidimensional (DCT, por sus siglas en inglés) . Los coeficientes de transformada son cuantificados y codificados • entrópicamente (por ejemplo Huffman) antes de que sean transmitidos al decodificador (corriente de información 1 en las figuras 1 y 2) . Debido al error introducido mediante la cuantificación, esta operación produce usualmente alguna degradación (pérdida de información) en el cuadro de error de predicción En(x,y) . Para compensar esta degradación, el codificador 10 también comprende un bloque de Decodificación de Error de Predicción 15, donde un cuadro de error de
predicción decodificado En(x,y) es construido utilizando los coeficientes de transformada. Este cuadro de error de predicción decodificado localmente se adiciona al cuadro de predicción P„(x,y) por el adicionador 19 y el cuadro actual,
decodificado, resultante In(x,y) es almacenado en la Memoria de Cuadros 17 para el uso adicional como el siguiente cuadro de referencia Rn+](x,y) . La corriente de información 2 que lleva información acerca de los vectores de movimiento es combinada con la 17
información acerca del error de predicción en el multiplexor 16 y una corriente de información 3 que contiene típicamente al menos esos dos tipos de información es enviada al decodificador 20. Ahora será descrita la operación de un decodificador de video correspondiente 20. La Memoria de Cuadros 24 del decodificador 20 almacena un cuadro de referencia reconstruido previamente Rn(x,y) . El cuadro de predicción P„(x,y) es construido en el bloque de Predicción con Compensación de Movimiento 21 del decodificador 20 de acuerdo con la ecuación 5, utilizando la información recibida del coeficiente de movimiento y los valores de píxel del cuadro de referencia reconstruido previamente Rn(x,y) . Los coeficientes transmitidos de la transformada del cuadro de error de predicción En(x,y) se utilizan en el bloque de Decodificación de Errores de Predicción 22 para construir el cuadro de error de predicción
decodificado En(x^y) . Los pixeles del cuadro actual,
decodificado In(x,y) entonces son reconstruidos al adicionar el cuadro de predicción P„(x,y) y el cuadro de error de predicción
decodificado En(x,y) :
7„(*,y) = P„(x,y) + ¾,(Xy) = + ??(?,y),y + ¾/(*,y)]+ E„(x,y).
18
Este cuadro actual, decodificado puede ser almacenado en la Memoria de Cuadros 24 como el siguiente cuadro de referencia Rn+1(x,y) . En la descripción de la codificación y decodificación con compensación de movimiento de video digital presentada anteriormente, el vector de movimiento que describe el movimiento de un macrobloque en el cuadro actual con respecto al cuadro de referencia Rn(x,y) puede apuntar a cualquiera de los pixeles en el cuadro de referencia. Esto significa que el movimiento entre los cuadros de una secuencia de video digital solo puede ser representado a una resolución determinada por los pixeles de la imagen en el cuadro (comúnmente llamada resolución de pixeles completos) . Sin embargo, el movimiento real tiene una precisión arbitraria y, de esta manera, el sistema descrito anteriormente solo puede proporcionar un modelado aproximado del movimiento entre cuadros sucesivos de una secuencia de video digital. Típicamente, el modelado del movimiento entre los cuadros de video con una resolución de pixeles completos no es suficientemente preciso para permitir una minimización eficiente de la información de error de predicción (PE) asociada con cada macrobloque o cuadro. Por lo tanto, para hacer posible un modelado más preciso del movimiento real y para ayudar a reducir la cantidad de información de PE que debe ser transmitida del codificador al decodificadór\ muchos 19
estándares de codificación de video permiten que los vectores de movimiento apunten "entre" pixeles de la imagen. En otras palabras, los vectores de movimiento pueden tener una resolución de "sub-píxel" . El permitir que los vectores de movimiento tengan resolución de sub-píxel se agrega a la complejidad de las operaciones de codificación y decodificación que deben realizarse, de modo que aún es ventajoso limitar el grado de resolución espacial que un vector de movimiento puede tener. De esta manera, los estándares de codificación de video, tales como aquellos mencionados previamente, solo permiten típicamente que los vectores de movimiento tengan una resolución de pixeles completos, mitades de pixeles o cuartos de pixeles. La estimación de movimiento con una resolución de sub-píxel puede ser implementada como un proceso de dos etapas, como se ilustra en una forma ejemplar en la figura 5, para un esquema de codificación de video genérico, en el cual los vectores de movimiento pueden tener una resolución de pixeles completos o mitades de pixeles. En el primer paso, un vector de movimiento que tiene una resolución de pixeles completos se determina utilizando un esquema de estimación de movimiento apropiado, tal como el proceso de igualación de bloques descrito anteriormente. El vector de movimiento resultante, que tiene una resolución de pixeles completos, se muestra e ~la~figura b .
20
En la segunda etapa, el vector de movimiento determinado en la primera etapa es refinado para obtener la resolución de mitades de pixeles deseada. En el ejemplo ilustrado en la figura 5, esto se hace al formar ocho nuevos bloques de búsqueda de 16 x 16 pixeles, la ubicación de la esquina superior izquierda de cada bloque es marcada con una X en la figura 5. Estas ubicaciones son representadas como [áx + m/2, ?? + n/2] , donde y n pueden tomar los valores -1, 0 y +1, pero no pueden ser cero al mismo tiempo. Como solo se conocen los valores de píxel de los pixeles de la imagen original, los valores (por ejemplo, valores de luminancia y/o crominancia) de los sub-pixeles que residen en las ubicaciones de mitades de pixeles son estimados para cada uno de los ocho nuevos bloques de búsqueda, utilizando alguna forma de esquema de interpolación. Habiendo interpolado los valores de los sub-pixeles en la resolución de mitades de pixeles, cada uno de los ocho bloques de búsqueda es comparado con el macrobloque cuyo vector de movimiento está siendo buscado. Como en el proceso de igualación de bloques realizado a fin de determinar el vector de movimiento con la resolución de pixeles completos, el macrobloque se compara con cada uno de los ocho bloques de búsqueda de acuerdo con algunos criterios, por ejemplo SAD. Como resultado de las comparaciones, se obtendrá generalmente un valor SAD mínimo. Dependiendo de la naturaleza del_ 21
movimiento en la secuencia de video, este valor mínimo puede corresponder a la ubicación especificada por el vector de movimiento original (que tiene la resolución de pixeles completos) o puede corresponder a una ubicación que tiene una resolución de mitades de pixeles. De esta manera, es posible determinar si un vector de movimiento debe apuntar a una ubicación de pixeles completos o sub-pixeles, y si es apropiada la resolución de sub-píxel, para determinar el vector de movimiento de resolución de sub-píxel correcto. En la práctica, la estimación de un valor de sub-pixeles en el cuadro de referencia se realiza mediante la interpolación del valor de sub-píxel a partir de los valores de pixeles circundantes. En general, la interpolación de un valor de sub-píxel F(x,y) situado en una ubicación no entera (x, y) = (?+??, rn+??) , se puede formular como una operación bidimensional, representada matemáticamente como:
F(*, )= ? ?f(k + K,l + L)F(n+ k,m +l) (7) k=-Kl=-L
donde f(k,l) son coeficientes de filtro y n y m se obtienen al truncar x y y, respectivamente, a valores enteros. Típicamente, los coeficientes de filtro son dependientes de los valores x e y los filtros de interpolación son llamados usualmente "filtros separables", en los cuales el valor de 22
sub-pixel del caso F(x,y) puede ser calculado como sigue:
F(x,y)= ? f(k+K)?f(l + K)F(n + k,m + l) (8) *"* '°~K Los vectores de movimiento son calculados en el codificador. Una vez que los coeficientes de movimiento correspondientes son transmitidos al decodificador, es un t.ema directo interpolar los sub-pixeles requeridos utilizando un método de interpolación idéntico a aquel utilizado en el codificador. De esta manera, un cuadro que sigue un cuadro de referencia en la Memoria de cuadro 24, puede ser reconstruido a partir del cuadro de referencia y los vectores de movimiento transmitidos. Convencionalmente, los filtros de interpolación utilizados en los codificadores y decodificadores de video emplean valores de coeficiente de filtro fijos y el mismo filtro (es decir, el mismo tipo de filtro con los mismos valores de coeficiente de filtro) se utiliza para todos los cuadros de una secuencia de video que es codificada. El mismo filtro se utiliza además para todas las secuencias de video, sin importar su naturaleza y como fueron adquiridas (capturadas) . Wedi ("Adaptive Interpolation Filter for Motion Compensated Hybrid Video Coding" Picture Coding Symposium (PCS 2001), Seúl Corea, Abril de 2001), propone el uso de f-ürtxos—de~rrrterpoia-c±ón—con—va-roxes-^de—cOex"Írre-ni:"e—de^frlrt o^ 23
adaptables, a fin de compensar ciertas deficiencias en el proceso de codificación de video. En particular, Wedi describe como distorsionar por repliegue del espectro en el proceso de adquisición de imágenes, la resolución finita de los vectores de movimiento permitidos y la validez limitada de modelo de movimiento de translación introducen errores de predicción adicionales. La distorsión por repliegue del ' éspecto en una imagen de video surge debido al uso de filtros de paso bajo no ideales (y el no cumplimiento consecuente del teorema de muestreo de Nyquist) en el proceso de adquisición de imágenes. La distorsión por repliegue del espectro altera la predicción con compensación de movimiento dentro de la secuencia de video y da origen a un componente de error de predicción adicional. La precisión finita de los vectores de movimiento permitidos (por ejemplo píxel completo, una mitad de píxel o un cuarto de píxel) y la capacidad del modelo de movimiento de translación para representar solo el movimiento de translación ya sea horizontal como vertical entre los cuadros de video sucesivos también da origen a contribuciones de error de predicción adicionales. Wedi además propone que un mejoramiento en la eficacia de codificación se puede lograr al adaptar los valores de coeficiente de filtro de un filtro de interpolación para compensar los errores de predicción adicionales introducidos por la distorsión por repliegue del espectro, la precisión de vectores de 24
movimiento finitos y la validez limitada del modelo de movimiento de translación. Más generalmente, se debe apreciar que puesto que la naturaleza y las características del movimiento varían en una secuencia de video, el filtro de interpolación óptima varía como una función del tiempo y la ubicación de la imagen. Wedi presenta un ejemplo en el cual un filtro de interpolación con valores de coeficiente de filtro dinámicamente adaptables es integrado en el codificador-decodificador de video H.26L, más específicamente, la versión de ese codificador-decodificador definido por el Modelo de Prueba (TML) 4. TML-4 de H.26L utilizó una resolución de vector de movimiento de un cuatro de píxel y un filtro de interpolación tipo Wiener con seis coeficientes de filtro simétricos (filtro de 6 derivaciones) . El ejemplo presentado en Wedi propone adaptar los coeficientes de filtro del filtro de interpolación en una base cuadro por cuadro, codificar diferencialmente los coeficientes de filtro y transmitirlos al decodificador como información secundaria para los datos de video principales. Un propósito basado en este planteamiento se hizo para incluir el uso de los filtros de interpolación con valores de coeficiente de filtro dinámicamente adaptables en el Modelo de Prueba 8 del codificador-decodificador de video H.26L. Esto se presenta en el Sector de Estandarización de Telecomunicaciones-ITU titulado: "Adaptive Interpolation 25
Filter for H.26L" Study Group 16, Question 6, Video Coding Experts Group (VCEG) , documento VCEG-N28, Septiembre de 2001 y "More Results on Adaptive Interpolation Filter for H.26L" Study Group 16, Question 6, Video Coding Expert Group (VCEG), documento VCEG-016rl, Noviembre de 2001. El uso de filtros de interpolación dinámicamente adaptables da origen a un problema importante con relación a ' l'a eficacia de codificación de la corriente de datos de video codificado y también tiene un efecto sobre la resiliencia de errores de los datos de video codificado. El problema de la eficacia de codificación puede ser entendido de una manera directa. En un sistema de codificación de video que emplea un filtro de interpolación que tiene valores de coeficiente de filtro fijos, no existe la necesidad de incluir alguna información que se refiera a los valores de coeficiente de filtro en la corriente de bitios de los datos de video codificado. Los valores de coeficiente de filtro pueden ser registrados simplemente en el codificador de video y el decodificador de video. En otras palabras, en un sistema de codificación de video implementado de acuerdo con un estándar de codificación de video particular que emplea filtros de interpolación fijos, los valores de coeficiente son pre- programados en tanto el codificador como el decodificador de acuerdo con las especificaciones del estándar. Sin embargo, si se permiten coeficientes de filtro dinámicamente 26
adaptables, se vuelve necesario transmitir información con relación a los valores de los coeficientes. Como los coeficientes de filtro son actualizados periódicamente (por ejemplo en una base de cuadro por cuadro) , esto se adiciona necesariamente a la cantidad de información a ser enviada desde el codificador de video al decodificador y tiene un efecto deletéreo sobre la eficacia de codificación. En las áplicaciones de codificación de video a una velocidad de bitios baja, cualquier incremento en la cantidad de información a ser transmitida es indeseable generalmente. De esta manera, a fin de modelar y compensar óptimamente el movimiento, es necesaria una representación eficiente de los filtros de interpolación dinámica. Con respecto a la resiliencia de errores, se debe apreciar que la manera en la cual la información acerca de los coeficientes de un filtro de interpolación dinámicamente variable es transmitida del codificador al decodificador puede afectar la susceptibilidad de los datos de video a los errores de transmisión. Más específicamente, en un sistema de codificación de video que emplea filtros de interpolación dinámicamente adaptables, la reconstrucción correcta de un cuadro de una secuencia de video en un decodificador es segura en la recepción correcta y la decodificación de los valores de coeficiente de filtro. Si la información que se refiere a los valores de coeficiente está sujeta al error 27
durante su transmisión del codificador al decodificador, es probable la perturbación de los datos de video reconstruidos. Existen tres maneras de codificar los coeficientes de filtro conocidas en la técnica anterior. La primera es codificar entrópicamente los valores de coeficiente de filtro por separado. La segunda es codificar entrópicamente los valores de coeficiente de filtro diferencialmente con respecto a los coeficientes de filtro de los filtros ya decodificados (como se propone en Wedi) y la tercera es definir un conjunto de filtros y codificar el índice del filtro seleccionado. Todas las soluciones de la técnica anterior que se podrían utilizar para codificar los coeficientes de filtro de interpolación, como se menciona anteriormente, tienen problemas asociados con éstas en diferentes escenarios de uso. El primer método, en el cual los coeficientes de filtro de interpolación son codificados por separado ofrece un desempeño de codificación inferior, puesto que no utiliza ninguna información a priori (es decir, información acerca de los valores de coeficiente de filtro de interpolación previamente codificados) . Por lo tanto, este planteamiento requiere que una cantidad excesivamente grande de información sea adicionada a la corriente de bitios de video codificado a fin de describir los valores de coeficiente de filtro de interpolación. La codificación diferencial de los coeficientes, como se propone en Wedi, es eficiente, pero no 28
se puede utilizar en un ambiente con errores de transmisión posibles, puesto que los coeficientes de filtro dependen de la decodificación correcta de los primeros coeficientes de filtro. Como se describiera previamente, si la corriente de bitios de video codificado está sujeta al error durante su transmisión del codificador al decodificador, es probable que ocurra una perturbación de los datos de video reconstruidos en el decodificador . La tercera solución de la técnica anterior con un conjunto predefinido de filtros proporciona solo alternativas limitadas y, de esta manera, degrada el desempeño de codificación. En otras palabras, esta opción no puede lograr las ventajas completas del uso de filtros de interpolación con valores de coeficiente de filtro dinámicamente adaptables, como se expone en Wedi . De esta manera, se debe apreciar que existe la necesidad por un método para codificar los valores de coeficiente de los filtros de interpolación adaptables que sea tanto eficiente como que no conduzca al deterioro de la resiliencia de errores de la corriente de bitios de video codificado. Sumario de la Invención La presente invención combina la buena eficacia de codificación de la codificación diferencial con características de resiliencia de errores que permiten que se utilice en todos los ambientes. Por lo tanto, es 29
particularmente adecuada para la implementación en un sistema de codificación de video para el uso en ambientes propensos a error, por ejemplo donde una corriente de bitios de video codificado debe ser transmitida a través de un enlace de radiocomunicación sujeto a interferencia. De esta manera, de acuerdo con el primer aspecto de la presente invención, se proporciona un método para codificar imágenes en una secuencia de video digital para proporcionar datos de video codificado, en donde la secuencia de video digital comprende una secuencia de cuadros de video, cada cuadro tiene una pluralidad de valores de píxel y en donde se utiliza un filtro de interpolación que tiene una pluralidad de coeficientes representados por una pluralidad de valores de coeficiente para la reconstrucción de los valores de píxel en un cuadro de la secuencia de video digital a partir de los datos de video codificado. El método está caracterizado por codificar los valores de coeficiente del filtro de interpolación diferencialmente con respecto al filtro base, predefinido para formar un conjunto de valores de diferencia, y adaptar el conjunto de valores de diferencia en los datos de video codificado de manera que la reconstrucción de los valores de píxel esté basada en el conjunto de valores de diferencia . De manera ventajosa, los datos de video codificado ncluyen valores codificados que son indicativos del conjunto 30
de valores de diferencia y el conjunto de valores de diferencia es codificado entrópicamenté antes de ser transmitidos del codificador de video al decodificador de video . De manera ventajosa, el filtro base, predefinido tiene una pluralidad de coeficientes que tienen valores estadísticamente similares a los valores de coeficiente del filtro de interpolación. De manera ventajosa, los coeficientes del filtro de interpolación se seleccionan para la interpolación de los valores de píxel en un segmento de imagen seleccionado. De manera ventajosa, el filtro base, predefinido tiene valores de coeficiente fijos. De manera ventajosa, el filtro base, predefinido tiene una pluralidad de coeficientes adaptados a las estadísticas de la secuencia de video. Preferiblemente, el filtro de interpolación es simétrico, de tal manera que solo la mitad de los coeficientes de filtro son codificados. De manera ventajosa, los valores de coeficiente del filtro de interpolación son codificados en un cierto orden, de un primer valor de coeficiente a un último valor de coeficiente y el cierto orden es diferente del orden espacial de los coeficientes.
31
coeficiente del filtro de interpolación es fija. De manera ventajosa, el filtro base, predefinido tiene una pluralidad de valores de coeficiente y un valor constante se adiciona a los valores de coeficiente del filtro base, predefinido para reducir la amplitud de diferencias entre los valores de coeficiente del filtro de interpolación y los valores de coeficiente del filtro base, predefinido. De acuerdo con el segundo aspecto de la presente invención, se proporciona un codificador de video, el cual comprende: un medio para codificar imágenes en una secuencia de video digital que tiene una secuencia de cuadros de video para proporcionar datos de video codificado que son indicativos de la secuencia de video, cada cuadro de la secuencia de video comprende una pluralidad de valores de píxel, y un medio para definir un filtro de interpolación para reconstruir los valores de píxel en un cuadro de la secuencia de video digital en un proceso de decodificación, en donde el filtro de interpolación tiene una variedad de coeficientes representada por una pluralidad de valores de coeficiente. El codificador de video está caracterizado por un medio, responsivo al filtro de interpolación, para calcular una diferencia entre los valores de coeficiente del filtro de interpolación y un filtro base, predefinido para 32
proporcionar un conjunto de valores de diferencia, y un medio para adaptar el conjunto de valores de diferencia en los datos de video codificado, de manera que la reconstrucción de los valores de píxel en el proceso de decodificación esté basada en el conjunto de valores de diferencia . De manera ventajosa, el codificador comprende un medio para codificar atró icamente el conjunto de valores de diferencia antes de adaptar el conjunto de valores de diferencia en los datos de video codificado. De acuerdo con el tercer aspecto de la presente invención, se proporciona un método para decodificar datos de video que son indicativos de una secuencia de video digital que comprende una secuencia de cuadros de video, cada cuadro de la secuencia de video comprende una pluralidad de valores de píxel, en donde un filtro de interpolación que tiene una pluralidad de coeficientes representados por una pluralidad de valores de coeficiente se utiliza para reconstruir los valores de píxel en un cuadro de la secuencia de video digital. El método está caracterizado por recuperar de los datos de video de un conjunto de valores de diferencia, el conjunto de valores de diferencia es indicativo de una diferencia entre los valores de coeficiente del filtro de interpolación y un filtro base, predefinido;
33
construir un filtro adicional basado en el conjunto de valores de diferencia y el filtro base, predefinido; y reconstruir los valores de píxel basados en el filtro adicional . De manera ventajosa, el filtro base, predefinido tiene una pluralidad de coeficientes representados por una pluralidad de valores de coeficiente y la construcción del filtro adicional se lleva a cabo al sumar el conjunto de valores de diferencia con los valores de coeficiente del filtro base, predefinido. De manera ventajosa, el conjunto de valores de diferencia es recuperado de los datos de video mediante la decodificación entrópica. De acuerdo con un cuarto aspecto de la presente invención, se proporciona un decodificador de video, el cual comprende un medio para recibir datos de video en una corriente de bitios, los datos de video recibidos son indicativos de una secuencia de video digital que comprende una secuencia de cuadros de video, cada cuadro de la secuencia de video comprende una pluralidad de valores de píxel. El decodificador de video está caracterizado por: un medio para recuperar un conjunto de valores de diferencia de la corriente de bitios un medio para reconstruir un filtro de interpolación basado en un filtro base, predefinido y el conjunto de 34
valores de diferencia; y un medio para reconstruir los valores de píxel en un cuadro de la secuencia de video basado en el filtro de interpolación y los datos de video recibidos. De manera ventajosa, el decodificador de video también tiene un medio para sumar el conjunto de valores de diferencia con los valores de coeficiente adicionales del filtro base, predefinido para construir el filtro de interpolación y un medio para decodificar entrópicamente el conjunto de valores de diferencia de la corriente de bitios.
De acuerdo con el quinto aspecto de la presente invención, que es proporcionado por un sistema de codificación de video, el cual comprende: un codificador para codificar imágenes en una secuencia de video digital que tiene una secuencia de cuadros de video para proporcionar datos de video codificado en una corriente de bitios que es indicativa de la secuencia de video, cada cuadro de la secuencia de video comprende una pluralidad de valores de píxel, el codificador tiene un medio para definir un filtro de interpolación para reconstruir los valores de píxel en un cuadro de la secuencia de video digital en un proceso de decodificación, en donde el filtro de interpolación tiene una pluralidad de coeficientes de filtro representados por una pluralidad de valores de coeficiente, y 35
un decodificador para recibir los datos de video codificado en la corriente de bitios para reconstruir los valores de píxel en un cuadro de la secuencia de video en el proceso de decodificación. El sistema de codificación de video está caracterizado porque el codificador además comprende: un medio para calcular una diferencia entre el filtro de interpolación y un filtro base, predefinido para proporcionar un conjunto de valores de diferencia, y un medio para adaptar el conjunto de valores de diferencia en la corriente de bitios ; y porque la decodificación comprende: un medio para recuperar de la corriente de bitios el conjunto de valores de diferencia; y un medio para construir un filtro adicional basado en el filtro base, predefinido y el conjunto recuperado de valores de diferencia de manera que la reconstrucción de los valores de píxel en el proceso de decodificación esté basada en el filtro adicional. Estas y otras características de la presente invención llegarán a ser aparentes con referencia a la siguiente descripción en conjunto con los dibujos que la acompañan. Sin embargo, se debe entender que los dibujos están diseñados únicamente para los propósitos de ilustración y no como una definición de los límites de la invención.
36
Breve Descripción de las Figuras La figura 1 es un diagrama de bloques que ilustra un codificador de video genérico de acuerdo con la técnica anterior . La figura 2 es un diagrama de bloques que ilustra un decodificador de video genérico de acuerdo con la técnica anterior. La figura 3 es una representación esquemática que ilustra los tipos de cuadros utilizados en la codificación de video. La figura 4a es una representación esquemática que ilustra un macrobloque en un cuadro actual . La figura 4b es una representación esquemática que ilustra un cuadro de referencia para la igualación de bloques. La figura 4c es una representación esquemática que ilustra una región de búsqueda alrededor de la ubicación original del macrobloque en el cuadro actual . La figura 5 es una representación esquemática que ilustra el proceso para la estimación del movimiento para la resolución de sub-píxel, de acuerdo con la técnica anterior.
La figura 6a es una representación esquemática que ilustra un filtro de interpolación óptima. La figura 6b es una representación esquemática que lustra la interpolación óptima que es descompuesta en 37
filtro base y los coeficientes de diferencia. La figura 6c es una representación esquemática que ilustra los coeficientes de diferencia a codificarse y que son enviados al decodificador . La figura 7 es un diagrama de bloques que ilustra un dispositivo terminal que comprende equipo de codificación y decodificación de video capaz de llevar a cabo la presente invención. La figura 8a es un diagrama de bloques que ilustra un codificador de video de acuerdo con una modalidad preferida de la presente invención. La figura 8b es un diagrama de bloques que ilustra un codificador de video de acuerdo con otra modalidad de la presente invención. La figura 8c es un diagrama de bloques que ilustra un codificador de video de acuerdo con aún otra modalidad de la presente invención. La figura 9a es un diagrama de bloques que ilustra un decodificador de video de acuerdo con una modalidad preferida de la presente invención. La figura 9b es un diagrama de bloques que ilustra un decodificador de video de acuerdo con otra modalidad de la presente invención. La figura 9c es un diagrama de bloques que ilustra un decodificador de video de acuerdo con aún una modalidad de la 38
presente invención. Mejor Modo para llevar a cabo la Invención El codificador, de acuerdo con la presente invención, codifica coeficientes de filtro diferencialmente con respecto a los coeficientes de filtro base, predefinido. Las figuras 6a - 6b ilustran el método de acuerdo con la presente invención. Las gráficas de barras presentadas en la figura 6a s'on representativas de los valores de coeficiente del filtro de interpolación, cada barra corresponde a uno de los coeficientes de filtro. La altura de una barra representa el valor de coeficiente respectivo, las barras que se extienden arriba del eje horizontal representan los valores de coeficiente positivos, las barras que se extienden abajo del eje horizontal representan los valores de coeficiente negativos. Con referencia a la figura 6a y la figura 6b, la gráfica de barras 110 representa el filtro que el codificador detecta que es el más adecuado para la interpolación de movimiento de un segmento de imagen seleccionado, mientras que la gráfica de barras 140 representa el filtro base. En el ejemplo mostrado en la figura 6a, el filtro es un filtro simétrico de 6 derivaciones que tiene 6 coeficientes de filtro. En lugar de enviar los coeficientes de filtro como tales, solo se codifican y se envían las diferencias 130 entre el filtro seleccionado 110 y el filtro base 140. Los coeficientes enviados 120 se muestran en la figura 6c.
39
Con la presente invención, se obtiene una ganancia de codificación puesto que las diferencias de amplitud pequeñas pueden ser codificadas eficientemente con un codificador entrópico. Cuando estos valores de diferencia son incluidos en una corriente de bitios de video codificado producida por un codificador de video y la corriente de bitios de video es transmitida del codificador a un decodificador correspondiente, los coeficientes del filtro de interpolación pueden ser reconstruidos en el decodificador mediante la recuperación de los valores de diferencia de la corriente de bitios codificada y la adición de éstos a los valores de coeficiente respectivos del filtro base, predefinido que está almacenado en el decodificador . Se debe observar que el filtro base también puede estar adaptado a las estadísticas de la secuencia de video y los coeficientes de filtro recibidos para mejorar adicionalmente la eficacia de codificación. También es posible que el filtro base sea predefinido para el codificador-decodificador completo. En otras palabras, el mismo filtro base, predefinido se utiliza para todas las secuencias de video que son codificadas, sin importar sus características o la manera en la cual éstas son adquiridas. Alternativamente, el filtro base está adaptado a los datos de video, es decir, se utilizan diferentes filtros base para diferentes secuencias de video o el filtro base puede estar 40
adaptado durante la codificación de una secuencia de video particular de acuerdo con ciertas reglas predefinidas. Si el filtro es simétrico, como se muestra en las figuras 6a a 6c, solo la mitad de los coeficientes del filtro necesitan ser codificados. Los otros pueden obtenerse mediante el copiado. En el ejemplo presentado en la figura 6c, la cantidad de información necesaria para representar los alores de coeficiente del filtro de interpolación adaptable en la corriente de bitios de video codificado puede ser reducida adicionalmente al darse cuenta que los coeficientes de filtro 4°, 5o y 6o son idénticos respectivamente a los coeficientes de filtro 3o, 2o y Io. De esta manera, en este caso, los seis coeficientes del filtro de interpolación pueden ser codificados realmente por tres valores, el primero representativo de la diferencia entre el primer coeficiente de filtro de interpolación y el primer coeficiente del filtro base, predefinido, el segundo representativo de la diferencia entre el segundo coeficiente de filtro de interpolación y el segundo coeficiente del filtro base, predefinido y el tercero representativo de la diferencia entre el tercer coeficiente de filtro de interpolación y el tercer coeficiente del filtro base, predefinido. Ahora solo es necesario incluir estos tres valores de diferencia en la corriente de bitios de video codificado transmitida del codificador al decodificador, ya que el decodificador puede obtener los tres coeficientes de 41
filtro de interpolación restantes mediante el copiado apropiado de los primeros tres valores de coeficiente de filtro reconstruidos. Se puede adoptar un planteamiento similar si el filtro base y el filtro de interpolación tienen un número non preferiblemente que un número par de coeficientes, pero, no obstante, son simétricos. En este caso, se debe apreciar que el número de valores de diferencia a' ser codificados es {n/2)+l, donde n es el número de coeficientes en el filtro base/filtro de interpolación. El método de acuerdo con la presente invención también se puede combinar con otros métodos de codificación de coeficiente. Por ejemplo, un conjunto de filtros más frecuentemente utilizados se puede definir y codificar por sus índices. Los filtros -utilizados menos frecuentemente pueden ser codificados con la invención descrita permitiendo una variación máxima para los filtros disponibles y con lo cual superando la desventaja previamente mencionada del tercer método de la técnica anterior para codificar los valores de coeficiente. El orden de codificación de los coeficientes de filtro no tiene que seguir el orden espacial. Por ejemplo, los valores de diferencia que son representativos de los valores de coeficiente del filtro de interpolación no necesitan ser incluidos en la corriente de bitios de video codificado en el mismo orden como los coeficientes se encuentran en el filtro.
42
En este caso, se debe definir una regla predefinida que especifica el orden en el cual los valores de diferencia aparecen en la corriente de bitios y debe ser conocida para tanto el codificador como el decodificador . Es posible que el filtro base esté adaptado a los coeficientes de filtro recibidos del mismo filtro. Por ejemplo, si el primer coeficiente de filtro transmitido es ' mas grande que el coeficiente de filtro base, el segundo coeficiente de filtro base puede ser disminuido. Esto es especialmente cierto si se conoce la suma en los coeficientes de filtro. Típicamente, la suma de los coeficientes de filtro es fija. En este caso, no existe la necesidad de codificar el último coeficiente de filtro, pero puede ser calculado al restar la suma de los primeros coeficientes de la suma total. Si la suma de los coeficientes de filtro no está fija, se puede adicionar una constante o constantes transmitidas por separado a los coeficientes de filtro base o la salida de filtro para reducir las amplitudes de las diferencias dé coeficiente. La figura 7 presenta un dispositivo terminal que comprende un equipo de codificación y decodificación de video que puede estar adaptado para operar de acuerdo con la presente invención. Más precisamente, la figura 7 ilustra una terminal multimedial 60 implementada de acuerdo con la 43
recomendación H.324 de ITU-T. La terminal puede ser considerada como un dispositivo transceptor multimedial. Incluye elementos que capturan, codifican y multiplexan corrientes de datos multimediales para la transmisión por medio de una red de comunicación, así como también elementos que reciben, desmultiplexan, decodifican y exhiben el contenido multimedial recibido. La recomendación H.324 de I'TU-T define la operación total de la terminal y se refiere a otras recomendaciones que gobiernan la operación de sus diversas partes constituyentes. Esta clase de terminal multimedial se puede utilizar en aplicaciones en tiempo real, tales como la videotelefonía de conversación o en aplicaciones que no son en tiempo real, tales como la recuperación o reproducción fluida de videos, por ejemplo de un servidor de contenido multimedial en la Internet . En el contexto de la presente invención, se debe apreciar que la terminal H.324 mostrada en la figura 7 solo es una de una variedad de implementaciones de terminales multimediales, alternativas que son adecuadas para la aplicación del método inventivo. También se debe observar que existe una variedad de alternativas que se relacionan con la ubicación e implementación del equipo terminal . Como se ilustra en la figura 7, la terminal multimedial puede estar localizada en el equipo de comunicación conectado a una red telefónica de línea fija, tal como la Red Telefónica 44
Conmutada, Pública (PSTN, por sus siglas en inglés) análoga. En este caso, la terminal multimedial está equipada con un modem 71, manejable con las recomendaciones V.8, V.34 y opcionalmente V.8bis de ITU-T. Alternativamente, la terminal multimedial puede estar conectada a un modem externo. El modem hace posible la conversión de los datos digitales, multiplexados y las señales de control producidas por la terminal multimedial en una forma análoga que es adecuada para la transmisión a través de la PSTN. Además, hace posible que la terminal multimedial reciba datos y controle señales en forma análoga de la PSTN y las convierta en una corriente de datos digitales que puede ser multiplexada y procesada de manera apropiada por la terminal . Una terminal multimedial H.324 también puede ser implementada de tal manera que pueda ser conectada directamente a una red de línea fija, digital, tal como la Red Digital de Servicios Integrados (ISDN, por sus siglas en inglés) . En este caso, el modem 71 es reemplazado por una interfaz de red del usuario de ISDN. En la figura 7, esta interfaz de red del usuario de ISDN es representada por el boque alternativo 72. Las terminales multimediales H.324 también pueden estar adaptadas para el uso en aplicaciones de comunicación móvil. Si se utiliza con un enlace de comunicación inalámbrico, el modem 71 puede ser reemplazado por una 45
interfaz inalámbrica, apropiada, como es representado por el bloque alternativo 73 en la figura 7. Por ejemplo, una terminal multimedial H.324/M puede incluir un radiotransceptor que hace posible la conexión a la red de telefonía móvil GSM de 2a generación, actual o el Sistema de Telefonía Móvil Universal (UMTS, por sus siglas en inglés) de 3a generación, propuesto. Se debe observar que en las terminales multimediales diseñadas para la comunicación de dos vías, esto es para la transmisión y recepción de datos de video, es ventajoso proporcionar tanto un codificador de video como un decodificador de video implementados de acuerdo con la presente invención. Este par de codificador y decodificador es implementado recuentemente como una unidad funcional, combinada, individual, referida como un 1 codificador-decodificador ' . Una terminal multimedial H.324 típica ahora será descrita en detalle adicional con referencia a la figura 7. La terminal multimedial 60 incluye una variedad de elementos referidos como "equipo terminal" . Este equipo terminal incluye dispositivos de video, audio y telemáticos, representados genéricamente por los números de referencia 61, 62 y 63, respectivamente. El equipo de video 61 puede incluir, por ejemplo, una cámara de video para capturar imágenes de video, un monitor para exhibir el contenido de 46
video recibido y un equipo de procesamiento de video opcional. El equipo de audio 62 incluye típicamente un micrófono, por ejemplo para capturar mensajes hablados, y un altavoz para reproducir el contenido de audio recibido. El equipo de audio también puede incluir unidades de procesamiento de audio adicionales. El equipo telemático 63, puede incluir una terminal de datos, teclado, tablero electrónico o un transceptor de imágenes fijas, tal como una unidad de facsímil . El equipo de video 61 está acoplado a un codificador-decodificador de video 65. El codificador-decodificador de video 65 comprende un codificador de video y un decodificador de video correspondiente, ambos implementados de acuerdo con la invención. Este codificador y decodificador serán descritos a continuación. El codificador-decodificador de video 65 es responsable de codificar los datos de video capturados en una forma apropiada para la transmisión adicional a través de un enlace de comunicación y decodificar el contenido de video comprimido que es recibido de la red de comunicación. En el ejemplo ilustrado en la figura 7, se asume que el codificador-decodificador de video está implementado de tal manera que incluya el uso de filtros de interpolación dinámicamente adaptables. Además, se asume que la sección del codificador del codificador-decodificador de video está adaptada para codificar y transmitir los valores 47
de coeficiente del filtro de interpolación a un decodificador correspondiente de acuerdo con una modalidad del método inventivo, como se describiera previamente. De manera similar, la sección del decodificador del codificador-decodificador de video está adaptada para recibir y decodificar los valores de coeficiente de filtro codificados de acuerdo con la misma modalidad del método inventivo. El equipo de audio de la terminal está acoplado a un codificador-decodificador de audio, representado en la figura 7 por el número de referencia 66. Al igual que el codificador-decodificador de video, el codificador-decodificador de audio comprende un par de codificador/decodificador . Este convierte los datos de audio capturados por el equipo de audio de la terminal en una forma adecuada para la transmisión a través del enlace de comunicación y transforma nuevamente los datos de audio codificados que son recibidos de la red en una forma adecuada para la reproducción, por ejemplo en el altavoz de la terminal. La salida del codificador-decodificador de audio se pasa al bloque de retraso 67. Este compensa los retrasos introducidos por el proceso de codificación de video y de esta manera asegura la sincronización del contenido de audio y video. El bloque de control del sistema 64 de la terminal multimedial controla la señalización del extremo a la red 48
utilizando un protocolo de control apropiado (bloque de señalización 68) para establecer un modo común de operación entre una terminal de transmisión y una terminal de recepción. El bloque de señalización 68 intercambia información acerca de las capacidades de codificación y decodificación de las terminales de transmisión y recepción y se puede utilizar para hacer posible los diversos modos de codificación del codificador de video. El bloque de control del sistema 64 también controla el uso de la criptografía de datos. La información con respecto al tipo de criptografía a utilizarse en la transmisión de datos se pasa del bloque de criptografía 69 a la unidad de multiplexor/desmultiplexor (unidad MUX/DMUX) 70. Durante la transmisión de datos de la terminal multimedial, la unidad MUX/DMUX 70 combina las corrientes de video y audio codificadas y sincronizadas con la entrada de datos del equipo telemático 63 y los datos de control posibles, para formar una corriente de bitios individual. La información concerniente al tipo de criptografía de datos (si existe) para aplicarse a la corriente de bitios, proporcionada por el bloque de criptografía 69, se utiliza para seleccionar un modo de criptografía. Por consiguiente, cuando se está recibiendo una corriente de bitios multimedial mutiplexada y posiblemente criptografiada, la unidad MUX/DMUX 70 es responsable de descriptografiar la corriente de bitios, 49
dividirla en sus componentes de medios constituyentes y pasar esos componentes al codificador-decodificador apropiado y/o equipo terminal para la codificación y reproducción. La figura 8a es un diagrama de bloques esquemático de un codificador de video 700 implementado de acuerdo con una modalidad preferida de la invención. La estructura del codificador de video mostrada en la figura 8a es en muchos a'spectos similar a aquella del codificador de video de la técnica anterior ilustrado en la figura 1, con modificaciones apropiadas a aquellas partes del codificador que realizan operaciones asociadas con la interpolación de valores de sub-píxel y la formación de la corriente de bitios de video codificado. La mayoría de elementos del codificador de video 700 funcionan y operan de manera similar a los elementos correspondientes del codificador de video de la técnica anterior, descrito previamente 10 (véase figura 1) . La descripción de estos elementos es omitida por razones de brevedad. En particular, el codificador de video 700 comprende un bloque de Estimación de Campo de Movimiento 711, un bloque de Codificación de Campo de Movimiento 712, un bloque de Predicción con Compensación de Movimiento 713, un bloque de Codificación de Error de Predicción 714, un bloque de Decodificación de Error de Predicción 715, un bloque de Multiplexión 716, una Memoria de Cuadros 717 y un adicionador 719. Como se muestra en la figura 8a, el bloque de Estimación 50
de Campo de Movimiento 711 también incluye un bloque de Cálculo de Coeficientes Diferenciales 710, el cual se utiliza para calcular la diferencia entre un filtro seleccionado y un filtro base 709. La operación del codificador de video 700 ahora será considerada en detalle. En común con los codificadores de video conocidos de la técnica anterior, el codificador de video 700, de acuerdo con esta modalidad de la presente invención, emplea la predicción con compensación de movimiento con respecto al cuadro de referencia Rn(x,y) para producir una corriente de bitios representativa de un cuadro de video que es codificado en del formato INTER. Este realiza la predicción con compensación de movimiento para la resolución de sub-píxel y emplea además un filtro de interpolación que tiene valores de coeficiente de filtro dinámicamente variables a fin de formar los valores de sub-píxel requeridos durante el proceso de estimación de movimiento . El codificador de video 700 realiza la predicción con compensación de movimiento en una base de bloque por bloque e implementa la compensación de movimiento para la resolución de sub-píxel como un proceso de dos etapas para cada bloque. En la primera etapa, un vector de movimiento que tiene resolución de pixeles completos se determina mediante la igualación de bloques, es decir, la búsqueda de un bloque de 51
valores de píxel en el cuadro de referencia Rn(x,y) que se iguala mejor con los valores de píxel del bloque de imagen actual a codificarse. La operación de igualación de bloques es realizada por el bloque de Estimación de Campo de Movimiento 711 en cooperación con el Almacenamiento de Cuadros 717, del cual se recuperan los valores de píxel del cuadro de referencia Rn(x,y). En la segunda etapa de la ' predicción con compensación de movimiento, el vector de movimiento determinado en la primera etapa es refinado para la resolución de sub-píxel deseada. Para hacer seto, el bloque de Estimación de Campo de Movimiento 711 forma nuevos bloques de búsqueda que tienen una resolución de sub-píxel mediante la interpolación de los valores de píxel del cuadro de referencia Rn(x,y) en la región identificada previamente como la mejor igualación para el bloque de imagen que está siendo codificado actualmente (véase la figura 5) . Como parte de este proceso, el bloque de Estimación de Campo de Movimiento 711 determina un filtro de interpolación óptima para la interpolación de los valores de sub-píxel. De manera ventajosa, los valores de coeficiente del filtro de interpolación están adaptados en conexión con la codificación de cada bloque de imagen. En las modalidades alternativas, los coeficientes del filtro de interpolación pueden adaptarse menos frecuentemente, por ejemplo una vez cada cuadro, o al comienzo de una nueva secuencia de video a codificarse.
52
Habiendo interpolado los valores de sub-píxel necesarios y habiendo formado nuevos bloques de búsqueda, el bloque de Estimación de Campo de Movimiento 711 realiza una búsqueda adicional a fin de determinar si cualquiera de los nuevos bloques de búsqueda representa una mejor igualación con el bloque de imagen actual que la mejor igualación de bloque identificado originalmente en la resolución de pixeles completos. De esta manera, el bloque de Estimación de Campo de Movimiento 711 determina si el vector de movimiento representativo del bloque de imagen está siendo codificado actualmente debe apuntar a una ubicación de pixeles completos o sub-pixeles. El bloque de Estimación de Campo de Movimiento 711 da salida al vector de movimiento identificado para el bloque de Codificación de Campo de Movimiento 712, el cual se aproxima al vector de movimiento utilizando un modelo de movimiento, como se describiera previamente. El bloque de Predicción con Compensación de Movimiento 713 luego forma una predicción para el bloque de imagen actual utilizando el vector de movimiento aproximado y la información de error de predicción. La predicción es codificada subsecuentemente en el bloque de Codificación de Error de Predicción 714. La información de error de predicción codificada para el bloque de imagen actual luego es dirigida del bloque de Codificación de Error de Predicción 714 al bloque de Multiplexor 716. El 53
bloque de Multiplexor 716 también recibe información acerca del vector de movimiento aproximado (en la forma de coeficientes de movimiento) del bloque de Codificación de Campo de Movimiento 712, así como también información acerca del filtro de interpolación óptima utilizado durante la predicción con compensación de movimiento del bloque de imagen actual del bloque de Estimación de Campo de Movimiento Til. De acuerdo con esta modalidad de la presente invención, el bloque de Estimación de Campo de Movimiento 711, basado en el resultado computacional calculado por el bloque de cálculo de coeficientes diferenciales 710, transmite un conjunto de valores de diferencia 705 que son indicativos de la diferencia entre los coeficientes de filtro del filtro de interpolación óptima para el bloque actual y los coeficientes de un filtro base, predefinido 709 almacenado en el codificador 700. El bloque de Multiplexor 716 forma subsecuentemente una corriente de bitios codificada 703 que es representativa del bloque de imagen actual al combinar la información de movimiento (coeficientes de movimiento) , datos de error de predicción, valores de diferencia de coeficientes de filtro y posible información de control. Cada uno de los diferentes tipos de información pueden ser codificados por un codificador entrópico antes de la inclusión en la corriente de bitios y la transmisión subsecuente a un decodificador correspondiente.
54
En una modalidad alternativa de la invención, el bloque de Estimación de Campo de Movimiento 711 envía un conjunto de valores 704 que son indicativos de los coeficientes de filtro del filtro de interpolación óptima para el bloque de Cálculo de Coeficientes Diferenciales 710 el cual está localizado entre el bloque de Estimación de Campo de Movimiento 711 y el bloque de Multiplexor 716, como se muestra en la figura 8b. En base al filtro base 709, el bloque de Cálculo de Coeficientes Diferenciales 710 calcula los valores de diferencia 705 y los transmite al bloque de Multiplexor 716. En otra modalidad alternativa, el bloque de Cálculo de Coeficientes Diferenciales 710 reside dentro del bloque de Multiplexor 716. En ese caso, los coeficientes de filtro 704 del filtro de interpolación óptima pueden ser enviados directamente por el bloque de Estimación de Campo de Movimiento 711 al bloque de Multiplexor 716, como se muestra en la figura 8c. La figura 9a es un diagrama de bloques de un decodificador de video 800 implementado de acuerdo con una modalidad preferida de la presente invención y que corresponde al codificador de video 700 ilustrado en la figura 8a. El decodificador 800 comprende un bloque de Predicción con Compensación de Movimiento 721, un bloque de Decodificación de Errores de Predicción 722, un bloque de 55
Desmultiplexión 723 y una Memoria de Cuadros 824. La mayoría de elementos en el decodificador 800 funcionan y operan de manera similar a los elementos correspondientes en la técnica anterior 20 (véase figura 2) . Sin embargo, el decodificador 800 de la presente invención, como se muestra en la figura 9a, incluye un bloque de reconstrucción de filtro 810, el cual reconstruye el filtro de interpolación óptima 110 (véase figura 6a) en base a los valores de diferencia 130 (figuras 6b y 6c) y el filtro base, predefinido 809. El filtro base, predefinido 809 es, preferiblemente, idéntico al filtro base 709 (figuras 8a - 8c) . La operación del decodificador de video 800 ahora será considerada en detalle. El Desmultiplexor 823 recibe la corriente de bitios codificada 803, divide la corriente de bitios en sus partes constituyentes (coeficientes de movimiento, datos de error de predicción, valores de diferencia de coeficientes de filtro e información de control posible) y realiza cualquier decodificación entrópico necesaria de los diversos tipos de datos. El Desmultiplexor 823 dirige la información de error de predicción recuperada de la corriente de bitios recibida 803 al bloque de Decodificación de Error de Predicción 822. También dirige la información de movimiento recibida al bloque de Predicción con Compensación de Movimiento 821. En esta modalidad de la presente invención, el Desmultiplexor 823 dirige los valores 56
de diferencia recibidos (y decodificados entrópicamente) por medio de la señal 802 al bloque de Predicción con Compensación de Movimiento 821 para permitir que el bloque de Reconstrucción de Filtro 810 reconstruya el filtro de interpolación óptima 110 (véase figura 6a) al adicionar los valores de diferencia recibidos a los coeficientes de un filtro base, predefinido 809 almacenado en el decodificador. ' El bloque de Predicción con Compensación de Movimiento 821 utiliza subsecuentemente el filtro de interpolación óptima como se define por los valores de coeficiente reconstruidos para construir una predicción para el bloque de imagen que es decodificado actualmente. Más específicamente, el bloque de Predicción con Compensación de Movimiento 821 forma una predicción para el bloque de imagen actual al recuperar los valores de píxel de un cuadro de referencia Rn(x,y) almacenado en la Memoria de Cuadros 824 e interpolarlos como sea necesario de acuerdo con la información de movimiento recibida para formar cualquier valor de sub-píxel requerido. La predicción para el bloque de imagen actual luego se combina con los datos de error de predicción correspondientes para formar una reconstrucción del bloque de imagen en cuestión. Alternativamente, el bloque de Reconstrucción de Filtro 810 recibe fuera del bloque de Predicción con Compensación de Movimiento 821, como se muestra en la figura 57
9b. A partir de los valores de diferencia contenidos en la señal 802 recibida del Desmultiplexor 823, el bloque de Reconstrucción de Filtro 810 reconstruye los filtros de interpolación óptima y envía los coeficientes de filtro de reconstrucción 805 al bloque de Predicción con Compensación de Movimiento 821. En otra modalidad aún alternativa, el ' bloque de Reconstrucción de Filtro 810 reside en el bloque de Desmultiplexor 823. El bloque de Desmultiplexor 823 dirige los coeficientes reconstruidos del filtro de interpolación óptima al bloque de Predicción con Compensación de Movimiento 821. El codificador, de acuerdo con la presente invención, codifica los coeficientes de filtro diferencialmente con respecto a los coeficientes de filtro base, predefinido para permitir que el decodificador reconstruya el filtro de interpolación óptima basado en los valores de diferencia. Los coeficientes de filtro base deben ser conocidos tanto para el codificador como para el decodificador y deben ser estadísticamente cercanos de manera razonable a los filtros reales utilizados en la secuencia de video para producir un buen desempeño de codificación. En otras palabras, de acuerdo con el método de la presente invención, un filtro base que tiene un conjunto particular de valores de coeficiente es definido y luego las diferencias entre los coeficientes de 58
filtro base y aquellos del filtro de interpolación utilizados realmente son codificados e incluidos en la corriente de bitios de video. De esta manera, la cantidad de información necesaria para representar los coeficientes de filtro de interpolación adaptables en la corriente de bitios de video codificado es reducida con respecto a un método en el cual cada uno de los coeficientes de filtro adaptables es codificado por separado. Si los coeficientes del filtro base son suficientemente similares a los coeficientes del filtro de interpolación actualmente utilizado, los valores de diferencia a codificarse son pequeños. De esta manera, es ventajoso si el filtro base, predefinido es estadísticamente similar al filtro de interpolación realmente utilizado, como en este caso los valores de diferencia son reducidos y se logra un mejoramiento adicional en la eficacia de codificación. A diferencia del método de codificación diferencial propuesto en Wedi , el método de acuerdo con la presente invención retiene una resiliencia de errores comparativamente buena. En el caso de que ocurra un error durante la transmisión de la corriente de bitios de video codificado del codificador al decodificador , es solo la diferencia entre el filtro base y el filtro de interpolación utilizado realmente que es afectada por el error.
59
terminal multimedial , codificador de video, decodificador y codificador-decodificador de video de acuerdo con la presente invención se pueden implementar como equipo lógico o componentes físicos dedicados, o una combinación de los dos. Los métodos de codificación y decodificación de video de acuerdo con la presente invención son particularmente adecuados para la implementación en la forma de un programa de computadora que comprende instrucciones leíbles por una máquina para realizar los pasos funcionales de la invención. Como tal, el codificador, decodificador y codificador-decodificador de video de acuerdo con la invención pueden ser implementados como un código de equipo lógico almacenado en un medio de almacenamiento y ejecutado en una computadora, tal como una computadora de escritorio personal, a fin de proveer a esa computadora con funcionalidad de codificación y/o decodificación de video. Aunque las enseñanzas se describen en el contexto de modalidades particulares, será aparente para aquellas personas expertas en el campo que se puede hacer una variedad de modificaciones y diversos cambios a esas enseñanzas. De esta manera, mientras que la invención ha sido mostrada particularmente y descrita con respecto a una o más modalidades preferidas de la misma, será entendido por aquellas personas expertas en el campo que se pueden hacer ciertas modif caciones o cambios en la presente sin apartarse 60
del alcance y espíritu de la invención como se expuso anteriormente . Se hace constar que con relación a esta fecha, el mejor método conocido por la solicitante para llevar a la práctica la citada invención, es el que resulta claro de la presente descripción de la invención.