Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA SISTEMA DE CODIFICACIÓN Y TRANSMISIÓN DE VIDEO SOBRE REDES TCP/IP BASADO EN LA TRANSFORMADA POLINOMINAL T E S I S QUE PARA OBTENER EL TÍTULO DE: INGENIERO EN COMPUTACIÓN P R E S E N T A : MIGUEL ANDRÉS TRONCOSO MUÑOZ DIRECTOR DE TESIS: DR. BORIS ESCALANTE RAMÍREZ MÉXICO, D.F. OCTUBRE 2005 UNAM – Dirección General de Bibliotecas Tesis Digitales Restricciones de uso DERECHOS RESERVADOS © PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL Todo el material contenido en esta tesis esta protegido por la Ley Federal del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). El uso de imágenes, fragmentos de videos, y demás material que sea objeto de protección de los derechos de autor, será exclusivamente para fines educativos e informativos y deberá citar la fuente donde la obtuvo mencionando el autor o autores. Cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por el respectivo titular de los Derechos de Autor. iii Agradecimientos A mis padres, Jesús Antonio y Flor María, por su amor, cariño y apoyo incondicional sin el cual no hubiese sido posible llegar hasta aquí. Este logro es también de ustedes. A mi hermano Alejandro por el cariño y respeto que nos hemos tenido siempre. Se que pronto lograrás también tus objetivos. A la memoria de mi hermana Marian. Tu recuerdo es un aliento que siento todos los días. Gracias por tu ejemplo de lucha y perseverancia. Nunca te olvidaré. A mi mujer, Maricruz, por todo tu amor y apoyo para alcanzar este objetivo. Gracias por todo este tiempo. A mi hijo, Carlos Andrés, por ser una motivación muy importante en mi vida. Esto es por ti. A todos mis compañeros y amigos. En especial a Juan Antonio con quien he compartido más de siete años de amistad. Sigue luchando por cumplir con este mismo objetivo. A la Universidad Nacional Autónoma de México, por ser la institución pública en busca de la excelencia que me permitió culminar con esta etapa de mi vida profesional. En particular a la Facultad de Ingeniería que cubrió ampliamente mis expectativas educativas y siempre me proporcionó las herramientas necesarias para mi desarrollo académico. Al Programa de Alto Rendimiento Académico de la Facultad de Ingeniería al que pertenecí con mucho orgullo, así como al Plan de Becarios de la Dirección de Sistemas de la Dirección General de Cómputo y Servicios Académicos por haber complementado mi formación académica. A todos mis profesores que me transmitieron sus conocimientos y contribuyeron a mi formación tanto académica como personal. Al Dr. Boris Escalante Ramírez por haberme introducido al mundo del procesamiento digital de imágenes y ser una guía para el desarrollo del presente trabajo. Gracias por sus consejos y su amistad. Miguel Andrés Troncoso Muñoz v Contenido Agradecimientos iii Contenido v Lista de Figuras vii Introducción 1 1. Conceptos Generales 3 1.1. Visión humana ........................................................................................................................ 3 1.1.1. Percepción y codificación ............................................................................................. 3 1.1.2. Modelos de la visión humana ....................................................................................... 6 1.2. Principios de compresión ........................................................................................................ 7 1.2.1. Codificación de fuente .................................................................................................. 8 1.2.2. Cuantización ................................................................................................................. 9 1.2.3. Codificación de entropía ............................................................................................... 9 1.3. Estándares de compresión de video......................................................................................... 11 1.3.1. MPEG ........................................................................................................................... 11 1.3.1.1. Video MPEG ........................................................................................................ 11 1.3.1.2. Sintaxis de video MPEG-1 ................................................................................... 15 1.3.1.3. MPEG 2 ................................................................................................................ 17 1.3.1.4. MPEG 4 y 7 .......................................................................................................... 18 1.3.2. Otros estándares de compresión ................................................................................... 18 1.4. Esquemas de estimación de movimiento ................................................................................ 19 1.4.1. Block-Matching ............................................................................................................ 20 1.4.2. Estimación basada en el gradiente ................................................................................ 22 1.4.3. Estimación en el dominio de la frecuencia ................................................................... 22 1.5. Transmisión de video digital sobre Internet ........................................................................... 23 1.5.1. Principales obstáculos y soluciones .............................................................................. 24 1.5.2. Protocolos para transmisión de video ........................................................................... 26 2. Codificación de imágenes por transformada 29 2.1. Esquema general ..................................................................................................................... 29 2.2. Transformada de Hermite ....................................................................................................... 30 2.2.1. Descomposición de la imagen ...................................................................................... 32 2.2.2. Reconstrucción de la imagen ........................................................................................ 33 2.2.3. Latís de muestreo .......................................................................................................... 34 2.2.4. Rotación local ............................................................................................................... 35 3. Lenguaje de programación Java 37 3.1. ¿Que es Java? .......................................................................................................................... 37 3.2. Conceptos de programación orientada a objetos .................................................................... 38 3.3. Objetos, clases e interfaces ..................................................................................................... 38 3.4. Operadores, tipos de datos y modificadores de acceso ........................................................... 40 3.5. Applets .................................................................................................................................... 41 3.5.1. Plug-in de java para exploradoresy htmlconverter ...................................................... 42 3.6. Seguridad en Java ................................................................................................................... 43 3.6.1. Llaves y certificados digitales ...................................................................................... 44 3.6.1.1. keytool .................................................................................................................. 45 3.6.1.2. jarsigner ................................................................................................................ 45 vi 3.7. Java Media Framework ........................................................................................................... 46 3.7.1. Arquitectura de JMF ..................................................................................................... 46 3.7.1.1. Modelo temporal ................................................................................................... 47 3.7.1.2. Modelo de eventos ................................................................................................ 48 3.7.1.3. Modelo de datos .................................................................................................... 49 3.7.1.4. Controles ............................................................................................................... 50 3.7.1.5. Extensibilidad ....................................................................................................... 50 3.7.2. Presentación y procesamiento de multimedia ............................................................... 51 3.7.2.1. Players ................................................................................................................... 52 3.7.2.2. Processors ............................................................................................................. 53 3.7.2.3. Controles de presentación y procesamiento ......................................................... 54 3.7.3. Captura, almacenamiento y transmisión de multimedia ............................................... 55 3.7.4. JMF RTP API ............................................................................................................... 56 3.7.4.1. RTPManager ......................................................................................................... 56 3.7.4.2. Eventos RTP ......................................................................................................... 56 3.7.4.3. Datos RTP ............................................................................................................. 56 3.7.4.4. Recepción y presentación de flujos multimedia en RTP ...................................... 56 3.7.4.5. Transmisión de flujos multimedia en RTP ........................................................... 57 3.7.4.6. Extendiendo JMF RTP ......................................................................................... 57 4. Desarrollo del sistema de codificación y transmisión de video 59 4.1. Modelo del sistema en general ............................................................................................... 59 4.2. Codificación y decodificación ................................................................................................ 59 4.2.1. Implantación del codificador ........................................................................................ 60 4.2.2. Implantación del decodificador .................................................................................... 61 4.3. Algoritmo de estimación de movimiento ............................................................................... 61 4.4. Algoritmo de la transformación de imágenes ......................................................................... 63 4.4.1. Aplicación de la DHT ................................................................................................... 64 4.4.2. Submuestreo de los coeficientes ................................................................................... 65 4.4.3. Rotación de los coeficientes ......................................................................................... 66 4.5. Cuantización ........................................................................................................................... 67 4.6. Codificación de entropía.......................................................................................................... 71 4.7. Sintaxis de la trama ................................................................................................................. 71 4.8. Transmisión de video .............................................................................................................. 72 4.8.1. Corrección de pérdida de datos....................................................................................... 73 4.9. Despliegue de las imágenes..................................................................................................... 73 4.10 . Resultados del sistema........................................................................................................... 74 4.10.1. Velocidades de procesamiento...................................................................................... 74 4.10.2. Radios de compresión ................................................................................................... 75 5. Conclusiones 77 5.1 Anotaciones finales ................................................................................................................... 77 5.2 Mejoras propuestas ................................................................................................................... 77 5.3 Campos de aplicación ............................................................................................................... 78 Referencias 79 Anexo A. Secuencias de prueba 85 Anexo B. Documentación del código fuente 87 vii Lista de figuras 1.1. Sección transversal del ojo humano................................................................................................ 3 1.2. Distribución de conos y bastones en la retina ................................................................................. 4 1.3. Espectro sensitivo de un ser humano “típico” ................................................................................ 5 1.4. Escalas de grises.............................................................................................................................. 6 1.5. Sensibilidad espectral de un observador “típico” ........................................................................... 6 1.6. Diagrama de bloques de un algoritmo de codificación de imágenes.............................................. 8 1.7. Grupo de imágenes MPEG ............................................................................................................ 12 1.8. Barrido en forma de zigzag de los coeficientes DCT .................................................................... 13 1.9. Codificador típico MPEG .............................................................................................................. 14 1.10. Decodificador típico MPEG......................................................................................................... 15 1.11. Capas de un flujo de video........................................................................................................... 15 1.12. Block-Matching ........................................................................................................................... 20 1.13. Pila de protocolos para video streaming ...................................................................................... 27 2.1. Sistema de codificación por transformada: (a) codificador;(b) decodificador ............................. 29 2.2. Análisis y síntesis de la transformada polinomial.......................................................................... 31 2.3. Funciones de los filtros en el dominio espacial para σ = 1............................................................ 32 2.4. Distribución de los operadores sobre rejillas de muestreo cuadradas............................................ 34 3.1. Grabación, procesamiento y presentación de elementos multimedia ............................................ 46 3.2. Arquitectura global de JMF ........................................................................................................... 47 3.3. Modelo temporal de JMF............................................................................................................... 47 3.4. Modelo de datos de JMF................................................................................................................ 49 3.5. Modelo de reproducción de JMF. .................................................................................................. 52 3.6. Estados de un Player...................................................................................................................... 52 3.7. Estados de un Processor ................................................................................................................ 54 4.1. Modelo del sistema de codificación y transmisión de video ......................................................... 59 4.2. Esquema propuesto del codificador de video ................................................................................ 60 4.3. Esquema propuesto del decodificador de video............................................................................. 61 4.4. Ejemplo de convergencia para el algoritmo de “búsqueda por los tres pasos”.............................. 62 4.5. Coeficientes DHT para N=2 .......................................................................................................... 65 4.6. Submuestreo de los coeficientes de “DC” sobre una latís tipo quincunx ...................................... 66 4.7. Coeficientes DHT rotados para N=2 ............................................................................................. 67 4.8. Ángulos discretos en una rejilla de muestreo cuadrada ................................................................. 68 4.9. Imágenes codificadas con N=2 y diferentes valores de cuantización............................................ 69 4.10. Imágenes codificadas con N=4 y diferentes valores de cuantización.......................................... 70 4.11. Sintaxis de la trama...................................................................................................................... 71 4.12 Ventana del navegador Firefox recibiendo la señal de video capturada en el Laboratorio de Imágenes de la Facultad de Ingeniería ................................................ 74 4.13. Tiempo de procesamiento para diferentes órdenes de transformación en diferentes computadoras ....................................................................................................................... 75 Introducción El video digital ha tenido un gran desarrollo en los últimos años de tal manera que hoy en día podemos encontrar un sin número de aplicaciones que lo utilizan como es el caso de las videoconferencias, videotelefonía, televisión digital, cámaras de video digital caseras, DVD, teléfonos celulares con cámara de video, transmisión de video en Internet, monitoreo, por mencionar algunas. El desarrollo del video digital ha obedecido entre otras cosas a las ventajas que ofrece en la transmisión y almacenamiento del mismo. Sin embargo, debido a la cantidad de información requerida por el video digital, los anchos de banda de los canales de transmisión y las capacidades limitadas de los medios de almacenamiento, un factor importante en los esquemas de codificación de video es la compresión de datos. Los sistemas de codificación de video se apoyan en un principio en la codificación de las imágenes que conforman a las secuencias de video. La mayoría de los esquemas actuales de codificación de video digital utilizan una codificación por transformada para las imágenes basada en la transformada coseno discreta (DCT), tal es el caso de MPEG. La DCT logra buenos resultados en la compresión de datos en función de que descompone a las imágenes en sus componentes de frecuencia, agrupando la información o la energía de las imágenes en pocos coeficientes de transformación. Sin embargo, la DCT no toma en cuenta las características del sistema de visión humana (SVH). A diferencia de la DCT, la transformada de Hermite discreta (DHT), que es un caso particular de la transformada polinomial discreta, se basa los modelos biológicos de los campos receptivos del SVH estudiados, los cuales obedecen a funciones gaussianas. El objetivo del presente trabajo es desarrollar un esquema alterno de codificación de video digital basado en la transformada polinomial, específicamente en la transformada de Hermite, que se ajuste a los modelos de la visión humana para obtener imágenes que sean percibidas con calidad visual para el ojo humano y al mismo tiempo lograr una compresión de las secuencias de video e implementarlo en el desarrollo de un sistema de transmisión de video en tiempo real que funcione sobre redes TCP/IP. En el capítulo 1 se presentan los conceptos generales utilizados en la codificación y transmisión de video digital, como es el caso del estudio del sistema de visión humana, las técnicas de compresión de información, los estándares actuales de codificación de video, los métodos de estimación de movimiento y la transmisión de video digital sobre Internet. El capítulo 2 muestra el tema relacionado con la codificación por transformada de imágenes y describe la transformada utilizada en el desarrollo del sistema de codificación del presente trabajo. El capítulo 3 está dedicado al lenguaje de programación Java por ser éste el elegido para el desarrollo del sistema. En el capítulo 4 se describe la implantación del sistema de codificación y transmisión, mostrando el esquema de codificación y decodificación propuesto, el algoritmo de estimación de movimiento utilizado, el algoritmo de la transformación de imágenes, los procesos de cuantización y codificación de entropía, la sintaxis propuesta de la trama del video codificado, el tipo de transmisión, el despliegue de las imágenes en el cliente y finalmente los resultados obtenidos con relación a las velocidades de procesamiento y a los radios de compresión. Por último, el capítulo 5 está dedicado a las conclusiones del trabajo, las mejoras propuestas y los campos de aplicación. 1 Capítulo 1 Conceptos Generales Este primer capítulo tiene como objetivo introducir al lector con algunos de los conceptos básicos necesarios para comprender el desarrollo del presente trabajo. En primer lugar hablaré de la visión humana y los modelos matemáticos que se han desarrollado para tratar de explicarla. A continuación trataré las técnicas de compresión de datos utilizadas para la codificación de imágenes y video. Enseguida mostraré los estándares de codificación de video, poniendo más atención en el estándar MPEG. Posteriormente hablaré de las técnicas de estimación de movimiento utilizadas para la codificación del video digital. Finalmente presentaré los temas relacionados con redes y transmisión del video. 1.1 Visión humana Es importante comenzar el presente trabajo con los conceptos básicos de la visión humana, ya que el procesamiento digital de imágenes y de video tiene como principal objetivo, más no el único, obtener, procesar y mostrar información gráfica para la percepción visual humana. Por lo tanto, es necesario comprender las características y limitaciones del sistema devisión humana (SVH), los modelos de los procesos visuales necesarios para el diseño de sistemas de procesamiento de imágenes y de esta manera, poder generar medidas de fidelidad e inteligibilidad de las imágenes procesadas. 1.1.1 Percepción y codificación El ojo humano es casi una esfera de 2 cm de diámetro aproximadamente, formada por un conjunto de membranas denominadas córnea, esclera o esclerótica, coroide y retina [1]. La figura 1.1 muestra la sección transversal del globo ocular humano. Figura 1.1. Sección transversal del ojo humano [3]. La pared exterior en su porción posterior está formada por la esclerótica. Esta porción blanca de la pared ocular tiene una función protectora. La porción anterior de la pared esta constituida por la córnea que es una membrana transparente que permite la entrada de los rayos luminosos. Detrás de la córnea 3 Conceptos Generales 4 hay un espacio lleno de líquido claro llamado humor acuoso que separa la córnea de la lente del cristalino. La capa media o úvea tiene a su vez tres diferentes partes: la coroide que es una capa vascular encargada de nutrir al ojo. Se continúa hacia delante con el cuerpo ciliar encargado de producir el humor acuoso y a continuación queda el iris. Este último es encargado de regular la cantidad de luz que entra al ojo con ayuda de una abertura llamada pupila. La retina es la capa más interna y también la más compleja. Está compuesta principalmente por células nerviosas. Las células receptoras sensibles a la luz se encuentran en su superficie exterior delante de una capa de tejido pigmentado. Estos fotorreceptores se llaman conos y bastones. Cuando la luz llega al ojo, la imagen que transporta se forma en la retina por la sensibilización de estos fotorreceptores. La retina es mucho más que un conjunto de células fotorreceptoras, pues contiene además otras células nerviosas cuyas interacciones sinápticas suponen el inicio del complejo procesamiento de las señales visuales. La retina contiene 5 tipos principales de células: fotorreceptoras, bipolares, horizontales, amacrinas y ganglionares. Cada una de ellas funciona de manera similar a un filtro que permite detectar ciertos rasgos de una imagen y discernirlos de otros (bordes, líneas, texturas, color, etc.). La noción de campo receptivo de una neurona de la vía visual es el concepto fundamental en el que se asienta la neurofisiología sensorial moderna y, por supuesto, los modelos fisiológicos que tratan de explicar la visión. Un campo receptivo es un área de la retina (formada por un conjunto de fotorreceptores) cuyas respuestas a los impulsos que recibe influyen en células más avanzadas de procesamiento visual. De tal modo que tiene lugar un análisis de la imagen la cual es procesada por pequeños trozos o campos receptivos [2]. El número de conos existentes en un ojo está entre 6 y 7 millones y su situación dentro de él se concentra alrededor de un punto llamada fóvea. La misión de los conos es doble, por un lado son responsables de la detección del color y por otra ayudan a resolver los detalles finos de la imagen. La visión a través de los conos se denomina visión fotocópica o de luz brillante. Por otro lado, el número de bastones existentes en un ojo es muy superior a la de los conos y está entre 75 y 150 millones. Los bastones se distribuyen sobre toda la retina y al igual que los conos tienen una doble misión. Por un lado son responsables de dar una impresión general del campo de visión y por otro lado son responsables de la sensibilidad a niveles bajos de iluminación, ya que son más sensibles a la luz que los conos. A la visión a través de los bastones se le denomina visión escotópica o de luz tenue [3]. La figura 1.2 muestra la distribución de los conos y los bastones en la retina. Figura 1.2. Distribución de conos y bastones en la retina [3]. Conceptos Generales 5 El nervio óptico se encarga a través de las múltiples fibras que lo conforman, de enviar la información visual desde el ojo hacia el cerebro. En el punto donde parte del globo ocular no existen conos ni bastones por lo que se forma una zona conocida como punto ciego. Debido a la localización de los conos en el ojo alrededor de la fóvea, cuando observamos un objeto que abarca varios grados del campo de visión es necesario realizar movimientos del ojo, pues los detalles de la información visual únicamente pueden ser obtenidos a través de la fóvea, es decir, necesitamos que la luz del objetivo que queremos enfocar u observar con una alta resolución sea reflejada en la fóvea. Los demás objetos se perciben con una baja resolución o borrosos. El campo de visión que abarca la fóvea es tan sólo de alrededor de un grado. Generalmente ocurren 3 fijaciones del ojo por segundo; estas fijaciones del ojo están intercaladas por rápidos saltos del ojo durante los cuales la visión es suprimida. Este fenómeno fue observado por Guy Buswell [4] y más ampliamente estudiado por primera vez por Alfred Yarbus [5]. De esta manera es como obtenemos información de alta y baja resolución de una escena. Con respecto a la sensibilidad del brillo del SVH, podemos dividirla en la sensibilidad con respecto a la longitud de onda y la sensibilidad con respecto al estimulo. En el caso de la sensibilidad con respecto a la longitud de onda, el SVH tiene limitaciones con relación a las longitudes de las ondas electromagnéticas, es decir que sólo percibimos señales en un rango del espectro electromagnético. Las ondas electromagnéticas para las cuales el ojo humano está adaptado se encuentran entre longitudes de onda de 400 nm (violeta) y 700 nm (rojo). La siguiente figura muestra el espectro sensitivo para un ser humano “típico”. Figura 1.3. Espectro sensitivo de un ser humano “típico” [6]. En el caso de la sensibilidad con respecto al estímulo, se ha demostrado que la respuesta visual R es proporcional al logaritmo de la intensidad del brillo I. Esto es conocido como la ley de Webner- Fechner. )log(IR = (1.1) En la figura 1.4 se muestran dos escalas de grises. En la parte alta las intensidades están espaciadas de manera uniforme. En la parte baja se muestran intensidades espaciadas de manera exponencial las cuales son percibidas como mejor ecualizadas por la visión humana. Adicionalmente, en la figura 1.4 se puede observar un fenómeno conocido como “Mach bands” [7]. A pesar de que el brillo físico es constante en cada franja vertical, el ser humano percibe una variación en los límites de cada banda, Conceptos Generales 6 apreciando un brillo mayor en la frontera con un tono más oscuro y un brillo menor en la frontera con un tono más claro. Figura 1.4. Escalas de grises. Con relación a la percepción del color en el SVH podemos mencionar que en años recientes se ha determinado experimentalmente que existen tres tipos básicos de conos en la retina. Estos conos poseen diferentes características de absorción en función de la longitud de onda con máximos en las regiones roja )(λx , verde )(λy y azul )(λz del espectro óptico como se muestra en la figura 1.5. La existencia de tres tipos de conos provee bases fisiológicas para la teoría tricromática de la visión a color. Figura 1.5. Sensibilidad espectral de un observador “típico” [6]. En lo que respecta a la percepción espacio-temporal, es decir, a la manera en como percibimos el movimiento de los objetos, existen también diferentes estudios. El procesamiento del movimiento es generalmente entendido como un proceso que consiste en varias etapas [8], [9], [10], [11]. En la primera etapa o “etapa temprana del movimiento”, se toman en cuenta los valores de luminancia del estímulo visual y la sensibilidad a la dirección del movimiento de contornos de una dimensión en la dirección de un eje espacial en particular. En etapas posteriores se estudian las respuestas neuronales y las interpretacionesrealizada por el cerebro de dichos estímulos. 1.1.2 Modelos de la visión humana Gracias a los estudios fisiológicos realizados al SVH se han podido desarrollar modelos eficientes que aprovechen sus características. En el campo de la codificación de imágenes, Schreiber fue uno de los primeros en reconocer las implicaciones de los modelos de visión humana [12]. Stockham comenzó el Conceptos Generales 7 diseño de las técnicas de procesamiento de imágenes basados en modelos biológicos, desarrollando una técnica de realce de contraste basado en la propiedad de que la percepción del brillo de escenas naturales está principalmente determinada por las propiedades de reflexión de la escena iluminada y no por la intensidad de la fuente de iluminación [13]. Tanto los neurobiólogos como los psicofísicos coinciden en que los procesos de visión en sus etapas primarias pueden ser descritos por un conjunto de canales operando en paralelo. El brillo de cada posición dentro del campo visual es obtenido integrando las respuestas de todas las celdas con diferentes tamaños de campos receptivos en esa posición. El modelado de los campos receptivos ha sido una práctica común entre los fisiólogos desde la introducción de las ecuaciones de Hartline-Ratliff [14],[15]. En diferentes estudios se han propuesto ecuaciones utilizando campos receptivos lineales. En dichos modelos, la respuesta neuronal es una suma del contraste de los estímulos locales utilizando una función de peso. Rodieck [16] propuso diferencias de Gaussianas concéntricas como modelo del perfil de la sensibilidad de los campos receptivos de las células de la retina. Así mismo, Young [17] demostró que la distribución de los campos receptivos del ojo humano obedece a funciones derivativas Gaussianas. Dos modelos que utilizan el modelo de los campos receptivos con funciones Gaussianas son el modelo de Gabor y el modelo de Hermite. Uno de los modelos del SVH más utilizados en la codificación de imágenes es el modelo de Gabor [18], que representa a los campos receptivos de la corteza visual con funciones Gaussianas moduladas con exponenciales complejas. Básicamente el modelo de Gabor es el producto de una función seno o coseno y una función Gaussiana. La transformada de Gabor es utilizada para codificar imágenes y secuencias de imágenes explotando el SVH introduciendo un error de cuantización de manera que no sea visualmente ofensivo. Otro modelo relacionado con funciones Gaussianas estudiado por Martens [19] interpreta derivadas Gaussianas como el producto de polinomios Hermitianos y una ventana Gaussiana, donde las imágenes son descompuestas en un conjunto de polinomios Hermitianos. La transformación de la imagen introducida por Martens descompone una imagen utilizando derivadas de Gaussianas. El presente trabajo se basa en la transformada Hermitiana, de la que se hablará mas a detalle en el capítulo 2. 1.2 Principios de compresión Cuando se trabaja con imágenes digitales ocupamos grandes cantidades de datos, los cuales generalmente necesitamos almacenar o transmitir de un lugar a otro. Debido a las limitaciones tanto de los medios de almacenamiento, pero principalmente de los anchos de banda de los canales de transmisión necesitamos utilizar diferentes técnicas de compresión. Las imágenes contienen una cantidad considerable de información redundante y mucha que es irrelevante para el sistema de visión humana. La codificación de imágenes se basa principalmente en este hecho, pues su objetivo es poder describir la imagen original con el menor número de datos y al mismo tiempo conservar la mejor calidad visual posible. Las técnicas de compresión de datos explotan las redundancias inherentes e irrelevantes reduciendo la cantidad de datos original a un menor tamaño para posteriormente reconstruirla de manera exacta o aproximada. La razón entre la cantidad de datos originales y los datos después de ser comprimidos se conoce como el radio de compresión. Algunos algoritmos de compresión de datos son con pérdidas, mientras que otros no lo son. Un algoritmo sin pérdidas elimina sólo la información redundante, de manera que se puede recuperar de manera exacta la información. Un método de compresión con pérdidas elimina también la información Conceptos Generales 8 considerada irrelevante y esto permite sólo una reconstrucción aproximada del original. Como es de suponerse, los métodos de compresión con pérdidas logran radios de compresión más altos. En el caso de imágenes digitales, una pequeña pérdida de fidelidad es casi siempre aceptable para lograr un muy alto nivel de compactación. Los tiempos requeridos para la compresión y descompresión de datos no son despreciables. Los algoritmos que logran una compactación mayor no son generalmente los más rápidos, lo cual es algo que se tiene que tomar en cuenta en sistemas en tiempo real, como es el caso del presente trabajo. En la actualidad, los algoritmos de codificación que reducen la cantidad de datos para representar una imagen combinan diferentes técnicas de compresión. En la figura 1.6 se muestra el diagrama de bloques que representa el procesamiento que utilizan dichos algoritmos. Figura 1.6. Diagrama de bloques de un algoritmo de codificación de imágenes. La preparación de la imagen incluye la conversión analógica a digital y la generación de una representación digital apropiada de los datos. El procesamiento o transformación es el primer paso del proceso de compresión utilizando algoritmos sofisticados. Por ejemplo, una transformación del dominio del tiempo al dominio de la frecuencia puede ser realizada utilizando la DCT. La cuantización relaciona los números obtenidos del paso anterior a un intervalo de cuantización reduciendo la precisión. La codificación de entropía es comúnmente la última etapa en este esquema. Comprime la secuencia de bits obtenida de los procesos anteriores sin pérdida de datos utilizando una representación diferente que requiera menos bits por unidad de datos. En las siguientes secciones se describen más a detalle los procesos mencionados. 1.2.1 Codificación de fuente La codificación de fuente en imágenes toma ventaja de las propiedades del ojo humano y la semántica de los datos como es el caso de las redundancias espaciales en imágenes fijas y las redundancias temporales en el caso de video. Existen varias técnicas que se pueden clasificar en este rubro como se mencionan a continuación. Las técnicas de compresión más simples están basadas en la interpolación y el submuestreo. En este caso es posible hacer uso de las características específicas de la visión humana. Por ejemplo, el ojo humano es más sensible a las diferencias en el brillo que a las diferencias en el color. Por lo tanto, es razonable dividir la imagen en componentes YUV (luminancia Y; dos crominancias U, V) en lugar de componentes RGB (rojo, verde y azul). En donde Y = 0.3R + 0.59G + 0.11B, U = B – Y, V = R - Y. De esta manera las componentes U y V pueden ser muestreadas con una resolución más baja. La codificación de diferencias conocida también como codificación con predicción o codificación relativa se basa en valores anteriores, codificando únicamente la diferencia entre el valor actual y el valor anterior. Un ejemplo de esta técnica es conocida como DPCM (Differential Pulse Code Modulation) utilizada comúnmente para codificar audio [20]. En el caso del video, el uso de la Conceptos Generales 9 codificación relativa en el dominio del tiempo se basa en el hecho de que en una secuencia existen muchas áreas que no cambian, o cambian muy poco. De esta manera, únicamente son codificadas las diferencias con la imagen anterior. La codificación por transformada utiliza un enfoque diferente: los datos son transformados en un dominio matemático diferente que sea más adecuado para la compresión. El ejemplo más familiar es la Transformada de Fourier que convierte los datosdel dominio del tiempo al dominio de la frecuencia. Otra transformación comúnmente utilizada es la DCT, utilizada por el formato JPG. En el presente trabajo se hace uso de la transformada polinomial, específicamente de la Transformada Hermitiana Discreta (DHT). El dominio original es una imagen de dos dimensiones, en la que cada píxel es representado por un valor en escala de grises o un valor de color. Si elimináramos algunos píxeles para comprimir los datos sería visualmente molesto. En el domino transformado los elementos de la imagen son representados por coeficientes de frecuencias: el coeficiente de “DC” describe el valor de gris promedio, mientras que los coeficientes de frecuencias altas corresponden a los bordes nítidos. Si se sacrifica precisión para los coeficientes de orden altos el efecto visual seria tener menos detalles en los bordes nítidos de la imagen. Para muchas aplicaciones esto es visualmente más aceptable que perder precisión en el dominio de dos dimensiones de la imagen. En el capítulo 2 se tratará mas a detalle la codificación de imágenes por transformada. Otra técnica es la codificación por bandas en la que en lugar de convertir todos los datos a otro dominio se realiza una transformación seleccionando bandas de frecuencia y realizando codificaciones diferentes para cada banda [21]. 1.2.2 Cuantización El ojo humano responde con diferente sensibilidad a la información visual que recibe. La información a la que es menos sensible se puede descartar sin afectar a la percepción de la imagen. Se suprime así lo que se conoce como redundancia visual. La eliminación de la redundancia esta relacionada con la cuantificación de la información, lo que conlleva una pérdida de información irreversible. Existen dos tipos de cuantización: escalar y vectorial. La cuantización escalar se lleva a cabo forzando a que la imagen tenga un número menor de niveles de gris. Cuando la entrada cae entre dos umbrales de decisión, la salida es colocado en el nivel representativo correspondiente. La cuantización vectorial es un procedimiento más moderno mediante el cual los datos son divididos en bloques de n bytes (n >1). Una tabla predefinida contiene un conjunto de patrones. Para cada bloque se identifica la entrada de la tabla con el patrón más similar. Cada patrón de la tabla es asociado con un índice. Dicha tabla puede ser multidimensional, en este caso el índice es un vector. Este vector es utilizado como el código para el bloque de bytes. El decodificador utiliza la misma tabla para generar una aproximación de los datos originales. Para más detalles de este método, ver [22]. 1.2.3 Codificación de Entropía La codificación de entropía es un proceso sin pérdidas que puede ser utilizado para cualquier tipo de datos. Los datos a ser comprimidos son considerados únicamente como una secuencia de bits y su semántica es ignorada. Conceptos Generales 10 Shannon [23] definió una medida de la información dada por la ocurrencia del símbolo ak en el mensaje como: [ ])(log)( kk aPaI −= (1.2) La entropía de la fuente está definida por: [∑ − = −== 1 0 )(log)()}({ K k kkk aPaPaIEH ] (1.3) y especifica el promedio de información contenido por símbolo de los mensajes generados por la fuente. La entropía de un mensaje es no negativa y llega a su valor máximo cuando todos los símbolos son igualmente probables. Si escogemos 2 como la base del logaritmo, las unidades de entropía serán entonces bits por símbolo. A continuación se describen brevemente algunas técnicas de codificación de entropía. La codificación de longitud corrida o Run-Length se basa en el hecho de que las muestras de datos de imágenes y video contienen secuencias de bytes idénticas. Reemplazando estas secuencias de bytes con un carácter de escape, luego el byte que se repite y finalmente el número de sus ocurrencias, la cantidad de datos pueden ser reducidos significativamente. La codificación de longitud corrida es una generalización de la supresión de ceros. La supresión de ceros asume que únicamente un símbolo en particular es el que sucede con mayor frecuencia en los datos. Todas las secuencias de tres o más ocurrencias de este símbolo son sustituidas por un carácter de escape y un número que especifique las ocurrencias del mismo. Una técnica que puede ser utilizadas para la compresión de texto es sustituir bytes aislados por patrones que ocurran frecuentemente. Por ejemplo, en un programa escrito en un lenguaje de programación de alto nivel podemos sustituir algunas palabras como “if”, “begin", “end”, por un carácter de escape y un número que sirva de índice, utilizado como referencia a una lista de 256 palabras. Esta técnica es conocida como sustitución de patrones estáticos. Si no se conocen a priori las secuencias de símbolos que ocurren más frecuentemente, la situación es diferente. En este caso mientras se codifican los datos se puede ir construyendo una tabla de códigos y de esta manera encontrar patrones que ocurran frecuentemente. A esta técnica se le conoce como sustitución de patrones dinámicos. Un ejemplo de esta técnica es la utilizada por el algoritmo Lempel-Ziv comúnmente implementado en las utilerías del sistema operativo UNIX para comprimir datos. En la codificación de longitud variable la idea es representar los datos con diferentes números de bits, en lugar de utilizar siempre un número fijo. El código Morse es un ejemplo en el que los caracteres que ocurren con mayor frecuencia son representados con un patrón más corto. El código depende de la frecuencia de las ocurrencias de los bytes de datos en una secuencia. Existen varios ejemplos que utilizan técnicas basadas en métodos estadísticos, el ejemplo más importante es el desarrollado por David Huffman [24]. El código de Huffman es un método estadístico sin pérdidas que siempre encuentra un código de longitud variable con la menor redundancia posible. Usa un árbol de codificación binario para representar los valores que tienen mayor ocurrencia con pocos bits y los valores con menor ocurrencia con más bits. Conceptos Generales 11 Gharavi es uno de los autores que ha realizado diferentes estudios utilizando esta técnica, al igual que la codificación por longitud corrida para codificar imágenes representadas con niveles de grises [25],[26]. 1.3 Estándares de compresión de video Comercialmente, la estandarización internacional de protocolos y sistemas de comunicación con video ha ayudado a cumplir dos propósitos: interoperabilidad y reducción de costos. Desde el principio de los años 80 comenzaron un gran número de actividades internacionales de estandarización de audio y video dentro del Comité Consultivo de Telefonía Internacional (CCITT), seguidos del Comité Consultivo Internacional de la Radio (CCIR) y la Organización Internacional de Estandarización (ISO). En la actualidad existen diferentes estándares para codificar video digital. Los más utilizados son los desarrollados por la ISO a través del Grupo de Expertos en Imágenes en Movimiento o MPEG (Moving Picture Experts Group). A continuación se explican brevemente algunos de los estándares principales. 1.3.1 MPEG El estándar MPEG-1 fue publicado en 1992 y define la representación del flujo de bits para audio y video digital sincronizados y comprimidos para ocupar un ancho de banda de 1.5 Mbits/s. MPEG-1 está formado por tres partes o capas: video MPEG, audio MPEG y el sistema MPEG encargado de controlar el flujo tanto del video como del audio. La aplicación más importante de MPEG-1 es el almacenamiento de la información audio visual en medios digitales, tales como CD-ROM y DAT. La codificación que realiza MPEG-1 se basa en la codificación de imágenes JPG y el estándar H.261. Sólo se muestra lo relacionado con el video MPEG, pues el audio MPEG queda fuera del alcance del presentetrabajo. 1.3.1.1 Video MPEG [27],[28] Ya se ha mencionado que cuando trabajamos con una secuencia de imágenes o video existe una gran correlación entre imágenes sucesivas. A las imágenes codificadas que utilizan información de otras imágenes se les denomina inter-codificadas o inter-coded. Cuando se da un cambio de escena (y en ocasión por otros motivos) no funciona la inter-codificación y el modelo de compresión cambia. En este caso el modelo de compresión debe ser estructurado para tomar ventaja de la similitud que existe en una región dada de la imagen con respecto a las áreas adyacentes de la misma. Las imágenes codificadas que no utilizan la información de otras imágenes son llamadas intra-codificadas o intra- coded. MPEG aprovecha la similitud entre una imagen y la siguiente en una secuencia. Cada secuencia de video MPEG está dividida en grupos de imágenes (GOP) y cada grupo de imágenes se compone de una o más imágenes. Existen cuatro diferentes tipos de imágenes en el estándar MPEG-1, llamados “I”, “P”, “B” y “D”. La primera imagen del video debe ser una imagen intra-codificada o imagen de tipo “I”. Detrás de cada imagen de tipo “I”, pueden existir dos tipos de imágenes basadas en predicción o inter-codificadas. Las imágenes con predicción hacia delante son llamadas imágenes “P”. La referencia para estas imágenes es la última imagen de tipo “I” o “P”. Otro tipo de predicción es la predicción hacia atrás con una referencia a una imagen futura de tipo “I” o “P”. También puede utilizarse una predicción bidireccional en donde se utilice como referencia la ultima y la siguiente imagen de tipo “I” o “P”. Estas dos últimas predicciones son utilizadas por las imágenes de tipo “B”. Las imágenes de tipo “B” no pueden ser utilizadas como referencias. El tipo de imágenes “D” son imágenes que utilizan únicamente los coeficientes de DC. Estas imágenes son utilizadas principalmente para un adelanto o Conceptos Generales 12 atraso rápido donde la calidad de la imagen puede ser menor, aunque raramente son utilizadas. En la figura 1.7 se muestra un ejemplo de un grupo de imágenes. Figura 1.7. Grupo de imágenes MPEG. Como MPEG utiliza información de imágenes futuras dentro de la secuencia, el orden de codificación no es el mismo que el orden de despliegue. En el caso de la figura 1.7, el orden de codificación de las imágenes es el siguiente: I-P-B-B-P-B-B-… El algoritmo de compresión MPEG comienza con una imagen en formato YCbCr. El bloque básico de construcción para una imagen MPEG es el macrobloque que consiste de un arreglo de 16 x 16 muestras de luminancias (Y) y dos bloques de 8 x 8 para las componentes de crominancias (Cb, Cr). El arreglo de muestras de luminancias está realmente compuesto por cuatro bloques de 8 x 8. El procesamiento de las imágenes en MPEG trabaja sobre un bloque de 8 x 8 a la vez y siguen el modelo mostrado en la figura 1.6. La imagen MPEG no es simplemente un arreglo de macrobloques, sino que está compuesta de rebanadas o slices. Cada rebanada es una secuencia contigua de macrobloques en orden horizontal de barrido empezando en una posición específica de la imagen. Una imagen puede estar compuesta por una o más rebanadas. Esta estructura de rebanadas, entre otras cosas, permite una gran flexibilidad en cambios de señalización de algunos de los parámetros de la codificación. Esto es necesario tanto para optimizar como para controlar la calidad para una tasa de transmisión dada. A pesar de esto, algunas implementaciones de codificadores ignoran la estructura de rebanadas por causar esto una complicación computacional del algoritmo. Al igual que en JPEG1, la compresión de un bloque de 8 x 8 comienza con una DCT. Básicamente, la DCT es un método que descompone un bloque de datos en una suma ponderada de frecuencias espaciales. Cada uno de estos patrones de frecuencias espaciales tiene un coeficiente correspondiente: la amplitud necesaria para representar la contribución de ese patrón de frecuencia espacial en el bloque de datos analizado. El resultado de esta transformación es nuevamente una matriz de 64 coeficientes DCT. El coeficiente superior izquierdo de la matriz es llamado coeficiente de “DC” y representa el valor promedio de gris o de componente de color Cb o Cr. 1 JPEG (Joint Photographic Experts Group) es un método de compresión de imágenes con pérdidas estandarizado por la ISO. Conceptos Generales 13 Después de obtener los coeficientes DCT, éstos son cuantizados dando más importancia a los coeficientes de DC y bajas frecuencias que a los de altas frecuencias para imágenes intra-codificadas. Para imágenes inter-codificadas todos los coeficientes son cuantizados asignándoles el mismo peso. La cuantización se lleva a cabo dividiendo los coeficientes por un entero positivo, llamado el valor de cuantización, y redondeando el cociente de esta división al entero más cercano. Los valores de cuantización forman la llamada “matriz de cuantización”, misma que el estándar JPEG recomienda. Esta matriz fue hallada a partir de una serie exhaustiva de experimentaciones llevadas a cabo por el grupo de expertos en diferentes tipos de imágenes, tratando de cuantificar la importancia relativa de cada uno de los coeficientes dentro de un análisis psicovisual. La cuantización en MPEG-1 es variable con el fin de mantener la tasa de bits de salida constante mientras se obtiene la mejor calidad de imagen posible. Los coeficientes son arreglados de acuerdo a una secuencia unidimensional en forma de zigzag como se muestra en la figura 1.8. El ordenamiento sigue el criterio de frecuencia espacial ascendente. Cómo la cuantización visualmente ponderada descarta fuertemente a las altas frecuencias espaciales, sólo algunos coeficientes de alta frecuencia son distintos de cero en una transformación típica. Figura 1.8. Barrido en forma de zigzag de los coeficientes DCT. Los coeficientes DCT cuantizados son codificados sin pérdida con una codificación de entropía que utiliza codificación de longitud corrida y codificación de longitud variable basada en el código Huffman. Esta codificación se basa en un diccionario de códigos llamado códigos de longitud variable (VLC). La codificación de los coeficientes de DC de los macrobloques sucesivos para imágenes de tipo “I” se lleva a cabo con la ayuda de un código diferencial de Huffman modificado. Se toma el primer coeficiente como referencia y se codifica sólo la diferencia con el siguiente, aprovechando la alta correlación que existe entre macrobloques adyacentes. Si hay movimiento en la secuencia, se puede obtener una mejor predicción codificando las diferencias relativas a las áreas que están corridas con respecto al área que está siendo codificada. A este proceso se le llama compensación de movimiento. El proceso que se lleva a cabo para determinar los vectores de movimiento en el codificador se llama estimación de movimiento. Conceptos Generales 14 Los vectores de movimiento que describen la dirección y cantidad de movimiento de los macrobloques son transmitidos al decodificador como parte del flujo de bits. Es entonces cuando el decodificador sabe que área de la imagen de referencia fue usada para cada predicción y suma la diferencia decodificada con esta predicción de movimiento compensado para obtener la salida. El codificador debe seguir el mismo procedimiento cuando la imagen reconstruida es usada para predecir otras imágenes. El proceso de reconstrucción en el codificador se llama “decodificación local”. Es importante notar que el sistema MPEG es altamente asimétrico. Los decodificadores son relativamente simples, ya que únicamente siguen las direcciones codificadas dentro del flujo de bits. Los codificadores, por el contrario, son mucho más complejos que los decodificadores. Entre otras cosas, los codificadores deben identificar las áreas de movimiento,determinar los vectores óptimos de movimiento, controlar la tasa de bits, controlar el manejo de datos en los buffers, determinar donde cambiar la cuantización, decidir cuándo un bloque determinado puede ser simplemente repetido, tomar la decisión de cuando utilizar las técnicas “intra” o “inter” de codificación y variar todos estos parámetros y decisiones dinámicamente para maximizar la calidad deseada para la tasa de transmisión requerida. En las figuras 1.9 y 1.10 se muestran respectivamente el codificador y decodificador típicos de MPEG . Figura 1.9. Codificador típico MPEG [29]. Conceptos Generales 15 Figura 1.10. Decodificador típico MPEG [29]. 1.3.1.2 Sintaxis de video MPEG-1 [28] A continuación se describe la sintaxis de las seis capas del flujo de bits MPEG-1: secuencia de video, grupo de imágenes, imágenes, rebanadas, macrobloques y bloques. La figura 1.11 muestra una perspectiva general de las seis capas en secuencias de video MPEG-1. La capa de sistema, no mostrada en la figura 1.11, provee una envoltura a la capa de secuencia de video. Entre otras cosas, la capa de sistema sincroniza y multiplexa los flujos de bits de audio y video en un solo flujo de datos. Figura 1.11. Capas de un flujo de video. Conceptos Generales 16 Una secuencia de video siempre comienza con un encabezado de secuencia. El encabezado de secuencia es seguido por uno o más grupos de imágenes (GOP) y termina con un código de fin de secuencia. Adicionalmente, los encabezados de secuencia pueden aparecer dentro de la secuencia de video. Una de las razones posibles para incluir encabezados de secuencia extras es para ayudar en la reproducción aleatoria o en la edición de video. Un grupo de imágenes siempre empieza con un encabezado de grupo de imágenes y es seguido por una o más imágenes. Cada imagen en el grupo de imágenes tiene un encabezado de imagen seguido por una o más rebanadas. A su vez, cada rebanada esta compuesta por un encabezado de rebanada y uno o más macrobloques. La primera rebanada comienza en la esquina superior izquierda de una imagen y la última rebanada (posiblemente la misma) termina en la esquina inferior derecha. Cada macrobloque está compuesto de un encabezado de macrobloque, el cual contiene información acerca de cuales bloques DCT están codificados. Aunque en la figura 1.11 se muestran los seis bloques, en la práctica algunos de los bloques pueden no estar codificados. Los bloques DCT como ya vimos pueden codificarse de manera “inter” o “intra”. Si un bloque es intra- codificado, la diferencia entre el coeficiente de DC el valor anterior es codificado primero. Los coeficientes de AC son codificados después, utilizando códigos de longitud variable (VLC). Si el bloque es inter-codificado, los coeficientes de DC y AC son codificados de la misma manera utilizando los VLC. Las capas de sistema y de video MPEG contienen patrones únicos de 32 bits llamados códigos de comienzo o start codes. Estos códigos, como su nombre lo indican, comienzan ciertos segmentos de alto nivel del flujo de bits. Todos los códigos de comienzo tienen un prefijo de tres bytes con 23 bits ceros seguidos de un bit 1. El último byte (conocido como valor del código de comienzo o start code value en MPEG-2) identifica a un código de comienzo en particular. Los códigos de comienzo para la capa de video van del 00000100 al 000001B8 en hexadecimal. El encabezado de secuencia, encabezado de grupo de imágenes, encabezado de imagen y encabezado de rebanada comienzan precisamente con un código de comienzo. Dichos códigos son alineados, es decir que comienzan cuando comienza un byte, agregando tantos ceros como sea necesario para lograr la alineación. En la siguiente tabla se muestran los códigos de comienzo para el video MPEG. Nombre del código hexadecimal binario extension start code 000001B5 00000000 00000000 00000001 10110101 group start code 000001B8 00000000 00000000 00000001 10111000 picture start code 00000100 00000000 00000000 00000001 00000000 Reserved 000001B0 00000000 00000000 00000001 10110000 Reserved 000001B1 00000000 00000000 00000001 10110001 Reserved 000001B6 00000000 00000000 00000001 10110110 sequence end code 000001B7 00000000 00000000 00000001 10110111 sequence error code 000001B4 00000000 00000000 00000001 10110100 sequence header code 000001B3 00000000 00000000 00000001 10110011 slice start code 1 00000101 00000000 00000000 00000001 00000001 … … … slice start code 175 000001AF 00000000 00000000 00000001 10101111 user data start code 000001B2 00000000 00000000 00000001 10110010 Tabla 1.1. Códigos de comienzo de video MPEG. Cada encabezado contiene además del código de comienzo, datos necesarios para la capa en cuestión. Por ejemplo, para la capa de imagen, el encabezado contiene los datos que identifican el tipo de imagen Conceptos Generales 17 (I, P, B o D), si el vector de movimiento tiene una escala de 1 píxel o medio píxel, si la referencia para el vector de movimiento es pasada o futura, etc. 1.3.1.3 MPEG-2 [28] MPEG-2 es una extensión y mejora del estándar MPEG-1, desarrollado por el mismo comité de la ISO. La capa de video MEPG-2 permite tasas de datos de hasta 100 Mbit/s, soporta formatos de video entrelazado e incluye soporte para Televisión de Alta Definición o HDTV entre otras mejoras. El video MPEG-2 puede ser utilizado para transmisiones digitales de video vía satélite, por cable y otros canales de transmisión. MPEG-2 provee servicios multimedia interactivos tales como: • Acceso aleatorio para televisión interactiva. • Modos de operación que proveen funcionalidades como la de un reproductor de video casete, tales como avance rápido, reversa, cámara lenta, etc. • Múltiples flujos de audio y video (estereo, multi-lenguajes). A diferencia de MPEG-1 que está diseñado para el almacenamiento de video, MPEG-2 contiene un control de errores más robusto para poder ser transmitido sobre canales con pérdidas. El flujo de transporte utiliza paquetes de longitud fija de 188 bytes. Originalmente, la especificación de video MPEG-2 tenía la intención de soportar video entrelazado a la resolución de televisión estándar en rangos de 4 a 9 Mbits/s. Sin embargo, el alcance de MPEG-2 fue ampliado considerablemente para incluir resoluciones y tasas de bits más altas, así como codificación jerárquica. Entre otras nuevas utilidades incluidas en MPEG-2 se encuentra el soporte de diferentes modos de muestreo de crominancias. El modo estándar de muestreo utilizado en JPEG, MPEG-1 y H.261 es llamado (4:2:0), en donde las muestras de las componentes de crominancia son la mitad de las muestras de luminancia tanto en la dirección vertical como en la horizontal. Un muestreo (4:2:2) produce componentes de crominancia con la misma resolución vertical y la mitad de la resolución horizontal que las componentes de luminancia. Incluso soporta un muestreo (4:4:4) que provee idénticas resoluciones para crominancias y luminancias. Otra característica importante de MPEG-2 es la escalabilidad. Los modos escalables permiten que la información de video pueda ser codificada en dos o más capas. El estándar define cuatro modos de codificación por capas: • La escalabilidad espacial permite a cada imagen ser codificada con un rango de resoluciones que puede ir hasta la resolución máxima. Esta característica permite, por ejemplo, ser utilizado para transmitir video para terminales de televisión estándar así como de HDTV simultáneamente. • La partición de datos permite que los datos codificados puedan ser separados en flujos de alta y baja prioridad. • La escalabilidad de la relación señal a ruido (SNR) permite a las imágenes ser codificadas con una calidad base. Las capas adicionales pueden proveer de la información complementaria para decodificar la imagen con la máxima calidad. • La escalabilidad temporal permite a las secuencias ser codificadas a diferentes tasas de cuadrospor segundo. La capa base puede contener la secuencia en una tasa de cuadros baja y oras capas pueden contener los cuadros faltantes para obtener una calidad máxima. Al igual que MPEG-1, el estándar de video MPEG-2 no especifica el proceso de codificación de video, sino únicamente la sintaxis del flujo de bits y la semántica de decodificación. Conceptos Generales 18 1.3.1.4 MPEG-4 y 7 Puede parecer sorprendente que no exista MPEG-3. MPEG-3 fue inicialmente planeado para ser un estándar para video de alta calidad en tasas altas de datos (en particular para HDTV). Sin embargo, durante el trabajo del comité notaron que los nuevos algoritmos de compresión y los esquemas emergentes de MPEG-2 podían ser apropiados para soportar los escenarios de la HDTV. MPEG-4 tiene un enfoque diferente y su motivo es que las aplicaciones multimedia han sido cada vez más complejas. La introducción de la realidad virtual requiere una codificación eficiente y modelos sintéticos. Incluso, es previsible que las aplicaciones futuras puedan contener múltiples vistas de escenas y gráficas. A pesar de que el objetivo original del comité MPEG-4 fue desarrollar un estándar de codificación para aplicaciones con tasas muy bajas de bits, la atención cambió a una codificación orientada a objetos. Por ejemplo, si consideramos un carro que circula frente al horizonte de una ciudad, en lugar de codificar cada imagen como un todo, el carro en el primer plano y el fondo estacionario puede ser codificado independientemente con diferentes métodos y parámetros de compresión. El audio también puede ser identificado como diferentes objetos, de tal manera que podemos tener audio como fondo, música y diálogos. De la misma manera, el texto que aparece en un video, como es el caso de los subtítulos, puede ser codificado en ASCII y desplegado con un algoritmo de despliegue parametrizado por parte del receptor. Recientemente la ISO ha decidido establecer un grupo de trabajo sobre meta-datos, para acompañar un flujo de audio y video en pistas diferentes. Este es el alcance de MPEG-7. La idea de este trabajo es el hecho de que existe un conocimiento considerable del contenido semántico de una pista de video o audio al momento de producirse. Este conocimiento es perdido cuando son almacenadas o transmitidas dichas pistas de audio y video. Algunos ejemplos incluyen el nombre de los autores, actores y directores de una película, los nombres de los políticos o celebridades y el tiempo exacto de grabación de un documental o entrevista, etc. Para un acceso futuro de los materiales digitalizados, sería muy deseable almacenar estos datos junto con el audio y el video. Si asumimos que los meta-datos son almacenados junto con la información audiovisual, podemos construir motores de búsqueda de piezas específicas de audio y video en archivos grandes de información audiovisual y poder ser utilizado, por ejemplo, por los productores de documentales o noticieros para reutilizar secuencias en nuevas producciones. 1.3.2 Otros estándares de compresión [30] H.120 fue el primer estándar de codificación de video desarrollado por al ITU-T en 1984 en su primera versión y en 1988 en su segunda versión [31]. El estándar tenía como objetivo aplicaciones para videoconferencias en rangos de 1.5 Mbits/s para NTSC y 2 Mbits/s para PAL. El estándar consta de 3 partes. La parte 1 para regiones 625/50 (PAL), la parte 3 para 525/60 (NTSC) y la parte 2 para uso internacional. Las partes 1 y 2 utilizan DPCM, mientras la parte 3 utiliza compensación de movimiento y predicción hacia atrás. Este estándar nunca tuvo éxito comercial. La recomendación H.261 propuesta en 1991 por la ITU-T (también conocida como el estándar “p x 64”) [32] tuvo su origen gracias al desarrollo de las Redes de Servicios Integrados o ISDN. Este estándar describe los métodos de codificación y decodificación de video para servicios audiovisual en rangos de p x 64 bits/s, donde p puede tomar valores entre 1 y 30. Para video-telefonía, son suficientes valores de 1 y 2 para p, pero videoconferencias de mejor calidad necesitan al menos un valor de p = 6. Está basado, al igual que MPEG, en la DCT aplicada a bloques de 8 x 8 y utiliza compensación de movimiento. Introdujo las técnicas de cambio de modos SKIP/INTER/INTRA a nivel macrobloque, Conceptos Generales 19 escaneo en zigzag, cuantización escalar y codificación de entropía VLC utilizada en la mayoría de los estándares de codificación de video. De manera paralela a las actividades de estandarización de la CCITT, la CCIR comenzó la estandarización para codificación de video para señales con calidad de TV. La recomendación CCIR- 721 [33] surgió en 1990. Su principal objetivo fue la transmisión de las señales de TV digital codificada para aplicaciones en tasas cerca de los 140 Mbits/s. La recomendación utilizó una simple forma de codificación inter-frame DPCM para permitir una implementación poco compleja y un alto grado de acceso aleatorio. La recomendación CCIR-723 [34] surgió en 1992. Su principal objetivo fue el mismo que CCIR-721 pero para un rango de tasas de 34-5 Mbits/s. La recomendación utiliza de manera híbrida MC- DPCM/DCT para modo intra-frame y dos modos inter-frames (con y sin compensación de movimiento, MC). Ambas recomendaciones, CCIR-721 y CCIR-723, no son generales. A diferencia de otros estándares, especifican de manera completa tanto el codificador como el decodificador. Otro estándar de codificación de video es el H.263 de la ITU-T [35]. Fue diseñado para una comunicación a bajas tasas de bits. Su algoritmo de codificación es similar al utilizado por H.261 con algunas mejoras en su desempeño y recuperación de errores. Entre las diferencias de H.263 con H.261 es que utiliza una precisión de medio píxel para la compensación de movimiento, y una predicción hacia delante y hacia atrás similar a los cuadros “P” y “B” de MPEG. 1.4 Esquemas de estimación de movimiento Actualmente los estudios enfocados al análisis del movimiento de imágenes están motivados por diferentes aplicaciones [36]. Algunos ejemplos son: • Televisión. Para codificar imágenes de video con compensación de movimiento. Al estimar movimiento se puede obtener una imagen con mayor correlación que la imagen sucesiva y así poder aprovecharlo para lograr una mayor compresión. • Robots móviles. Gracias a la posibilidad de segmentar los objetos al detectar su movimiento en una escena, se puede proveer a los robots de la capacidad de navegar autónomamente en ambientes parcial o totalmente desconocidos o ambientes dinámicos. • Aplicaciones militares. La estimación y detección de movimiento pueden ser utilizadas para el seguimiento de objetivos y navegación autónoma de vehículos. • Imágenes biomédicas. Se pueden aprovechar las técnicas de detección de movimiento para realizar un análisis de los órganos internos como el corazón. • Monitoreo de espacios. Puede tener aplicaciones en la detección de intrusos, revisión de tráfico, etc. • Realidad virtual e interfaces. Se pueden aplicar las técnicas de estimación de movimiento para la interpretación de movimientos faciales en la interpretación de interfaces hombre-máquina. • Deportes. Gracias al estudio del movimiento del cuerpo humano, los deportistas pueden analizar y mejorar sus movimientos para lograr sus objetivos. El movimiento en la imagen, es decir, el movimiento sobre la superficie de proyección del sistema de visión, se debe al movimiento relativo entre el sistema de visión y la escena. A la distribución de los vectores de velocidad aparente asociados a cada punto de la imagen se le denomina flujo óptico [37]. La estimación de movimiento es la operación mediante la cual se estima dicho flujo. Muchos esquemas de estimación de movimiento suponen que la imagen, representada con intensidades de luminosidad, se mueve de manera continua en forma traslacional y que las condiciones de iluminación permanecen constantes.Si esto fuera cierto, el detectar el movimiento local en una imagen resultaría trivial, Conceptos Generales 20 bastando restar punto a punto la distribución de las intensidades de la imagen en dos instantes de tiempo. Por este medio, solamente en las regiones cercanas a las discontinuidades de la distribución de intensidades que se han movido se encontrarán valores distintos a cero. Adicionalmente, se han detectado algunos problemas que influyen en la estimación de movimiento. El problema de apertura [38] surge del hecho de que el movimiento aparente que puede medirse para cualquier porción local de una estructura fuertemente orientada (por ejemplo un borde), es únicamente la componente ortogonal a la orientación local. Si se coloca una ventana sobre una línea recta, la componente del desplazamiento paralelo no puede ser detectado. Otro inconveniente conocido es el problema de oclusión que sucede cuando un objeto que cubre a otro se desplaza dejando al descubierto al objeto ocultado que puede a su vez estar en movimiento. En este caso sucede una discontinuidad en el campo de la distribución de las intensidades de luminosidad. Las técnicas de estimación de movimiento pueden clasificarse en tres grupos: los que se basan en la solución de correspondencia (block-matching), los que se basan en el cálculo del gradiente y los que se basan en una estimación en el dominio de la frecuencia. En las siguientes secciones se describen cada uno de estos grupos. 1.4.1 Block-Matching Los algoritmos basados en correspondencia conocidos como block-matching se han vuelto muy populares debido a su simplicidad, robustez y fácil implementación. El interés en este método fue iniciado por Jain y Jain en 1981 [39]. Para el caso de la codificación de video, más que realizar un análisis del movimiento, detección de objetos u otras aplicaciones posibles, lo que nos interesa es poder aumentar la correlación entre dos imágenes sucesivas y de esta manera mejorar la compresión, lo cual es logrado eficazmente con los métodos basados en correspondencia. La idea es poder representar una imagen de la secuencia con base en la imagen previa y el movimiento ocurrido entre ambas. Como en la práctica esto no siempre es posible, a la codificación se agrega la diferencia entre la imagen actual y la imagen previa con compensación de movimiento. En la estimación de movimiento por block-matching la imagen a ser codificada es dividida en bloques de tamaño m x n asumiendo que todos los píxeles dentro del bloque tienen el mismo vector de desplazamiento. El vector de movimiento correspondiente a cada bloque es estimado realizando una búsqueda a través de un bloque mayor (ventana de búsqueda), con centro en la misma posición en el cuadro anterior como se muestra en la figura 1.12. Figura 1.12. Block-Matching. Conceptos Generales 21 El modelo de movimiento traslacional de bloques s, puede ser simplificado de la siguiente manera: s(n1, n2 , k) = s (n1+d1, n2+d2, k+1) (1.4) En dónde n1,n2 es la posición del bloque en la imagen, k es el índice de la imagen en la secuencia y d1,d2 son las componentes del vector de desplazamiento de dicho bloque o en otras palabras, el vector de movimiento. Un parámetro importante a considerar en estos métodos es el tamaño del bloque. Por un lado, si elegimos un bloque pequeño, éste se adecuará más a los límites de los objetos y nos dará una buena aproximación del movimiento real, aunque no sería práctico debido a que aumentaría la cantidad de información de los vectores de movimiento. Por otro lado si elegimos bloques muy grandes, seguramente cada bloque abarcaría más de un objeto posiblemente con movimientos diferentes lo cual aumentaría el error entre la imagen actual y la imagen previa con compensación de movimiento. Otro parámetro involucrado es el tamaño de la ventana de búsqueda. El elegir una ventana pequeña limita las posibles posiciones a las que se puede desplazar un bloque, mientras que elegir una ventana de búsqueda más grande aumenta el procesamiento necesario para localizar la mejor posición correspondiente del bloque. Entre los métodos de estimación por block-matching varían, además del tamaño del bloque y de la ventana de búsqueda, dos cosas: el procedimiento de búsqueda y el criterio de error o de coincidencia (mínima diferencia absoluta, máxima correlación de cruz, mínimo error cuadrático, etc.). Los procedimientos de búsqueda toman un bloque de la imagen previa del cual se desea conocer su vector de movimiento y se prueba sobre diferentes posiciones dentro de la ventana de búsqueda en la imagen actual para localizar la que tenga la mejor correspondencia de acuerdo a algún criterio de coincidencia. Estos procedimientos van desde la búsqueda exhaustiva en el cual todas las posiciones posibles son evaluadas, hasta algunos que siguen un algoritmo más eficiente como son la búsqueda logarítmica [39], la búsqueda por los tres pasos [40], la búsqueda diamante [41] y la búsqueda en Cruz [42]. Los principales criterios de error o de coincidencia son: • El criterio de mínimo error cuadrático (MSE) Se evalúa una función de la siguiente forma: [ ]∑ ∈ +++−= Bnn kdndnsknns NN ddMSE ),( 2 221121 21 21 21 )1,,(),,(1),( (1.5) donde B denota un bloque de N1 x N2, para un conjunto de vectores candidatos (d1,d2). • El criterio de mínima diferencia absoluta (MAD) De forma similar, se evalúa una función de la siguiente forma: ∑ ∈ +++−= Bnn kdndnsknns NN ddMAD ),( 221121 21 21 21 )1,,(),,(1),( (1.6) • El criterio del conteo de máxima concordancia de píxeles coincidentes (MPC) En esta alternativa, cada píxel dentro del bloque B es clasificado como un píxel concordante o discordante de acuerdo a: Conceptos Generales 22 =),;,( 2121 ddnnT {1 si tkdndnsknns ≤+++− )1,,(),,( 221121 ; 0 si cualquier otro caso} (1.7) donde t es un umbral predeterminado. Entonces, el número de píxeles concordantes dentro del bloque está dado por: ∑ ∈ = Bnn ddnnTddMPC ),( 212121 21 ),;,(),( (1.8) 1.4.2 Estimación basada en el gradiente Los métodos basados en el gradiente son ampliamente utilizados en la estimación de movimiento. Estos métodos asumen que la intensidad de la imagen se conserva a través de una trayectoria espaciotemporal durante el movimiento. La formalización clásica dada por Horn y Schunck [43] es la siguiente. Sean las variaciones espaciotemporales de intensidades representadas por una función derivable l(r,t) y sea la proyección de la trayectoria de movimiento s(t) en el instante t de un punto que se mueve en el espacio. Si asumimos que la intensidad registrada para el punto del objeto físico no cambia a medida que el objeto se mueve, entonces la composición l(r,t) en r = s(t) es constante. Así, derivando respecto a t se obtiene: tllv −=∇⋅ (1.9) donde el vector es el gradiente espacial de l, es la derivada parcial de l respecto a t y v = (vl∇ tl x,vy) es el vector de velocidad asociado a la proyección del punto en el espacio, es decir, la derivada de la trayectoria s(t). Esta ecuación es referida como la ecuación del gradiente y constituye una restricción local del movimiento. La proyección (vn) de v sobre la dirección del gradiente se obtiene fácilmente de (1.9). 2l llv tn ∇ ∇ −= (1.10) Así, conocidas las derivadas espacial y temporal de la imagen, la ecuación del gradiente permite calcular la componente de velocidad en la dirección del gradiente, es decir, la componente ortogonal a la orientación de una estructura localmente unidimensional tal como un borde o una línea. El método basado en el gradiente más conocido es el de Horn- Schunck [43]. Su método impuso una
Compartir