wo 03/0] 9939 Al ' ??????????????????????????G
Publishcd: For two-tetler cades and oll er abbreviaíiom. refer lo Ihe "G id- — w/r/i iniernationaí searc repon ance Notes on Cades andAbbreviatíons" appearing al Ihe bagin- ning of ach regu&r issue cf ¡he PCT Gazette.
SISTEMA Y METODO PARA OCULTAR ERRORES DE VIDEO ANTECEDENTES DE LA INVENCION 1. Campo de la Invención La presente invención se relaciona, de manera general, con la comunicación de video, y de manera más particular con el ocultamiento de errores de video.
2. Descripción de la Técnica Relacionada Las imágenes de video se han vuelto una parte cada vez más importante de la comunicación global. En particular, las videoconferencias y videotelefonía tienen una amplia gama de aplicaciones como conferencias basadas en escritorios y salas, videos sobre la Internet o sobre líneas telefónicas, supervisión y verificación, telemedicina, capacitación basada en computadoras y educación. En cada una de esas aplicaciones, la información en video y audio acompañante es transmitida a través de enlaces de telecomunicación, incluyendo líneas telefónicas, ISDN, DSL, y frecuencias de radio. Un formato de video estándar usado en las videoconferencias es el Formato Intermedio Común (CIF) , el cual es parte del estándar de videoconferencia de la Unión de Telecomunicaciones Internacional (ITU)H.261. El formato CIF principal también es conocido como CIF Completo o FCIF. También han sido establecidos formatos adicionales con resoluciones superiores e inferiores al 2
FCIF. La Figura 1 es una tabla de requerimiento de resolución y velocidad de bits para varios formatos de video bajo la suposición de que requieren 12 bits para representar un pixel de acuerdo a la técnica anterior. Las velocidades de bits (o mega bits por segundo, Mbps) mostradas son para cuadros de color no comprimidos . Actualmente, la transmisión y recepción eficiente de señales de video puede requerir la codificación y compresión de datos de video y audio acompañantes. La codificación de compresión de video es un método para codificar datos de video digital, de modo que se requiera menos memoria para almacenar los datos de video y se reduzca el ancho de banda de transmisión requerido. Ciertos esquemas de compresión/descompresión (CODEC) son frecuentemente usados para comprimir cuadros de video para reducir las velocidades de bits de transmisión requeridas. De este modo, los componentes físicos y programas y sistemas de programación de CODEC permiten que datos de video digital sean comprimidos en un formato binario más pequeño que el requerido por el formato de video digital original (es decir, no comprimido) . Existen varios métodos y estándares convencionales para codificar y comprimir señales de video originales. Algunos estándares están diseñados para una aplicación particular como el JPEG (Grupo de Expertos 3
Fotográficos Unidos) para imágenes estáticas, y H.261, H.263, MPEG (Grupo de Expertos de Imágenes en Movimiento) , MPEG-2, y MPEG-4 para imágenes en movimiento. Esos estándares de codificación, típicamente, usan la predicción compensada por movimiento basada en bloques sobre 16x16 pixeles, comúnmente referidos como macrobloques . Un macrobloque es una unidad de información que contiene cuatro bloques de 8x8 de datos de luminancia y dos bloques de 8x8 correspondientes de datos de cromaticidad de acuerdo con la estructura de muestreo 4:2:0 donde los datos de cromaticidad son submuestreados 2:1 en ambas direcciones vertical y horizontal. Como un aspecto practico, los datos de audio también deben ser comprimidos, transmitidos y sincronizados junto con los datos de video. Los aspectos de la sincronización, multiplexión y protocolo son cubiertos por estándares como el H.320 (videoconferencia basada en ISDN), H.324 (videotelefonía basada en POTS) , y H.323 (videoconferencia basada en LAN o IP) . H.263 (o su predecesor, H.261) proporciona la parte de codificación de video de esos grupos estándares . Un esquema de estimación y compensación de movimiento es un método convencional típicamente usado para reducir los requerimientos de ancho de banda de transmisión para la señal de video. Debido a que el macrobloque es la unidad de datos básica, el esquema de estimación y compensación de movimiento puede comparar un macrobloque dado en un cuadro de video actual con el área que rodea al macrobloque dado en un cuadro de video previamente transmitido, e intenta encontrar una similitud de datos cercana. Típicamente, un macrobloque estrechamente similar en el cuadro de video previamente transmitido está espacialmente desviado del macrobloque dado en menos de un ancho del macrobloque dado. Si se encuentra una similitud de datos cercana, el esquema sustrae el macrobloque dado en el cuadro de video actual del macrobloque desviado, estrechamente similar en el cuadro de video previamente transmitido, de modo que no se necesite codificar y transmitir una diferencia (es decir, residual) y la desviación espacial. La desviación espacial es referida comúnmente como un vector de movimiento. Si el proceso de estimación y compensación del movimiento es eficiente, el macrobloque residual restante deberá contener solo una cantidad de información necesaria para describir datos asociados con pixeles que cambien del cuadro de video previo al cuadro de video actual y un vector de movimiento. De este modo, las áreas de un cuadro de video que no cambian (por ejemplo, el fondo) no son codificadas y transmitidas) . De manera convencional, el estándar H.263 específica que los vectores de movimiento usados para la estimación del movimiento y compensación de movimiento 5
son codificados de manera diferencial. Aunque la codificación diferencial reduce las cantidades de datos requeridas para la transmisión, cualquier error en el cual los datos del vector de movimiento se pierden o corrompan para un macrobloque tiene un impacto negativo sobre macrobloques adyacentes . El resultado es una propagación del error debido a los datos corruptos, lo cual conduce a una calidad de video inferior. Cuando se prepare información del cuadro de video para su transmisión sobre una red de comunicación conmutada por paquetes, los esquemas de codificación transforman la información del cuadro de video, comprimida por técnicas de estimación y compensación de movimiento, en paquetes de datos para su transmisión a través de una red de comunicación. Aunque los paquetes de datos permiten una eficiencia de transmisión mayor, los paquetes de datos perdidos, corrompidos, o retrasados también pueden producir errores generando como resultado una degradación de la calidad de video. De manera alternativa, los datos de video pueden ser transmitidos sobre redes de comunicación heterogéneas en las cuales uno de los puntos finales está asociado con una red conmutada por circuitos y se usa una compuerta u otro dispositivo de enlace de red conmutado por paquetes a conmutado por circuitos. Actualmente, los paquetes de datos perdidos o 6
corrompidos con frecuencia producen una calidad de video menor. Por lo tanto, existe la necesidad de un sistema y método que organice y transmita paquetes de datos para ocultar errores causados por la pérdida de paquetes de datos .
SUMARIO DE LA INVENCION El presente sistema y método supera o alivia sustancialmente problemas anteriores asociados con la pérdida de paquetes de datos de video. En general, la presente invención proporciona un sistema y un método que codifica, reordena, y empaqueta información de video para su transmisión a través de una red conmutada por paquetes con la capacidad de ocultar errores de video causados por pérdidas de paquete de datos de video. En una modalidad ejemplar, las señales de video son codificadas en conjuntos de macrobloques. Un motor para reordenar macrobloques asigna entonces marcas enteras llamadas identificadores de grupos de macrobloques (MBGID) a cada macrobloque. De manera ventajosa, a los macrobloques adyacentes no se les asignan MBGID idénticos en una modalidad ejemplar. Un motor para empaquetar macrobloques permite entonces empaquetar los macrobloques, de modo que los macrobloques a los que se le asignaron ambos MBGID idénticos sean empaquetados juntos. Para modalidades de la invención en 7
las cuales macrobloques adyacentes no se les asignan MBGID idénticos, se sigue que los macrobloques espacialmente adyacentes no son empaquetados juntos. Adicionalmente , pueden ser incorporados datos correspondientes, como un mapa intramacrobloques , en un encabezado de imagen o transportados por algún otro mecanismo para facilitar un proceso de descodificación correspondiente . En otra modalidad más de la invención, cuando un motor de procesamiento de imágenes recibe paquetes de datos que contienen macrobloques codificados, los paquetes de datos son desempaquetados, y los macrobloques codificados son ordenados y descodificados. En una modalidad alternativa, el motor procesador de imágenes desempaqueta los paquetes de datos recibidos, entonces decodifica los macrobloques en un orden en el cual fueron recibidos para reducir el retraso de procesamiento. Si uno o más paquetes de datos se pierden, los datos que acompañan a los macrobloques de los paquetes de datos transmitidos exitosamente son usados para atenuar los efectos de los paquetes de datos perdidos . Varios métodos basados en si los macrobloques perdidos estaban intracodificados o intercodificados compensan los macrobloques ausentes. Tras la compensación, la señal de video puede entonces ser desplegada. Como resultado, el sistema y método de la presente es capaz de ocultar 8
errores de video resultantes de la pérdida de paquetes de datos .
BREVE DESCRIPCION DE LOS DIBUJOS La Figura 1 es una tabla de los requerimientos de resolución y velocidad de datos para varios formatos de video, de acuerdo a la técnica anterior; la Figura 2 es un diagrama de bloques de un sistema de videoconferencia ejemplar, de acuerdo a la presente invención; la Figura 3 es un diagrama de bloques de una estación de videoconferencia ejemplar del sistema de videoconferencia de la Figura 2; la Figura 4 es un diagrama de bloques de una modalidad ejemplar del motor procesador de imágenes de la Figura 3 ; la Figura 5 es un diagrama ejemplar de un patrón de reordenamiento de macrobloques para un cuadro de video con formato QCIF, donde cada número es un MBGID asignado a un macrobloque en una ubicación espacial correspondiente ; la Figura 6 es un diagrama ejemplar del patrón de reordenamiento de macrobloques de cuadro QCIF de la Figura 5, donde un paquete de datos que contiene datos de macrobloque codificados para macrobloques con MBGID = 5 se perdió;
la Figura 7 es un diagrama de bloques de un esquema de interpolación bidimensional que usa datos asociados con pixeles ubicados en macrobloques adyacentes, de acuerdo a una modalidad de la presente invención; la Figura 8 es un diagrama de bloques ejemplar de macrobloques adyacentes usados para estimar el vector de movimiento del macrobloques perdido m, de acuerdo a la presente invención; la Figura 9 es un diagrama de flujo ejemplar de los pasos del método para el procesamiento de datos de video, de acuerdo a una modalidad de la presente invención; y la Figura 10 es un diagrama de flujo ejemplar de los pasos del método para el ocultamiento de errores de video cuando se reciben datos de video, de acuerdo a la presente invención.
DESCRIPCION DETALLADA DE LOS DIBUJOS La presente invención oculta errores en señales de video causados por pérdida de paquetes de datos . El sistema y método de la presente se aparta de las tecnologías existentes al empaquetar macrobloques en un orden flexible (por ejemplo, sin exploración de trama) en un cuadro de video . En contraste con los estándares de codificación de video existentes, los macrobloques son 10
empaquetados en un orden especificado por un patrón de reordenamiento de macrobloques . Además, los vectores de movimiento para cada macrobloque pueden ser codificados de manera no diferencial. Esas mejoras buscan atenuar las perturbaciones causadas por pérdidas de paquetes de datos a través de un enlace de comunicación. El alcance de la presente invención cubre una variedad de estándares de video, incluyendo, pero sin limitarse a, H.261, H.263, H.264, MPEG, MPEG-2, y PEG-4. La FIGURA 2 ilustra un sistema de video conferencias ejemplar 200. El sistema de video conferencias 200 incluye una estación de video conferencia local 202 y una estación de video conferencia remota 204 conectadas a través de una red 206. Aunque la FIGURA 2 únicamente muestra dos estaciones de video conferencia 202 y 204, aquellos expertos en la técnica reconocerán que pueden ser acopladas mas estaciones de video conferencias al sistema de video conferencia 200. Deberá notarse que el sistema y método de la presente deberá ser utilizado en cualquier sistema de comunicación donde sean transmitidos datos de video sobre una red. La red puede ser cualquier tipo de medio de transmisión electrónico, como, pero sin limitarse a, POTS, cable, fibra óptica y medios de transmisión de radio. La FIGURA 3 es un diagrama de bloques de una estación de video conferencias ejemplar 300. Por 11
simplicidad, la estación de video conferencia 300 será descrita como la estación de video conferencias local 202 (FIGURA 2) , aunque la estación de video conferencias remota 204 (FIGURA 2) puede contener una configuración similar. En una modalidad, la estación de video conferencias 300 incluye un dispositivo de representación visual 302, una CPU 304, una memoria 306, al menos un dispositivo de captura de video 308, un motor procesador de imágenes 310 y una interconexión de comunicación 312. De manera alternativa, pueden ser proporcionados otros dispositivos en la estación de video conferencias 300, o no todos los dispositivos nombrados anteriormente son proporcionados . Puede ser implementado al menos un dispositivo de captura de video 308 como una cámara de dispositivo acoplado por carga (CCD) , una cámara semiconductora de óxido de metal complementaria (CMOS) , o cualquier otro tipo de dispositivo de captura de imágenes. Al menos un dispositivo de captura de video 308 captura imágenes de un usuario, sala de conferencias, u otras escenas, y envía las imágenes al motor procesador de imágenes 310. Típicamente, el motor procesador de imágenes 310 procesa la imagen de video en paquetes de datos antes de que la interconexión de comunicación 312 transmita los paquetes de datos a la estación de video conferencia remota 204. El motor procesador de imágenes 310 será discutido con mayor detalle con relación a la 12
FIGURA 4. Por el contrario, el motor procesador de imágenes 310 también transforma paquetes de datos recibidos de la estación de video conferencias remota 204 en una señal de video para presentarlos sobre el dispositivo de representación visual 302. La FIGURA 4 es una modalidad ejemplar del motor procesador de imágenes 310 de la Figura 3. El motor procesador de imágenes 310 incluye un motor de codificación 402, un motor de reordenamiento de macrobloques 404, un motor para empaquetar macrobloques 406, y una memoria intermedia de comunicación 408. Inicialmente, una señal de video del dispositivo de captura de video 308 (FIGURA 3) entra al motor de codificación 402, el cual convierte cada cuadro de video en un formato deseado, y transforma cada cuadro de la señal de video en un conjunto de macrobloques. Un macrobloque es una unidad de datos que contiene bloques de datos que comprende un componente de luminancia y cromaticidad asociados con elementos de imágenes (también referidos como pixeles) . Por ejemplo, en el H.263, un macrobloque consiste de cuatro bloques de 8x8 de datos de luminancia y dos bloques de 8x8 correspondientes de datos de cromaticidad en un formato de muestreo de cromaticidad de 4:2:0. Un bloque de datos de 8x8 es una matriz de ocho columnas por ocho renglones de datos, donde cada uno de los datos corresponde a un pixel del cuadro de video. Un 13
macrobloque con formato de cromaticidad de 4:2:0 comprende datos que cubren una sección de 16 pixeles por 16 pixeles del cuadro de video. Sin embargo, la presente invención no se limita a macrobloques como se define de manera convencional, sino que puede extenderse a cualquier unidad de datos que comprenda datos de luminancia y/o cromaticidad. Además, el alcance de la presente invención cubre otros formatos de muestreo, como el formato de muestreo de cromaticidad de 4:2:2 que comprende cuatro bloques de 8x8 de datos de luminancia y cuatro bloques de 8x8 correspondientes de datos de cromaticidad, o un formato de muestreo de cromaticidad de 4:4:4 que comprende cuatro bloques de 8x8 de datos de luminancia y ocho bloques de 8x8 correspondientes de datos de cromaticidad. Además, el motor de codificación 402 codifica (es decir, comprime) cada macrobloque para reducir el número de bits usados para representar el contenido de datos. Cada macrobloque puede ser "intracodificado" o "intercodificado" , y un cuadro puede estar comprendido de cualquier combinación de macrobloques intracodificados e intercodificados . Los macrobloques intercodificados son codificados usando similitudes temporales (es decir, similitudes que existen entre un macrobloque de un cuadro y un macrobloque estrechamente similar de un cuadro previo) . Específicamente, un macrobloque intercodificado 14
dado comprende diferencias codificadas entre el macrobloque dado y un macrobloque estrechamente similar de un cuadro de video previo . El macrobloque estrechamente similar del cuadro de video previo puede comprender datos asociados con pixeles que estén desviados de los pixeles asociados con el macrobloque dado. De manera alternativa, los macrobloques intracodificados son codificados sin el uso de información de otros cuadros de ' video en una forma similar a la empleada por el estándar de codificación de imágenes estáticas JPEG. Por ejemplo, para determinar si un macrobloque dado puede ser codificado como un macrobloque intercodificado, el motor de codificación 402 calcula diferencias entre datos del macrobloque dado de un cuadro de video actual con datos de un macrobloque de un cuadro de video previo (referido como un macrobloque desviado) , donde las diferencias pueden ser determinadas, por ejemplo, por un error absoluto medio o un error cuadrado medio entre los datos correspondientes a los pixeles localizados en posiciones colocalizadas dentro de los macrobloques. Para el macrobloque dado, el motor de codificación 402 calcula errores para una pluralidad de macrobloques desviados. Si el motor de codificación 402 únicamente encuentra errores mayores que un valor umbral de diferencia predeterminado, entonces no existen 15
similitudes significativas entre los datos del macrobloque dado y los datos del cuadro anterior, y el macrobloque es intracodificado . Sin embargo, si se encuentra que un error es menor que el valor umbral de diferencia predeterminado para el macrobloque dado y un macrobloque desviado dado del cuadro anterior, entonces el macrobloque dado es intercodificado . Para intercodificar el macrobloque dado, el motor de codificación 402 sustrae los datos del macrobloque dado de los datos del macrobloque desviado (es decir, que los datos de luminancia y cromaticidad asociados con un pixel del macrobloque dado son sustraídos de los datos de luminancia y cromaticidad asociados con un pixel correspondiente del macrobloque desviado por cada pixel) para dar los datos de la diferencia, codifica los datos de la diferencia usando técnicas de codificación estándar como la Transformación Cosinusoidal Discreta y métodos de cuantización entre otros, determina un vector de desviación del macrobloque dado para el macrobloque desviado (referido como un vector de movimiento) , y codifica el vector de movimiento . Actualmente, los estándares de codificación de video, como el H.261 y H.263, especifica que los vectores de movimiento de macrobloques intercodificados son codificados de manera diferencial para mejorar la 16
eficiencia de la codificación. Sin embargo, la codificación diferencial produce errores creados por datos de vectores de movimiento perdidos o corrompidos que se propagan a macrobloques adyacentes que en otras circunstancias serían descodificados sin error, puesto que los datos del vector de movimiento codificados asociados con un macrobloque dado, en general, no dependen de los datos del vector de movimiento de macrobloques vecinos. De este modo, los efectos de los datos del vector de movimiento de un macrobloque dado no son localizados espacialmente para el macrobloque dado. Sin embargo, si los vectores de movimiento de cada macrobloque intercodificado no son codificados diferencialmente , entonces se localizan los efectos de los datos del vector de movimiento para el macrobloque dado, dando como resultado un incremento significativo en la resilencia del error. En la mayoría de los casos, un cambio en el método de codificación del vector de movimiento de una técnica diferencial a una no diferencial da como resultado una pérdida menor en la eficiencia de la codificación total (típicamente menos de un por ciento pequeño) . De manera ventajosa, los componentes del vector de movimiento asociados con cada macrobloque intercodificado, contrario a los métodos convencionales, no son codificados de manera diferencial, de acuerdo a una modalidad de la presente invención.
17
En otra modalidad de la invención, el motor de codificación 402 puede intracodificar macrobloques de un cuadro usando un mecanismo de "renovación aproximada" . El mecanismo de "renovación aproximada" es un mecanismo determinístico para limpiar desajustes del cuadro de referencia, llamado arrastre de datos, intracodificando un patrón específico de macrobloques de cada cuadro. El motor de codificación 402 usa macrobloques de un cuadro de referencia como macrobloques desviados para descodificar macrobloques intercodificados de un cuadro actual. En una modalidad de la invención, el mecanismo de "renovación aproximada" permite intracodificar un patrón de macrobloques usando un intervalo de aproximación entero w seleccionado de un conjunto de intervalos de aproximación enteros predeterminados. Por ejemplo, si w=47, entonces el motor de codificación 402 intercodifica cada wesimo macrobloque . El intervalo de aproximación por redondeo puede ser seleccionado sobre la base de las velocidades de transmisión de datos de video y porcentajes de error. Cuando los macrobloques intracodificados por "renovación aproximada" son recibidos por el motor de codificación de la estación de video conferencias remota 204 (FIGURA 2) , esos macrobloques intracodificados por "renovación aproximada" reemplazan los macrobloques correspondientes de cuadros previos que pueden estar corrompidos debido a errores de 18
transmisión de datos de video. Cualquier macrobloque puede ser corrompido debido a que los errores de transmisión de datos de video (que no están reemplazados) se propagan más y posiblemente magnifican el arrastre de datos cuando el motor de codificación de la estación de video conferencia remota 204 usa los macrobloques corrompidos como macrobloques de referencia para descodificar otros macrobloques recibidos. De este modo, los macrobloques intracodificados por "renovación aproximada" proporcionan al motor de codificación de la estación de video conferencias remota 204 un conjunto "renovado" de macrobloques intracodificados para ser usados como macrobloques de referencia, reduciendo por lo tanto la propagación del arrastre de datos . Además, el motor de codificación 402 puede generar un mapa intramacrobloques que identifique cuales macrobloqes en un cuadro de video codificado estén intracodificados . Después de que se genera el mapa intramacrobloques, el motor procesador de imágenes 310 envía el mapa a la estación de video conferencias remota 204. El mapa puede ser enviado como parte de un campo de encabezado de imagen asociado con el cuadro de video codificado, por ejemplo, aunque pueden ser usados otros campos . De acuerdo a la presente invención, el motor de codificación 402 puede generar el mapa intramacrobloques 19
en una de dos formas. En una modalidad de la invención, el motor de codificación 402 usa la codificación de longitud de serie para describir lugares de macrobloques intracodificados dentro del cuadro. La codificación de longitud de serie es una técnica para reducir el tamaño de una secuencia ordenada repetida de caracteres. En otra modalidad de la invención, el motor de codificación 402 genera un mapa de bits, donde cada bit en el mapa de bits corresponde a un macrobloque del cuadro. Un valor de bit identifica un tipo de codificación de macrobloque correspondiente. Por ejemplo, en una modalidad de la invención, un bit "1" significa que un macrobloque correspondiente está intracodificado . En otra modalidad de la invención, un bit "1" significa que el macrobloque correspondiente está intercodificado . Pueden ser contemplados otros métodos para generar el mapa intramacrobloques para usarse en la presente invención. En otra modalidad más de la invención, el motor de codificación 402 selecciona el método de codificación del mapa intramacrobloques que produce el menor número de bits. Por ejemplo, un cuadro de video FCIF de 352x288 pixeles (es decir, una resolución horizontal de 352 pixeles por una resolución vertical de 288 pixeles) comprende 396 macrobloques configurados como una matriz de 22x18 macrobloques. Sin incluir ninguna sobrecarga de bits que pueda ser requerida, el método de codificación 20
del mapa de bits requiere 396 bits (un bit por cada macrobloque) . De este modo, los 396 bits son usados para transmitir el mapa intramacrobloques codificado por el mapa de bits, independientemente del número de macrobloques intracodificados dentro del cuadro FCIF. En contraste, sin embargo, el número de bits utilizados para transmitir el mapa intramacrobloques codificado por longitud de serie depende del número de macrobloques intracodificados dentro del cuadro FCIF. El costo de transmitir un mapa intramacrobloques codificado por longitud de serie es de ocho bits por macrobloque intracodificado (es decir, ocho bits por valor de serie) , donde el valor de serie identifica la ubicación del macrobloque intracodificado dentro del cuadro FCIF. Por lo tanto, si el cuadro FCIF contiene n macrobloques intracodificados , se requieren 8 n bits para transferir el mapa intramacrobloques codificados por longitud de serie. < De este modo, si el cuadro CIF contiene menos de 50 macrobloques intracodificados (n<50) , entonces el motor de codificación de origen 402 selecciona el método de codificación por longitud de serie, de otro modo el motor de codificación de origen 402 selecciona el método de codificación por mapa de bits. La selección de un método de codificación del mapa intramacrobloques depende del formato de video, del cual el cuadro de video FCIF es un ejemplo. Posteriormente, los macrobloques codificados son enviados al motor de reordenamiento de macrobloques 404. El motor de reordenamiento de macrobloques 404 reordena los macrobloques codificados. Específicamente, a cada macrobloque se le asigna un identificador de grupo de macrobloques ( BGID) de una pluralidad de MBGID. En una modalidad ejemplar, los macrobloques son numerados del uno al seis de acuerdo a un patrón de asignación de macrobloque ejemplar ilustrado en la FIGURA 5 para un cuadro con formato QCIF que tenga nueve renglones de once macrobloques por renglón. El MBGID máximo es referido como un identificador de grupo máximo (MGID) . En la modalidad ejemplar de la FIGURA 5, el MGID=6. Como se muestra, los MBGID son asignados de tal manera que minimicen los macrobloques adyacentes a los que se les asignó el mismo MBGID. De manera alternativa, otros patrones de asignación pueden asignar el mismo MBGID a macrobloques adyacentes o en cualquier otro orden de asignación. Como se discutirá mejor más adelante en conjunto con la FIGURA 6, la asignación de macrobloques, debido a que a los macrobloques adyacentes no se les asigna el mismo MBGID, se minimiza, de manera ventajosa, una concentración de errores en una región de un cuadro debido a que los macrobloques de un paquete de- datos 22
perdido están distribuidos especialmente a través del cuadro. Puesto que es probable que los errores debido a paquetes perdidos se concentren en una región del cuadro, los datos perdidos asociados con los macrobloques perdidos pueden ser reconstruidos de manera más exacta usando los datos de macrobloques vecinos . En otras palabras, la interpolación espacial de los datos de los macrobloques vecinos o una estimación de vectores de movimiento de macrobloques perdidos son determinadas más exactamente, si la pérdida de datos no se localiza espacialmente dentro del cuadro. El motor de codificación 402 (FIGURA 4) del motor procesador de imágenes 310 (FIGURA 3) de la estación de video conferencia remota 204 (FIGURA 2) pueden usar una variedad de técnicas para ocultar errores en conjunto con el reordenamiento de macrobloques para mejorar la calidad del video. Por ejemplo, en una modalidad de la invención, el motor de codificación 402 descodifica los macrobloques vecinos de un macrobloque intercodificado perdido, estima un motor de movimiento del macrobloque perdido, y usa entonces el vector de movimiento estimado para reconstruir los datos del macrobloque perdido. En otra modalidad de la invención, el motor de codificación 402 puede descodificar los macrobloques vecinos de un macrobloque intracodificado perdido, e interpolar espacialmente los datos vecinos 23
descodificados para reconstruir los datos perdidos. El alcance de la presente invención cubre otras técnicas para ocultar errores usadas en conjunto con el reordenamiento de los macrobloques para mejorar la calidad de video debido a macrobloques perdidos o corrompidos . Pueden ser utilizados diferentes patrones de reordenamiento y MBGID de acuerdo a la presente invención. En una modalidad de la invención, el motor de reordenamiento de macrobloques 404 selecciona un MGID sobre la base de las velocidades de datos de video/formato de video . Refiriéndose a la FIGURA 4, una vez que a los macrobloques se les han asignado MBGID, el motor de empaquetamiento de macrobloques 406 coloca los macrobloques en paquetes de datos discretos de acuerdo a sus MBGID. De este modo, los macrobloques con el mismos MBGID (por ejemplo, MBGID=1) serían colocados en un paquete de datos discreto, común (por ejemplo, el paquete de datos 1) . Refiriéndose a la modalidad ejemplar de la FIGURA 5 de la invención, el motor de empaquetamiento 406 coloca los macrobloques en seis paquetes de datos por cuadro QCIF. Sin embargo, el motor de empaquetamiento 406 puede usar más de un paquete con un MBGID dado para transportar macrobloques con el MBGID dado. Por ejemplo, el motor de empaquetamiento 406 puede crear un primer 24
paquete de datos 1 que comprende una porción de los macrobloques con MBGID=1 y un segundo paquete de datos 1 que comprenda el resto de los macrobloques con MBGID =1. La división de los paquetes de esta manera es gobernada típicamente por un tamaño de unidad de transferencia máximo (MTU) asociado con la red 206 (FIGURA 2) . Posteriormente, los paquetes de datos y encabezados de imágenes son enviados a la memoria intermedia de comunicación 408 para su transmisión a través de la red 206 (FIGURA 2) por la interconexión de comunicación 312 (FIGURA 3) . Para promover una mayor flexibilidad contra la pérdida de paquetes, el encabezado de la imagen puede ser transmitido más de una vez por cuadro. El encabezado de imagen puede incluir el mapa intramacrobloques . Por el contrario, el motor procesador de imágenes 310 también procesa paquetes de datos de video recibidos desde un lugar remoto y proporciona señales de video para su visualización . Inicialmente, los paquetes de datos de video son recibidos por la interconexión de comunicación 302 (FIGURA 3) , y enviados a la memoria intermedia de comunicación 408. Los paquetes de datos de video son entonces enviados al motor de empaquetamiento de macrobloques 406, el cual desempaqueta los macrobloques. A continuación, el motor de reordenamiento de macrobloques 404 reordena los macrobloques nuevamente 25
en su patrón ordenado, original (es decir, el patrón antes del reordenamiento de los macrobloques en la estación de video conferencia remota 204, que es típicamente la exploración de trama (FIGURA 2) . Posteriormente, el motor de codificación 402 funciona como un decodificador, y determina si un paquete de datos de video se perdió en tránsito a través de la red 206. La FIGURA 6 es un diagrama del patrón de reordenamiento de macrobloques de cuadro QCIF de la FIGURA 5, cuando un paquete de datos que contiene datos de macrobloques codificados por macrobloques con BGID=5 se perdió. Los macrobloques perdidos están marcados con una "x" . Deberá notarse que los macrobloques perdidos son distribuidos de manera ventajosa espacialmente a través del cuadro QCIF, de acuerdo a una modalidad de la presente invención, esto permite técnicas para ocultar errores, exactas, de baja complejidad, que emplean métodos como la interpolación espacial o estimación y compensación de vectores de movimiento. Aunque la FIGURA 6 ilustra un solo paquete de datos ausente por conveniencia de la discusión, el alcance de la presente invención cubre el ocultamiento de errores cuando cualquier número de paquetes de datos se corrompen o pierden durante el tránsito. Deberá notarse además que aunque son descritos los mismos componentes aquí como si fueran usados para ambas funciones de transmisión y 26
recepción, los componentes pueden ser incorporados en dispositivos receptores y transmisores separados. Refiriéndose nuevamente a la FIGURA 4, por cada macrobloque perdido, el motor de codificación 402 determina si el macrobloque perdido está intracodificado o intercodificado . Por ejemplo, el motor de codificación 402 puede examinar el mapa intramacrobloques para determinar si el macrobloque perdido está intracodificado . Como se mencionó anteriormente, el mapa intramacrobloques puede ser enviado en campos de encabezado de imagen o como información lateral transportada fuera de un flujo de video, y puede ser comprimido usando el algoritmo de codificación de longitud de serie, configurado como un mapa de bits que identifica macrobloques intracodificados , o algún otro método de codificación eficiente. Si los macrobloques perdidos están intracodificados , entonces pueden ser utilizadas varias técnicas para ocultar errores. Por ejemplo, si el macrobloque perdido es intracodificado como parte de un mecanismos de "renovación aproximada", el motor de codificación 402 reemplaza el macrobloque perdido con el contenido de un macrobloque "correspondiente" de un cuadro previo, donde dos macrobloques "correspondientes" cubren la misma área espacial de sus cuadros respectivos.
De acuerdo a la presente invención, la velocidad de 27
limpieza del mecanismo de "renovación aproximada" es función de las velocidades de datos y porcentajes de error . De manera alternativa, si un macrobloque intracodificado perdido no es codificado como parte de un mecanismo de "renovación aproximada" , entonces el motor de codificación 402 interpola espacialmente el contenido del macrobloque perdido a partir de los macrobloques adyacentes. En una modalidad de la invención, cada bloque de 8x8 del macrobloque perdido es interpolado espacialmente de los dos bloques más cercanos localizados en macrobloques adyacentes. La FIGURA 7 ilustra un esquema de interpolación ejemplar usando datos asociados con pixeles localizados en macrobloques adyacentes. La FIGURA 7 incluye un macrobloque perdido 705, un macrobloque adyacente izquierdo 710, un macrobloque adyacente superior 715, y un macrobloque adyacente derecho 720. Por ejemplo, para reconstruir (es decir, interpolar) datos de un bloque izquierdo superior de 8x8 725 del macrobloque de 16x16 perdido 705, el motor de codificación 402 (FIGURA 4) interpola datos en una última columna de datos 730 (indicado por x) de un bloque derecho superior de 8x8 735 del macrobloque adyacente izquierdo 710, y datos en un último renglón de datos 740 (indicados por una x) de un bloque izquierdo inferior de 8x8 745 del macrobloque adyacente superior 715.
28
De manera similar, para reconstruir datos de un bloque superior derecho de 8x8 750 del macrobloque perdido 705, el motor de codificación 402 interpola datos en una primera columna de datos 755 de un bloque superior izquierdo de 8x8 760 del macrobloque adyacente derecho 720, y datos en un último renglón de datos 765 de un bloque inferior derecho de 8x8 770 del macrobloque adyacente superior 715. También pueden ser aplicadas otras formas de interpolación y pueden ser utilizados otros bloques de macrobloques adyacentes, y estar dentro del alcance de la presente invención. Si el macrobloque perdido es intercodificado, entonces el motor de codificación 402 calcula un estimado del vector de movimiento del macrobloque perdido examinando los vectores de movimiento de macrobloques adyacentes . La FIGURA 8 es un diagrama de bloques de macrobloques adyacentes usados para estimar el vector de movimiento del macrobloque perdido m, de acuerdo a una modalidad de la presente invención. Para el macrobloque perdido m, se calcula la mediana de los vectores de movimiento de tres macrobloques vecinos, a, b y c. Por ejemplo, el componente x del vector de movimiento estimado del macrobloque MVmx= mediana (MVax, MVbx/ MVCX) y el componente y del vector de movimiento estimado de los macrobloques m es MVmy=mediana (MVay, MVby, MVcy) , donde MVax, MVbx, MVCX son los componentes en x del vector de 29
movimiento de los macrobloqu.es a, b y c, respectivamente, y MVay, MVby, Vcy son los componentes y de los vectores de movimiento de los macrobloques a, b y c, respectivamente. Aunque la modalidad de la FIGURA 8 de la invención usa vectores de movimiento de los macrobloques adyacentes a, b y c para calcular un vector de movimiento estimado para el macrobloque m, puede ser usado cualquier número y cualquier combinación de macrobloques adyacentes para estimar un vector de movimiento de macrobloque perdido. Una vez que el vector de movimiento del macrobloque perdido es estimado, el motor de codificación 402 (FIGURA 4) compensa por movimiento el macrobloque perdido usando el vector de movimiento estimado para reconstruir el contenido de datos de macrobloque perdido. Después de que el contenido de datos de todos los macrobloques de un cuadro dado es reconstruido, el motor de codificación 402 transforma los macrobloques en una señal de video para presentarlas sobre el dispositivo de representación visual 302 (FIGURA 3) . Aunque se ilustra con solo un paquete de datos perdido, la presente invención puede ser utilizada para ocultar errores con paquetes de datos perdidos múltiples . La FIGURA 9 es un diagrama de flujo ejemplar 900 de los pasos del método para ocultar errores de video cuando se transmiten datos de video sobre redes conmutadas por paquetes, de acuerdo a una modalidad de la 30
presente invención. En el paso 905, el dispositivo de captura de video 308 (FIGURA 3) captura una imagen de video y genera una señal de video. A continuación, en el paso 910, el motor de codificación 402 (FIGURA 4) (también se refiere a un codificador cuando se procesan datos para su transmisión) recibe la señal de video y transforma la señal de video en uno o más macrobloques intracodificados e intercodificados . Un cuadro de video puede comprender macrobloques intercodificados , macrobloques intracodificados , o cualquier combinación de macrobloques intracodificados o intercodificados . En una modalidad de la invención, se permite que un mecanismo de "renovación aproximada" para intracodificar un patrón de macrobloques usando un intervalo de aproximación seleccionado de un conjunto de intervalos de aproximación predeterminados . El intervalo de aproximación puede ser seleccionado sobre la base de las velocidades de datos de video y porcentajes de error. Además, el motor de codificación 402 calcula un vector de movimiento codificado de manera no diferencial por cada macrobloque intercodificado . Posteriormente, en el paso 915, el motor de codificación 402 genera un mapa intramacrobloques que identifica lugares de los macrobloques intracodificados . En una modalidad de la presente invención, el mapa intramacrobloques es codificado usando un método de 31
codificación de longitud de serie o un método de codificación de mapa de bits basado en el número total de bits requeridos para codificar el mapa intramacrobloques . A continuación, un motor de reordenamiento de macrobloques 404 (FIGURA 4) asigna a cada macrobloque un MBGID en el paso 920. Por ejemplo, los macrobloques se les pueden asignar MBGID en un patrón como el que se muestra en la FIGURA 5. En una modalidad, los macrobloques son asignados para minimizar macrobloques adyacentes a los que se les haya asignado los mismos MBGID. De manera alternativa, otras modalidades pueden contemplar asignar a los macrobloques adyacentes los mismos MBGID. Posteriormente, el motor empaquetador de macrobloques 406 (FIGURA 4) crea paquetes de datos discretos y coloca los macrobloques en paquetes de datos discretos de acuerdo a su MBGID en el paso 925. Por ejemplo, los macrobloques con el mismo MBGID serían colocados en un paquete de datos discreto común. De manera alternativa, el motor empaquetador de macrobloques 406 puede ser un motor de transporte para colocar a macrobloques en un formato particular para transportarlos sobre una red conmutada por circuitos. Finalmente, en el paso 930, los paquetes de datos y el encabezado de imagen (incluyendo el mapa intramacrobloques) son enviados a la memoria intermedia de comunicación 408 (FIGURA 4) para su 32
transmisión a la estación de video conferencias remota 204 (FIGURA 2) . La FIGURA 10 es un diagrama de flujo ejemplar 1000 de los pasos del método para ocultar errores de video cuando se reciben datos de video, de acuerdo a la presente invención. En el paso 1005, la memoria intermedia de comunicación 405 (FIGURA 4) recibe paquetes de datos transmitidos de la estación de video conferencia remota 304 (FIGURA 2) vía la red 206 (FIGURA 2) . A continuación, en el paso 1010, el motor empaquetador de macrobloques 406 (FIGURA 4) desempaqueta los paquetes de datos recibidos en macrobloques. Posteriormente en el paso 1015, el motor de reordenamiento de macrobloques 404 (FIGURA 4) ordena los macrobloques y coloca los macrobloques en la configuración espacial apropiada dentro de un cuadro de video . A continuación, el motor de codificación 402 (Figura 4) descodifica los macrobloques en el paso 1020. El motor de codificación 402 (que funciona como un descodificador) o alguno otro mecanismo relacionado con la transformación de paquetes de datos de video (por ejemplo, números de secuencia de RTP) determina si cualesquíer macrobloques que comprendan el cuadro de video están ausentes en el paso 1025. Los macrobloques se pierden si uno o más paquetes de datos de video se pierden o son corrompidos vía la transmisión de los paquetes de datos de video sobre la red 206. Si, en el paso 1025, se determina que no están ausentes los macrobloques, entonces los macrobloques son presentados por el dispositivo de representación visual 302 (Figura 3) en el paso 1030. Sin embargo, si en el paso 1025, se determina que uno o más macrobloques están ausentes, entonces los datos asociados con uno o más de los macrobloques ausentes son reconstruidos, sobre la base del tipo de codificación del macrobloque, en el paso 1035. El motor de codificación 402 puede ser usado para trazar el mapa intramacrobloques para determinar el tipo de codificación de cada uno de los macrobloques perdidos. Por ejemplo, si el macrobloque perdido es intracodificado como parte del mecanismo de "renovación aproximada", entonces el motor de codificación 402 reemplaza el contenido del macrobloque perdido con el contenido de datos de un macrobloque correspondiente de un cuadro previo. De manera alternativa, si un macrobloque intracodificado perdido no es codificado como parte del mecanismo de "renovación aproximada" , entonces el contenido del macrobloque perdido es interpolado espacialmente de los macrobloques adyacentes vecinos más cercanos. En una modalidad de la presente invención, el motor de codificación 402 usa una interpolación bidimensional para interpolar datos de los macrobloques adyacentes (Figura 7) .
34
De manera alternativa, si el macrobloque perdido es intercodificado, entonces el motor de codificación 402 estima el vector del movimiento del macrobloque perdido examinando los vectores de movimiento de macrobloques adyacentes. En una modalidad de la invención, los vectores de movimiento son calculados como la mediana de tres vectores de movimiento de macrobloques vecinos (Figura B) . El motor de codificación 402 usa entonces el vector de movimiento estimado para compensar contenido de datos del macrobloque perdido reconstruyendo un estimado de contenido de datos del macrobloque perdido. Una vez que el contenido de datos de los macrobloques perdidos ha sido reconstruido, los macrobloques son presentados por el dispositivo de representación visual 302, en el paso 1025. La invención ha sido explicada anteriormente con referencia a modalidades ejemplares. Será evidente a aquellos expertos en la técnica que pueden hacerse varias modificaciones a esta sin apartarse del espíritu y alcance más amplio de la invención. Además, aunque la invención ha sido descrita en el contexto de su implementación en ambientes particulares y para aplicaciones particulares, aquellos expertos en la técnica reconocerán que la actividad de la presente invención no se limita a esta y que la invención puede ser utilizada de manera benéfica en cualquier número de