• No se han encontrado resultados

Codiseño de un Decodificador de Video Para el Estandar MPEG-Edición Única

N/A
N/A
Protected

Academic year: 2017

Share "Codiseño de un Decodificador de Video Para el Estandar MPEG-Edición Única"

Copied!
195
0
0

Texto completo

(1)

Monterrey, Nuevo León a

Lic. Arturo Azuara Flores:

Director de Asesoría Legal del Sistema

Por medio de la presente hago constar que soy autor y titular de la obra titulada

, en los sucesivo LA OBRA, en virtud de lo cual autorizo a el Instituto Tecnológico y de Estudios Superiores de Monterrey (EL INSTITUTO) para que efectúe la divulgación, publicación, comunicación pública, distribución y reproducción, así como la digitalización de la misma, con fines académicos o propios al objeto de EL INSTITUTO.

El Instituto se compromete a respetar en todo momento mi autoría y a otorgarme el crédito correspondiente en todas las actividades mencionadas anteriormente de la obra.

(2)

Codiseño de un Decodificador de Video Para el Estandar

MPEG-Edición Única

Title Codiseño de un Decodificador de Video Para el Estandar MPEG-Edición Única

Authors David González López Affiliation ITESM-Campus Monterrey Issue Date 2006-05-01

Item type Tesis

Rights Open Access

Downloaded 19-Jan-2017 11:04:16

(3)
(4)

INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY

CAMPUS MONTERREY

PROGRAMA DE GRADUADOS DE LA DIVISIÓN DE TECNOLOGÍAS DE INFORMACIÓN Y ELECTRÓNICA

CODISENO DE UN DECODIFICADOR DE VIDEO PARA EL ESTÁNDAR MPEG

TESIS

PRESENTADA COMO REQUISITO PARCIAL PARA OBTENER EL GRADO ACADÉMICO DE:

MAESTRO EN CIENCIAS DE LA INGENIERÍA ELECTRÓNICA CON ESPECIALIDAD EN SISTEMAS ELECTRÓNICOS

POR

DAVID GONZÁLEZ LÓPEZ

(5)
(6)
(7)

INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY

CAMPUS MONTERREY

PROGRAMA DE GRADUADOS DE LA DIVISIÓN DE TECNOLOGÍAS DE INFORMACIÓN Y ELECTRÓNICA

CODISENO DE UN DECODIFICADOR DE VIDEO PARA EL ESTÁNDAR MPEG

TESIS

PRESENTADA COMO REQUISITO PARCIAL PARA OBTENER EL GRADO ACADÉMICO DE:

MAESTRO EN CIENCIAS DE LA INGENIERÍA ELECTRÓNICA CON ESPECIALIDAD EN SISTEMAS ELECTRÓNICOS

POR

DAVID GONZÁLEZ LÓPEZ

(8)
(9)

INSTITUTO TECNOLÓGICO Y DE ESTUDIOS

SUPERIORES DE MONTERREY

CAMPUS MONTERREY

PROGRAMA DE GRADUADOS DE LA DIVISIÓN DE TECNOLOGÍAS DE INFORMACIÓN Y ELECTRÓNICA

Los miembros del comité de tesis recomendamos que la presente tesis de David González López sea aceptada como requisito parcial para obtener el grado académico

de Maestro en Ciencias en:

Ingeniería Eléctronica

Especialidad en Sistemas Electrónicos

(10)
(11)

A mis padres Antonio y Teresa

(12)
(13)

Reconocimientos

Antes que nada a Dios por permitirme estar aquí.

A mis padres Antonio y Teresa y mi hermana Maria del Carmen por todos los años de enseñanzas y de buenos ejemplos, por los valores que forjaron en mi y por todo el amor que me han regalado.

A mi Asesor, el doctor Alfonso Ávila Ortega por todo su apoyo, por la enorme paciencia que tuvo conmigo y por la amistad que me brindó estos casi dos años.

A mis sinodales, el doctor Sergio Ornar Martínez Chapa y el doctor Graciano Dieck Assad por su paciencia, comentarios y por compartir conmigo su conocimiento.

Al resto de mi familia que siempre han estado al pendiente de mi y apoyándome.

A mis amigos de siempre, Lee Gunther, Roberto y Abraham por mantener la amistad a pesar del tiempo y de todo lo demás.

A mis amigos de carrera, Daniel, Alejandro, Fernando, Osiris, Jorge, Ricardo, Ar-turo, Kostia, Javier y Alejandro por todos los momentos que vivimos y viviremos, por su ciega amistad y por todos los recuerdos.

Finalmente, a mis amigos de la maestría Misael, Farid, Jorge, Rogelio, Luis, Sal-vador y Rodrigo por toda la compañia en los momentos de batalla y en los momentos alegres también, por hacer que mi estancia en monterrey haya valido la pena.

DAVID GONZÁLEZ LÓPEZ

(14)
(15)

Resumen

La creciente necesidad de representar el video digital de manera compacta ha gen-erado el desarrollo de diversos estándares de compresión digital entre los que destaca

MPEG. El rápido desarrollo tecnológico ha propiciado que las aplicaciones en tiempo

real sean parte de nuestra vida cotidiana. Para lograr un sistema con respuesta en tiempo real es indispensable procesar datos de la manera más rápida posible, lo cual es un reto en tareas tales como la descompresión de secuencias de video digital MPEG,

ya que el procesamiento digital requerido para este fin es complejo y extenso.

A lo largo de esta tesis se presentará el diseño de un sistema embebido que com-bina el software y el hardware para lograr la tarea de reducir el tiempo necesario para decodificar una secuencia MPEG; dicho sistema implementa en hardware los módulos encargados de la realización de la transformada discreta coseno para señales en dos dimensiones (IDCT), y la decodificación de longitud variable (VLD), mientras que se deja para el software el control del flujo de datos así como algunos otros procesamientos de la señal no demasiado complejos en el sentido computacional.

El sistema propuesto utiliza un procesador PowerPC con arquitectura de 32 bits que se encuentra incrustado en un FPGA de alta capacidad, lo cual se aprovecha para sintetizar ahí mismo las arquitecturas de hardware diseñadas para los bloques previ-amente mencionados. Las arquitecturas de hardware fueron especialmente diseñadas para aprovechar al máximo el sistema de interrupciones del procesador, dichas arqui-tecturas manejan registros de entrada y salida de 64 bits.

(16)
(17)

índice general

Reconocimientos VII

Índice de tablas xv

Índice de figuras XVII

Capítulo 1. Introducción 1

1.1. Justificación 1 1.2. Definición del problema 2 1.3. Objetivo 2 1.4. Contribución y Alcance 3 1.5. Organización de la tesis 4

Capítulo 2. Antecedentes 5

2.1. Conceptos de codiseño hardware-software 5 2.1.1. Distinción de los rasgos de los sistemas digitales 6 2.1.2. Diseño de sistemas hardware/software 8 2.2. El procesador PowerPC 8 2.2.1. La arquitectura del PowerPC 9 2.2.2. Características de software del PowerPC 10 2.2.3. La organización del hardware del PowerPC 11 2.3. Video 14 2.3.1. Conceptos Básicos sobre video 14 2.3.2. Representaciones para video 16 2.3.3. Estándares para el video digital 17 2.4. Compresión de señales bidimensionales 19 2.4.1. Compresión sin pérdidas 23 2.4.2. Compresión con pérdidas 24 2.5. Trabajos previos relacionados 25

Capítulo 3. Los estándares MPEG 27

(18)

3.1.1. Introducción a MPEG-1 29 3.1.2. Perfiles y niveles de MPEG-2 30 3.2. La compresión de video MPEG 31 3.2.1. Compresión por codificación espacial 32 3.2.2. Compresión por codificación temporal 36 3.3. Tipos de imágenes codificadas en MPEG 39 3.4. La sintaxis de MPEG 40 3.4.1. La capa de secuencia 41 3.4.2. La capa de grupo de imágenes 42 3.4.3. La capa de imagen 43 3.4.4. La capa de rebanada (slice) 43 3.4.5. La capa de macrobloque 44 3.4.6. La capa de bloque 44 3.5. El decodificador MPEG 45

Capítulo 4. Codiseño del algoritmo MPEG 47 4.1. El Software 47 4.1.1. Modularidad de los elementos de software 50 4.1.2. Los diseños de software para la transformada coseno inversa . . 50 4.1.3. Comentarios de diseño sobre el software 51 4.2. El Hardware 52 4.2.1. Hardware para la IDCT 52 4.2.2. Hardware para VLD 63 4.3. La interfaz Hardware-Software 71

Capítulo 5. Resultados 73 5.1. Contexto experimental 73 5.1.1. La tarjeta de desarrollo 75 5.1.2. El software de desarrollo 76 5.1.3. La estructura experimental 76 5.2. Resultados de la simulación en Modelsim para las arquitecturas de

Hard-ware diseñadas 78 5.2.1. Simulaciones para el bloque de cálculo de la trasformada coseno

inversa bidimensional 78 5.2.2. Simulaciones para la arquitectura completa propuesta para la

transformada coseno inversa bidimensional 81 5.2.3. Simulaciones para el bloque de cálculo de la decodificación de

longitud variable VLD 83 5.2.4. Simulaciones para la arquitectura completa propuesta para la

(19)

5.3. Resultados de la implementación software-software (Sw/Sw) 86 5.3.1. Resultados al implementar en software el algoritmo por definición

para la transformada coseno discreta bidimensional inversa . . . 87 5.3.2. Resultados al implementar en software el algoritmo de Chen para

la transformada coseno inversa 89 5.4. Resultados de la implementación hardware-software (Hw-Sw) 91 5.4.1. Tiempos de ejecución de las arquitecturas propuestas en hardware 91 5.4.2. Mejoras de la implementación Hw-Sw respecto a la implementación

Sw-Sw 92 5.4.3. Recursos del FPGA utilizados para los módulos de hardware

diseñados 96 5.5. Resultados de la decodificación de secuencias MPEG 98 5.6. Discusión de resultados 103

Capítulo 6. Conclusiones y trabajo futuro 105 6.1. Conclusiones 105 6.2. Trabajo futuro 106

Apéndice A. Codigo en C para el decodificador MPEG 107

A.l. El programa principal 107 A.2. La librería mpeg_decoder.h 109 A.3. La librería bit_check.h 131 A.4. La librería data_read.h 133 A.5. La librería inv_cos_transf.h 136

Apéndice B. Código VHDL para los módulos de hardware 139

B.l. Código para el bloque de IDCT 139

B.l.l. Codigo del bloque superior de la arquitectura 139 B.1.2. Codigo de diseño para el modulo superior de calculo de la IDCT 140 B.l.3. Codigo de diseño para el modulo separador_datos 141 B.l.4. Codigo de diseño para el modulo colector_datos 143 B.l.5. Codigo del core generator para la envolvente de cálculo de la IDCT145 B.2. Código para el bloque de VLD 146 B.2.1. Codigo del bloque superior de la arquitectura 146 B.2.2. Codigo del bloque superior del bloque de calculo de VLD . . . . 148 B.2.3. Diseño de los registros de la arquitectura VLD 150 B.2.4. Diseño del "barrel shifter" de la arquitectura VLD 151 B.2.5. Diseño del acumulador de la arquitectura VLD 151 B.2.6. Diseño de la entidad estructural para la obtención de tablas de

(20)

B.2.7. Diseño de la entidad de comportamiento para la selección de tablas de la arquitectura VLD 152

Apéndice C. Código en C y MATLAB para el tratamiento de las imágenes decodificadas 157

C.l. Código en C 157

C.l.l. Codigo para la conversión del formato YUV 4:2:0 de salida de las imágenes 157 C.2. Código en MATLAB 160

C.2.1. Codigo para mostrar las imágenes decodificadas con el decodifi-cador diseñado 160 C.2.2. Codigo para mostrar las imágenes decodificadas con el

decodifi-cador de la universidad de Delft, Holanda 161 C.2.3. Codigo para mostrar las imágenes decodificadas con el

decodifi-cador del grupo de trabajo especializado en mpeg 162

Bibliografía 163

(21)

índice de tablas

2.1. Estándares para desplegado de video digital 17 2.2. Estándares de compresión de video digital 19 2.3. Aplicaciones para las cuales es necesaria la compresión 20

3.1. Perfiles y niveles en MPEG-2 30 3.2. Ejemplo de la codificación de longitud variable 36

5.1. Códigos de longitud variable para vectores de movimiento y coeficientes de luminosidad definidos en MPEG 83 5.2. Características de las secuencias MPEG utilizadas para la obtención de

los resultados de desempeño 87 5.3. Medidas visuales (subjetivas) de las secuencias 88 5.4. Resultados de la implementación Sw-Sw 89 5.5. Tiempos promedio de ejecución de adjust_stream y de la interrupción

completa para VLD en el PowerPC 93 5.6. Tiempos de ejecución y reducción para las implementación Hw-Sw contra

Sw-Sw de la IDCT 94 5.7. Tiempos de ejecución y reducción para las implementación Hw-Sw contra

Sw-Sw del módulo VLD 94 5.8. Porcentajes de la implementación Hw-Sw 96 5.9. Recursos del FPGA Virtex II Pro utilizados en las arquitecturas de

hard-ware propuestas 96 5.10. Tiempos de ejecución y reducción para las implementación Hw-Sw contra

(22)
(23)

Índice de figuras

2.1. Organización del hardware del PowerPC 405 12 2.2. Tipos de escaneo para imágenes. a) escaneo progresivo. b) escaneo

en-trelazado 16 2.3. Formato de imagen 4:2:0 18 2.4. Formato de imagen 4:2:2 18 2.5. Formato de imagen 4:4:4 19 2.6. Esquema general de compresión 21 2.7. Clasificación de los métodos de compresión para imágenes y video . . . 22 2.8. Modelo a bloques para la codificación sin pérdidas y con pérdidas . . . 25

3.1. Diagrama que muestras a MPEG como un sistema asimétrico 28 3.2. Los tipos de redundancia en las secuencias de video. a) Redundancia

espacial y b) Redundancia temporal 31 3.3. La concentración de energía al aplicar la transformada coseno discreta.

(a) Imagen de prueba. (b) Transformada coseno discreta 33 3.4. Codificación temporal diferencial. a)Esquema para la codificación b)

Es-quema para la decodificación 37 3.5. Objetos visto espacio-temporalmente. El eje óptico sólo es paralelo al del

tiempo cuando no existe movimiento en el objeto 38 3.6. El vector de movimiento para un segmento de la imagen en una secuencia

MPEG-1 38 3.7. Diagrama de bloques para la codificación temporal 39 3.8. Diagrama de bloques simplificado para la codificación con base en MPEG 39 3.9. Diagrama esquemático de la forma de codificación de los tres tipos de

imágenes en MPEG 40 3.10. Capas definidas para el estándar MPEG y jerarquías de las mismas. . . 41 3.11. Comparación de la secuencia de video antes de ser codificada, al ser

transmitida y al ser desplegada 42 3.12. La capa de imagen y su división en capas de rebanadas (slices),

(24)

3.14. Diagrama a bloques para el almacenamiento provisional de datos a la entrada del decodificador 45 3.15. Diagrama a bloques del proceso de decodificación MPEG 46 3.16. Diagrama de bloques del sistema completo MPEG 46

4.1. Funciones utilizadas para la decodificación MPEG 48 4.2. Complejidad y modularidad de las funciones desarrolladas en software. 50 4.3. Diagrama de mariposa para el cálculo de la transformada coseno inversa

para un vector de ocho coeficientes 51 4.4. Estructura básica del motor de la IDCT unidimensional 53 4.5. Diagrama de bloque de la entidad para la IDCT 54 4.6. Diagrama a bloques del esquema de más alto nivel para la arquitectura

completa de la IDCT 55 4.7. Diagrama a bloques para la arquitectura de la entidad "separador_datos". 56 4.8. Diagrama de estados para la máquina de estados finitos utilizada en la

entidad Separador_datos 59 4.9. Diagrama de estados secundario para el estado 13 de la máquina de

estados finitos utilizada en la entidad Separador_datos 60 4.10. Diagrama a bloques para la arquitectura de la entidad Colector_datos. . 61 4.11. Diagrama de estados para la máquina de estados finitos utilizada en la

entidad Colector_datos 62 4.12. Arquitectura para decodificación de longitud variable presentada por

Lei-Sun para decodificar una palabra por cada ciclo de reloj 64 4.13. Diagrama a bloques del esquema de más alto nivel para la arquitectura

completa de VLD 65 4.14. Diagrama de estados para la máquina de estados finitos utilizada en la

entidad superior encargada de la decodificación de longitud variable. . . 66 4.15. Comparación de la secuencia de video antes de ser codificada, al ser

transmitida y al ser desplegada 67 4.16. Diagrama de bloques de la arquitectura de la entidad encargada del

motor de decodificación de longitud variable 69 4.17. Diagrama de bloques de la conexión de cada uno de los componentes del

diseño a los buses PLB y OPB 71

5.1. Metodología para la experimentación 74 5.2. Fotografía de la tarjeta de desarrollo XUP Virtex-II Pro Development

System con el módulo de DDRAM externo conectado . 75 5.3. Diagrama a bloques de la tarjeta de desarrollo XUP Virtex-II Pro

(25)

5.5. Diagrama a bloques del flujo de Procesos llevados a cabo durante la prueba y verificación del decodificador MPEG 77

5.6. Simulación del cálculo de la IDCT. a)Inicio de la entrada de datos (a manera de renglones). b) Continúa la entrada de datos (se muestra hasta el último dato distinto de cero). c), d) y e) Resultados de la IDCT . . . 79 5.7. Resultados de la simulación de la matriz de ejemplo con el algoritmo por

definición para la IDCT 80 5.8. Resultados de la simulación de la matriz de ejemplo con el algoritmo

predifinido en Matlab para la IDCT bidimensional 81

5.9. Diagrama de tiempos para la arquitectura con registros de 64 bits com-pleta de la IDCT (algunos valores se muestran en hexadecimal o decimal para su mejor comprensión) 82

5.10. Simulación que permite observar con claridad los cambios en las señales críticas de la arquitectura para la IDCT 82

5.11. Simulación de la decodificación de longitud variable VLD. a)Diagrama de tiempos para el código de luminosidad b) Diagrama de tiempos para el código de vectores de movimiento 84

5.12. Diagrama de tiempos e indicadores de las principales señales del módulo decodificador de longitud variable 85

5.13. Simulación expandida de la arquitectura propuesta para la decodificación de longitud variable 86

5.14. Gráfica de pastel con los porcentajes de tiempo promedio para el decodi-ficador con el algoritmo IDCT original 88

5.15. Gráficas de pastel para los resultados de la implementación Sw-Sw. (a) Resultados para las secuencias I. (b) Resultados para las secuencias IP. (c) Resultados para las secuencias IPB. (d) Resultados para todas las secuencias 90

5.16. Gráficas de pastel para los resultados de la implementación Hw-Sw. (a) Resultados para las secuencias I. (b) Resultados para las secuencias IP. (c) Resultados para las secuencias IPB. (d) Resultados para todas las secuencias 97

(26)

5.18. Resultados comparativos para la secuencia # 8 . (a) Cuadro obtenido con el decodificador implementado. (b) Cuadro obtenido con el decodificador del grupo de software MPEG [34]. (c) Cuadro obtenido con el decodifi-cador de la Universidad de Delft[32]. (d) Porcentaje de similitudes en las imágenes. (e) Imagen diferencia 100 5.19. Resultados comparativos para la secuencia #7. (a) Cuadro obtenido con

el decodificador implementado. (b) Cuadro obtenido con el decodificador del grupo de software MPEG[34]. (c) Cuadro obtenido con el decodifi-cador de la Universidad de Delft[32}. (d) Porcentaje de similitudes en las imágenes. (e) Imagen diferencia 101 5.20. Resultados comparativos para la secuencia #4 . (a) Cuadro obtenido con

(27)

Capítulo 1

Introducción

El codiseño de sistemas electróncos de propósito específico es una de las áreas de mayor crecimiento de la electrónica. Tradicionalmente las técnicas de diseño para hardware y para software se han consideraron independientes; a manera de ejemplo se tiene el caso de los sistemas para el procesamiento de señales que, históricamente, han sido diseñados especificando el hardware y subsecuentemente haciendo el software para él.

Debido al crecimiento en la complejidad de los sistemas electrónicos modernos hoy en día los diseñadores tienen el reto de reducir el tiempo de desarrollo y los costos del mismo. Esta necesidad de lograr mejoras cada vez más palpables ha llevado al uso de altos niveles de abstracción como es el diseño a nivel de sistema. Para tener éxito en esquemas de diseño tan abiertos como estos es necesario y hasta obligatorio recurrir a herramientas que permitan manejar de una forma simultánea y eficiente el software y el hardware. Dichas herramientas nos permiten modelar, hacer particiones, simular y sintetizar el sistema completo, esto es, en sí, lo que se le conoce con el nombre de

codiseño hardware/software.

1.1. Justificación

(28)

Numerosos estándares de compresión de imágenes y video han sido propuestos por diferentes grupos de expertos en la materia, sin duda alguna uno de los más exitosos es el que el Grupo de Expertos en Imágenes en Movimiento (MPEG por sus siglas en inglés) han desarrollado y han denominado de manera natural como mpeg. El grupo

mpeg hasta ahora ha realizado tres niveles o versiones de su estándar: 1, mpeg-2, mpeg-4 y el grupo se encuentra trabajando en el desarrollo del cuarto resultado, a saber, mpeg-7.

Ante la creciente demanda de más y mejores servicios multimedia, las aplicaciones de tiempo real se han convertido en tareas con mucho campo para la investigación, el desarrollo y la producción de sistemas digitales de video. La necesidad de decodificar una secuencia de video en un tiempo cada vez más corto y que permita la interacción con el usuario en tareas como la edición en línea, la búsqueda rápida de escenas así como la reproducción de secuencias en cámara lenta y super lenta sin perder calidad de imagen lleva a pensar en el concepto de codiseño como una alternativa muy fuerte para atacar este problema.

La implementación de un sistema decodificador de video para los estándares mpeg

basándose en una partición de software y hardware que presente beneficios considerables en tiempo de ejecución, espacio del diseño y hasta en potencia consumida por el circuito es la principal motivación del trabajo de investigación que se está presentando.

1.2. Definición del problema

El estándar de video MPEG comprime señales de video digital aprovechando la correlación espacial y temporal propia de dichas señales. Dicho esquema de compresión está basado primordialmente en la aplicación de técnicas de procesamiento digital de señales que resultan "costosas" en el tiempo de ejecución que se necesita para realizarlas en software. En este trabajo de investigación se propone el desarrollo de un sistema particionado en hardware y software que implemente en hardware aquellas técnicas de codificación con altas latencias en software, con el fin de reducir significativamente el tiempo de ejecución del sistema global. Dicha partición deberá presentar en hard-ware arquitecturas eficientes que justifiquen el costo que conlleva la implementación del sistema en un FPGA.

1.3. Objetivo

Se pretende realizar el diseño completo del decodificador de video mpeg-1 me-diante una partición hardware/software que presente en hardware los módulos de la

transformada coseno inversa, asi como el bloque correspondiente a la decodificación de

(29)

propuesto tenga mejoras en tiempo de ejecución del sistema conjunto sin esto significar por ningún motivo pérdida en la calidad de la imagen o secuencia de imágenes que conforman los videos decodificados.

1.4. Contribución y Alcance

Algunos esfuerzos en materia de codiseño para decodificadores de video basados en diversos estándares se encuentran en la literatura. En [11] y en en [13] se concentran los esfuerzos en MPEG2; en el primero de ellos se realiza un codiseño mientras que en el último se presenta un diseño con optimizaciones en software. En [12] el estándar en el que se enfoca el trabajo es MPEG, y se presenta un estudio detallado sobre consumo de potencia. En [24] se detallan pormenores de la etapa de diseño VLSI para un decodificador MPEG2. La gran mayoría de ellos presenta análisis del consumo de ciclos de reloj o tiempos de ejecución parciales y totales así como de consumo promedio de energía. Sin embargo, no se encontró referencia a un trabajo de codiseño en el área de video digital que enfocara sus esfuerzos al estándar mpeg-1 y que, además de prestar atención a los conceptos claves de tiempo de ejecución y consumo de energía no dejara de lado el compromiso que existe entre una buena calidad de video y una rápida decodificación del mismo.

Este trabajo de investigación pretende contribuir al estado del arte al presentar un diseño propio en la partición referente al software y utilizando arquitecturas probadas como óptimas en la partición de hardware para las etapas de la transformada coseno

inversa y la decodificación de longitud variable y presentar un análisis de resultados

muy apegado al compromiso de calidad de video-mejoras en tiempo de ejecución.

El diseño original del software es en sí mismo una contribución ya que se utilizan técnicas de ingeniería de software para sistemas embebidos, las cuales tienen como principales restricciones la cantidad de memoria utilizada y el número de ciclos de reloj que las operaciones tardan en efectuarse. Mediante el uso de operadores a nivel de bits las operaciones en las que intervienen máscaras, divisiones y multiplicaciones por múltiplos de dos resultan ser extraordinariamente rápidas en tiempo de ejecución además de que no consumen recursos excesivos en el procesador.

El Alcance de esta tesis queda establecido por el propio alcance del estándar

mpeg-1 (mpeg-2 MP@LL, perfil principal en bajo nivel) siendo totalmente directa la

(30)

1.5. Organización de la tesis

Este trabajo de tesis se presenta organizado en seis capítulos de la siguiente man-era. El capítulo dos presenta de manera general los antecedentes y conceptos básicos que permitirán al lector comprender de manera más ciará y rápida los conceptos y las definiciones propias del estándar de compresión mpeg. Además se presentan también los conceptos básicos sobre la arquitectura del procesador Power PC sobre el cual fue probado el diseño así como algunas nociones escenciales sobre procesamiento digital de video y compresión del mismo. El capítulo tres presenta las características clave y primordiales sobre las que descansan los estándares mpeg. Se hace especial incapié en las características propias de mpeg-1 asi como sus principales diferencias con otros estándares de compresión de video definidos tanto por el mismo grupo de trabajo como por otros expertos en el área. En este capítulo se detallan cada uno de los bloques princi-pales que conforman el decodificador de video por definición "cumplidor". El capítulo cuatro describe detalladamente cada uno de los bloques que se implementaron para las particiones de hardware y software; se presentan las arquitecturas seleccionadas, los motivos por los que fueron seleccionadas y algunos detalles importantes del diseño. En cuanto a la partición de software se hace un bosquejo del programa decodificador, además se comentan también algunos detalles interesantes que se presentaron durante el desarrollo de la etapa de software. En el capítulo cinco se presentan todos y cada uno de los resultados obtenidos de la implementación del codiseño en un FPGA de la compañía Xilinx de la familia Virtex II Pro el cual cuenta con el procesador Power PC embebido dentro del mismo chip. En este capítulo se presentan los resultados de los perfiles de desempeño (profilings) que se llevaron a cabo para la obtención de los resul-tados del codiseño; además se presentan los resulresul-tados de las simulaciones realizadas en distintos ambientes de desarrollo como Modelsím de Mentor Graphics, o Matlab de

(31)

Capítulo 2

Antecedentes

En este capítulo se introducen algunos conceptos fundamentales sobre los cuales se sustentó este trabajo de tesis. Se presentan las ideas fundamentales de temas como el codiseño hardware-software, las características primordiales del procesador embe-bido PowerPC así como nociones básicas de video digital y de compresión de señales bidimensionales. Finalmente el capítulo dedica una sección a la descripción de algunos trabajos realizados que tienen relación con lo realizado en la presente tesis.

2.1. Conceptos de codiseño hardware-software

La mayoría de los diseños de la ingeniería pueden ser vistos como sistemas, esto es, conjuntos de varias partes que al combinar sus operaciones realizan funciones útiles. Dichos componentes pueden ser de naturaleza heterogénea y su interacción puede ser regulada para propósitos desde muy simples hasta muy complejos. La mayoría de los sistemas en la actualidad son electrónicos o poseen componentes electrónicas, y más aun se trata de componentes predominantemente digitales.

La mayoría de dichos sistemas digitales actuales son programables, de este modo consisten de componentes de hardware y software. La importancia de dichos sistemas puede ser medida en términos que son específicos a su dominio de aplicación, como por ejemplo su desempeño, diseño, costo de manufactura y facilidades de programación, por supuesto todas estas características dependen tanto del software como del hardware asociado a ellas. El Codiseño Hardware/Software significa lograr los objetivos planteados a nivel del sistema {system-level) explotando la sinergia del hardware y el software a través de su diseño concurrente [25].

El reciente crecimiento en el interés para el codiseño de hardware y software se debe a la introducción al mercado de diversas herramientas de diseño asistido por computadora (CAD) para dicho fin. Programas como Seamless de Mentor Graphics, EDK y XPS de Xilinx juegan un papel muy importante en el proceso de codiseño.

(32)

más pequeñas a nivel de mascarillas así como la necesidad de amortizar el diseño de hardware sobre grandes volúmenes de producción. Esto sugiere la idea de utilizar soft-ware para diferenciar productos basados en la misma plataforma de hardsoft-ware. Debido a la complejidad del hardware y el software su reutilización es clave para la rentabilidad comercial del sistema. Asi, se vuelven viables como núcleos de procesador (processor

cores el diseño de complejas macroceldas que implementan procesadores completos con

conjunto de instrucciones. La estandarización en el uso de estos núcleos (cores) o de procesadores específicos lleva a liberar ciertas capas de software y ponerlas disponibles, dichas capas pueden ir desde sistemas operativos hasta software embebido para aplica-ciones particulares. Como resultado de esto, una cada vez mayor cantidad de software se encuentra en los chips semiconductores, a lo cual usualmente se le refiere como sistemas en silicio. De esta manera el hardware (cores) y el software (microkernels) pueden ser vistos como activos con alto valor intelectual.

La reciente introducción de la tecnología de los arreglos de compuertas program-ables en el campo (FPGAs) ha borrado un poco la distinción entre hardware y soft-ware. Tradicionalmente el hardware solía ser conFigurado durante la fabricación. Las funciones de un circuito de hardware podían ser elejidas mediante la ejecución de un programa, y mientras que el programa podía ser modificado aún durante la ejecución del mismo la estructura del hardware permanecía invariante. Con la tecnología program-able en campo es posible ahora configurar a nivel de compuerta las interconecciones de los circuitos de hardware aún después de su fabricación. Esta flexibilidad ha abierto el campo a nuevas aplicaciones en circuitos digitales, y por consiguiente han aparecido nuevos problemas en el codiseño hardware/software.

El codiseño hardware/software es una disciplina compleja que se construye y for-talece gracias a los avances en materia de compilación de software, arquitecturas com-putacionales y la tecnología de muy grande escala de integración (VLSI). El codiseño es percibido como un problema muy importante, pero el campo de estudio se ha fragmen-tado dado que la mayoría de los esfuerzos se aplican a problemas de diseño específicos. Asi pues, el codiseño tiene una problemática distinta de acuerdo al contexto en que se aplica.

2.1.1. Distinción de los rasgos de los sistemas digitales

(33)

2.1.1.1. Dominios de aplicación

Un sistema digital puede proveer un servicio como una unidad completa o como parte de un sistema más grande. Ejemplo de la primera clase de sistemas es una com-putadora personal. Un sistema de control digital para algún tipo de mecanismo es un ejemplo para la segunda clase de sistemas. A los sitemas que caen en el segundo grupo usualmente se les conoce como sistemas embebidos (embedded systems).

Los sistemas digitales pueden ser clasificados de acuerdo a su principal dominio de aplicación. Ejemplos de sistemas completos (no embebidos) son los sistemas de proce-sado de información, desde computadoras portátiles hasta emuladores y sistemas de prototipado. Las aplicaciones de los sistemas embebidos están omnipresentes en la in-dustria (control de plantas y robots por ejemplo), en productos de uso personal como los dispositivos inteligentes para el hogar, en vehículos, aplicaciones de las telecomuni-caciones y en sistemas terrestres y ambientales de defensa.

2.1.1.2. Grado de programabilidad

En la mayoría de los sistemas digitales, el hardware es programado por algún programa de software para realizar algunas funciones deseadas. De esta forma el nivel de abstracción usado para los modelos programables es el instrumento de interacción entre hardware y software. Existen dos importantes cuestiones relacionadas a la pro-gramación: 1) quien tiene acceso a la programación del sistema y 2) el nivel tecnológico

en el cual se efectúa la programación.

1. Acceso a la programación: pueden tener alguna o ninguna opción de programación

del sistema los usuarios finales del sistema, los desarrolladores de aplicaciones, los integradores del sistema y los fabricantes de componentes.

2. Niveles de programación: nivel de aplicación, nivel de instrucción y nivel de

hard-ware.

Los circuitos reconfigurables son el límite para la programación a nivel de hard-ware. La tecnología programable en el campo permite configurar las interconecciones entre bloques lógicos y determinar su personalidad. La reconfiguración puede ser global o local y se puede aplicar más de una vez. Mientras que la microprogramación permite reconfigurar la unidad de control, los sistemas reconfigurables pueden ser modificados tanto en su unidad de control como en su camino de datos (datapath).

2.1.1.3. Rasgos de implementación

(34)

2.1.2. Diseño de sistemas hardware/software

El diseño de un sistema hardware/software involucra modelado, validación e

im-plementación. Se conoce como modelado el proceso de conceptualizar y refinar las

especificaciones y producir un modelo de hardware y de software. La validación es el proceso en el que se logra un cierto nivel de confiabilidad del sistema, esto es, que el sistema va a funcionar como se planteó en principio. Se le conoce como implementación al proceso de realización física del hardware (através de la síntesis) y del software eje-cutable (através de la compilación).

El proceso de modelado puede ser homogéneo o heterogéneo. En el primer caso un lenguaje de modelado (el lenguaje de programación C) se utiliza para representar tanto las porciones de hardware como las de software. El problema de la partición de hardware y software consiste en encontrar aquellas partes del modelo mejor implementadas en hardware y aquellas mejor implementadas en software. La partición puede ser elegida por el diseñador, con sucesivo refinamiento y correcciones al modelo inical, o puede ser escogida por una herramienta CAD.

Cuando se utiliza el estilo de modelado heterogéneo, la partición hardware/soft-ware generalmente está delimitada por el propio modelo, debido a que el hardhardware/soft-ware y el software deben ser modelados en distintos lenguajes. Sin embargo, es posible que los diseñadores quieran explorar implementaciones alternativas de algunos componentes.

Entre más complejos se vuelven los sitemas, la validación es más necesaria para asegurar el correcto funcionamiento y desempeño requerido en la implementación de los sistemas. Más aún, la validación tiene distintos rasgos de acuerdo al campo de aplicación.

La implementación de un sistema hardware/software puede involucrar diversas sub-tareas, la mayoría de ellas relacionadas con la síntesis de hardware y la compilación de software. De gran importancia resultan las características del sistema que forman la frontera entre el hardware y el software, dos de estas principales características son: l)la elección de la partición y la colocación de funciones del sistema en hardware y software y 2) la agendarización de las operaciones de hardware, instrucciones del programa y procesos de software. Estas dos características presentan el donde y el cuando deben ser implementadas las funciones del sistema, respectivamente.

2.2. El procesador PowerPC

(35)

2.2.1. La arquitectura del PowerPC

La arquitectura del PowerPC es de 64 bits con subconjunto de 32 bits. Los diver-sos rasgos de la arquitectura están definidos en tres niveles: arquitectura de juego de instrucciones de usuario (user instruction-set architecture), arquitectura de ambiente

virtual (virtual environment architecturae) y arquitectura de ambiente operativo

(oper-ating environment architecture). Estos niveles proveen flexibilidad permitiendo grados

de compativilidad de software através de un amplio rango de implementaciones. El procesador PowerPC 405 es una implementación de la arquitectura de ambiente embebido PowerPC. Esta arquitectura esta optimizada para controladores embebidos.

La siguiente es un lista de las principales características de la arquitectura de

ambiente embebido PowerPC:

• Manejo de memoria optimizado para ambientes de software embebido.

• Instrucciones de manejo de cache para optimizar el desempeño y el control de memoria en aplicaciones complejas que son gráfica y numéricamente intensivas. • Atributos de almacenamiento para el control de comportamientos memoria-sistema. • Registros de propósito específico para el contro en el uso de recursos de

depu-ración, temporizadores, interrupciones, modos de almacenaje real, facilidades de manejo de memoria entre otros.

• Espacio de direccionamiento dispositivo-control-registro para el manejo de periféri-cos en el chip tales como controladores de memoria.

• Estructura de interrupciones de dos niveles e instrucciones para el control de interrupciones.

• Recursos de temporización múltiple.

• Recursos de depuración que habilitan funciones de depuración en hardware y en software tales como puntos de ruptura de instrucciones (instruction breakpoints), puntos de ruptura de datos (data breakponints) y ejecución paso a paso (program single-stepping).

El ambiente virtual del microprocesador define rasgos de la arquitectura que ha-bilitan a los programas de aplicación a crear o modificar código, manejar coherencia en almacenamiento y optimizar el desempeño de accesos a memoria. Define también los modelos de cache y memoria y algunas rutinas de la libreria del sistema.

(36)

2.2.2. Características de software del PowerPC

Este procesador facilita las aplicaciones embebidas de punto fijo con alto de-sempeño y bajo consumo de energía. Las características primordiales de software que el procesador tiene son:

• Una unidad de ejecución de punto fijo totalmente compatible con el PowerPC UISA.

• Extensiones a la arquitectura embebida de ambiente que proveen soporte adicional a las aplicaciones de sistemas embebidos.

• Características que mejoran el rendimiento, como: • Predicción estática de saltos.

• Segmentación de cinco etapas con un solo ciclo de ejecución para la mayoría de las instrucciones, incluyendo cargas y almacenamientos.

• Instrucciones para multiplicación acumulación.

• Multiplicaciones/divisiones en hardware para una rápida aritmética entera. • Manejo mejorado de cadenas y palabras múltiples.

• Soporte para cargas y almacenamientos no alineados a arreglos de cache, memoria principal y memoria en chip (On-chip memory OCM).

• Latencia de interrupciones minimizadas. • Cache de instrucciones integrado.

• Cache de datos integrado.

• Suporte para memoria en chip (on-chip memory OCM) que es capaz de tener un desempeño de acceso a memoria idéntico a un acierto en el cache.

• Manejo de memoria flexible.

• Soporte para depuración mejorada con operadores lógicos. • Soporte de manejo de energía avanzado.

El software que se ejecuta en el PowerPC lo puede hacer en uno de los dos modos:

privilegiado o usuario. El modo privilegiado permite a los programas tener acceso a

(37)

El procesador cuenta con dos modos de mapeo de direcciones: normal y virtual. El modo normal direcciona la memoria física de forma directa. El modo virtual direcciona memoria virtual y las direcciones de memoria virtual son mapeadas por el procesador a la memoria física; esto permite a los programas acceder espacios de direcciones más grandes que pudieran ser implementados en el sistema.

Los modos de direccionamiento del procesador son básicamente tres:

• Indirecto a registro con índice escalar. En este modo se almacena una dirección base en un registro mientras que el desplazamiento se especifica con un valor escalar dentro de la instrucción.

• Indirecto a registro con índice. Se almacena una dirección base en un registro y el desplazamiento se almacena en otro registro.

• Indirecto a registro. La dirección del dato se almacena en un registro.

El PowerPC permite operandos que manejen los tipos byte, media palabra (half word) y palabra completa (word). Operandos de múltiples palabras se pueden soportar en las instrucciones de carga-almacenamiento.

Por último, el PowerPC cuenta con 32 registros de propósito general (GPRs) y con algunos registros de propósito específico (SPRs), los cuales se utilizan principalmente para accesos a recursos adicionales del procesador como el registro de conteo, el registro eslabón (link register), temporizadores, registros de interrupción entre otros.

2.2.3. La organización del hardware del PowerPC

El PowerPC consta de los siguientes elementos:

• 5 etapas de segmentado (pipeline) consistiendo de recolección (fetch),

decodifi-cación (decode), ejecución (execute), escritura (write-back) y carga escritura (load

write-back).

• Una unidad de manejo de memoria virtual que soporta tamaños de página múlti-ples y una gran variedad de atributos para la protección del almacenamiento así como opciones para el control de accesos.

• Unidades separadas de caché de instrucciones y caché de datos. • Soporte para depuración que incluye la interface JTAG.

• Tres temporizadores programables.

(38)

Interface de lectura

maestro-PLB InstruccionesOCM

Arreglo j Controlador Cache-I • Cache-I

Unidad de cache-instrucciones

Unidades

de Cache Unidad de cache-datos Arreglo Cache-D

Controlador Cache-D

TLB-sombra Instrucciones (4-Entradas)

TLB unillcado (64 entradas) TLB-sombra

Datos (8-Entradas)

Lógica de recolección y decorticación

Cola de recolección de 3 elementos

Unidad de ejecución ALU • MAC QPR :

32x32 •

Temporizadores

Temporizadores y depurador

Lógica de depuración

I T Y

Interface de Interface de Datos lectura escritura OCM maestro-PLB maestro-PLB

Interface controladora de

interrupciones externas JTAG Trazos deinstrucciones Figura 2.1: Organización del hardware del PowerPC 405

2.2.3.1. La unidad central de procesamiento (CPU)

La unidad central de procesamiento del PowerPC implementa una segmentación de 5 etapas que consisten en la recolección, decodificación, ejecución, escritura y escritura-carga.

La lógica de recolección y decodificación envia un flujo regular de instrucciones a la unidad de ejecución. Todas las instrucciones se decodifican antes de ser enviadas a la unidad de ejecución. Las instrucciones se colocan en una cola de recolección en caso de una detención (stall) en la etapa de ejecución. La cola de recolección consiste de tres elementos: dos buffers de pre-recolección y un buffer de decodificación. Si los buffers de pre-recolección están vacios entonces las instrucciones fluyen directamente al buffer de decodificación.

Se pueden procesar simultáneamente hasta dos saltos con la lógica de recolección y decodificación. Si un salto no puede ser resuelto antes de la ejecución, la lógica para la recolección y decodificación predice el salto causando con esto que el procesador especule recolectando las instrucciones de la dirección predicha. Saltos con desplaza-mientos de direcciones negativas se predicen como tomados dado que son saltos que no ponen a prueba el registro de condición o el registro de cuenta. La predicción por defecto puede ser cambiada por el software en el tiempo de ensamblado o de compilación.

(39)

lógica (ALU), y la unidad de multiplicación acumulación (MAC).

2.2.3.2. Lógica para el manejo de excepciones

Las excepciones están divididas en dos clases: críticas y no críticas. El PowerPC 405 le da servicio a las excepciones causadas por condiciones de error, temporizadores internos, eventos de depuración y la interface controladora de interrupciones externas (EIC). Con las dos clases de excepciones, son un total de 19 las posibles excepciones que el procesador soporta.

2.2.3.3. Unidad de manejo de memoria

EL PowerPC soporta 4GB de espacio de direccionamiento plano (no segmentado). La unidad de manejo de memoria (MMU) provee traslaciones de dirección, funciones de protección y control de atributos de almacenamiento para este espacio de direcciones.

2.2.3.4. Caches de datos e instrucciones

El PowerPC accede a la memoria através de la unidad de cache de instrucciones (ICU) y la unidad de cache de datos (DCU). Cada cache incluye una interface PLB maestra (Processor Local Bus), arreglos de cache y un controlador del cache. Los acier-tos en el cache de daacier-tos o de instrucciones se le presentan al CPU como accesos a memoria de un solo ciclo de latencia. Las fallas de cache se manejan como peticiones sobre el "bus" PLB hasta otro dispositivo PLB, como puede ser un controlador externo de memoria.

2.2.3.5. Recursos de temporización

El procesador contiene una base de tiempo de 64 bits y tres temporizadores. La base de tiempo se incrementa sincrónizadamente usando el reloj de la CPU o una fuente externa de reloj. Los tres temporizadores se incrementan sincrónizadamente con la base de tiempo. Los tres temporizadores que el PowerPC soporta son el temporizador de

in-tervalo programable, el temporizador de intervalo fijo y el temporizador perro guardián.

2.2.3.6. Depuración

Los recursos para depuración de este procesador incluyen algunos modos especiales que soportan algunas depuraciones útiles durante el desarrollo de hardware y software. Estos son:

Modo de depuración interna. Para usarse con monitoreo ROM y depuradores de

(40)

• Modo de depuración externa. Para usarse con los depuradores JTAG.

• Modo de depuración en espera. Útil para permitir el servicio de las interrupciones mientras el procesador aparenta estar detenido.

• Modo de trazos de tiempo real. El cual soporta disparo de eventos en tiempo real.

2.2.3.7. Interfaces del PowerPC 405

Este procesador cuenta con las siguientes interfaces:

• El "Bus" de procesador local (PLB).

• Registro para el control de dispositivos.

• Manejo de reloj y consumo de energía.

• Puerto JTAG.

• Controlador de interrupciones en el chip.

• Controlador de memoria en el chip.

2.3. Video

La palabra Video es utilizada para referirse a información visual; esto incluye imágenes fijas e imágenes variantes en el tiempo. Una imagen variante en el tiempo es tal que el patrón de intensidad espacial cambia con el tiempo; por lo tanto, una imagen variante en el tiempo contiene un patrón de intencidad espacio-temporal. La señal de video usualmente se refiere a una señal unidimensional en el tiempo (analógica o digital), en donde la información espacio-temporal esta ordenada como función del tiempo de acuerdo a alguna convención predefinida.

2.3.1. Conceptos Básicos sobre video

(41)

Una escena que presenta movimiento se representa por un conjunto de imágenes fijas, en donde cada una de dichas imágenes genera lo que se conoce como un cuadro (frame) de la escena.

La elección del número de píxeles por linea y de lineas por cuadro representa un compromiso entre ancho de banda y calidad o resolución de la imagen. Aumentar el número de lineas por cuadro incrementa la resolución espacial; similarmente, aumentar el número de cuadros por segundo incrementa la resolución temporal. Existe un límite mínimo para el número de cuadros por segundo debajo del cual el ruido de tipo "flicker"

o parpadeo se vuelve perceptible. Como consecuencia directa de lo anterior se tiene que

para contar con una secuencia de video libre de ruido y de buena calidad es necesario un ancho de banda considerable [4] y [5].

El video tradicionalmente ha sido grabado, almacenado y trasmitido de manera analógica; sin embargo en los últimos años se ha presentado una gran tendencia a presentar, almacenar y transmitir las señales de video en forma digital. Aparte de ser más robusta, la señal digital de video presenta ciertas ventajas, quizá una de las más importantes es que sobre la misma red de trabajo se hace más fácil proveer al usuario de un diverso número de servicios. Algunos de ellos se enumeran a continuación [9]:

• Sistemas de video de arquitectura abierta; esto significa la existencia de video con múltiples resoluciones espaciales (píxeles y líneas), temporales (cuadros por

segundo), y de relación de señal a ruido (SNR) todas dentro de un solo flujo de

bits (bitstream).

• Interactividad, permitiendo esto la interrupción de una secuencia de video en diferentes puntos.

• Tasa Variable de transmisión en demanda.

• Conversión de software relativamente sencilla entre estándares.

• Integración de diversas aplicaciones de video, como televisión, video telefonía etc. en una sola plataforma multimedia.

• Capacidades de edición, tales como cortar o agregar imágenes a la secuencia, realizar acercamientos y alejamientos, remoción de ruido y filtrado.

• Robusto ante el ruido del canal y facilidad para el encriptado.

(42)

2.3.2. Representaciones para video

Existen dos formas principales en las que las imágenes de una secuencia de video son escaneadas:

Escaneo progresivo es el que se lleva a cabo mediante un barrido único de la imagen.

Por otro lado, dos imágenes se pueden escanear en dos tiempos diferentes, (con sus lineas intercaladas) de tal suerte que dos lineas consecutivas en un cuadro pertenezcan

a campos intercalados; en este caso, cada imagen escaneada se llama campo y a este

tipo de escaneo se le conoce como entrelazado. La Figura siguiente muestra claramente la diferencia entre escaneo progresivo y escaneo entrelazado.

Campo 1

Figura 2.2: Tipos de escaneo para imágenes, a) escaneo progresivo, b) escaneo entre-lazado.

El escaneo entrelazado se utiliza para transmicion de televisión estándar y para

video con movimiento vertical rápido; mientras que el escaneo progresivo se utiliza cuando se requiere una mejor resolución.

2.3.2.1. Representación del color

Comunmente el formato de color que entregan las cámaras de video a su salida es

el RGB (red, green, blue) y corresponde a enviar información de la cantidad de rojo,

verde, y azul que utiliza cada pixel. Este formato sin embargo, por diversos factores, no es el utilizado en la gran mayoría de los sistemas de video; el formato utilizado es (con algunas variantes) el representado por las siglas YUV, donde Y se refiere a la luminosidad, y U y V son dos componentes de color diferencial (estas últimas siglas también son conocidas como C\, y Cr respectivamente). Los componentes YUV pueden ser obtenidos a partir de los componentes RGB como sigue:

Y = 0,299i?'+ 0,587(7 + 0,1145'

U = -0,147i?' - 0,289(7 + 0,4365' = 0,492(B' - Y) V = 0,615i?'- 0,515G" - 0,1005' = 0,877(fl' - Y)

(2.1)

(43)

diferencial de color U, V es de 1.5 Mhz, esto debido principalmente a que el sistema de visión humana es menos sensible a la resolución del color [1]. Por esta razón en la mayoría de las aplicaciones del procesamiento de imágenes, tales como la estimación de movimiento, las decisiones sobre la codificación de ciertos bloques de una imagen está basada solamente en los bloques de luminosidad.

2.3.3. Estándares para el video digital

El intercambio de video en formato digital entre diversas aplicaciones y productos requiere de la definición de ciertos formatos de video estandarizados. La información de video necesita ser emitida, transmitida y recibida en forma comprimida, lo cual lleva a la generación de estándares de compresión. En la industria de las computadoras se requieren estándares para el desplegado de las secuencias, en la industria televisiva se requiere de regulación en cuanto a los estudios digitales, mientras que en el área de las comunicaciones se requiere la estandarización de los protocolos de red. Debido a que estas tres áreas con el paso del tiempo se han ido acercando y convirtiendo en interdependientes se ha tenido la necesidad reciente de crear una estandarización

"global".

Tabla 2.1: Estándares para desplegado de video digital Parámetro

Número de píxeles activos por linea

Luminancia Y

Color dif. U, V

Número de píxeles activos por imagen

Luminancia Y

Color dif. U, V

Entrelazado Tasa temporal Relación de aspecto

CCIR601 525/60

NTSC

720 360

480 480 2:1 60 4:3

CCIR601 625/50 PAL/SECAM

720 360

576 576 2:1 50 4:3

CIF

360 180

288 144 1:1 30 4:3

(44)

distintos formatos de imagen (para desplegado) que se pueden manejar de acuerdo a sus componentes de luminosidad y de color diferencial, Y, U o C\, y V o Cr respectivamente.

Dentro de los formatos de imagen más utilizados por los estándares de compresión (y en general cualquier estándar) se encuentran el formato 4:2:0, el 4:2:2 y el 4:4:4.

X X 0 * X X X X 0 * X X X X 0 * X X X X o * X X X X X X X X 0 * X X X X 0 * X X X X 0 * X X X X 0 * X X X X o * X X X X 0 * X X X X X X

X Representa las muestras Y (luminancia) O Representa las muestras Cb (Color diferencial) # Representa las muestras Cr (Color diferencial)

Figura 2.3: Formato de imagen 4:2:0.

El formato 4:2:0 especifica que las matrices de las componentes C^ y Cr deben ser exactamente de la mitad de tamaño que la matriz de la componente Y, Además, esta última deberá ser de tamaño par. La Figura 2.3 aclara un poco esta idea.

X X X 0 » X XX 0 » X v X X X X 0 » X XX \ y 0 » X X 0 » X X 0 » X XX 0 » X X 0 * X XX X 0 » X X OH X X X :

X Representa las muestras Y (luminancia) O Representa las muestras Cb (Color diferencial) • Representa las muestras Cr (Color diferencial)

Figura 2.4: Formato de imagen 4:2:2.

El formato 4:2:2 establece que las matrices de las componentes Cb y Cr deben ser

exactamente de la mitad de tamaño de la matriz de la componente Y en la dirección horizontal de la imagen, y del mismo tamaño que la matriz de Y en la dirección vertical, como se ilustra en la Figura 2.4.

Por último, el formato 4:4:4 define exactamente el mismo tamaño, tanto horizontal como vertical, para las matrices de las tres componentes (Y, Cb y Cr).

(45)

V^ i \

x° | >

x° 1 >

xj 1 >

v# X#

X) yO X) yO ,# X#

,0 yO

X Representa las muestras Y (luminancla) O Representa las muestras Cb ÍColor diferencial) • Representa las muestras Cr(CotordiIerencial)

Figura 2.5: Formato de imagen 4:4:4.

apreciar como MPEG forma uno de los estándares consentidos en la actualidad (la teoría y características de los estándares MPEG se describirán en el capítulo 3).

Tabla 2.2: Estándares de compresión de video digital Estándar

CCITT G3/G4 JBIG JPEG H.261 MPEG-1 MPEG-2 MPEG-4 H.264

Aplicación

Imágenes binarias (no adaptivo) Imágenes binarias

Imágenes estáticas px64kbps

1.5Mbps 10-20Mbps

2.4. Compresión de señales tridimensionales

Al referirse al término compresión se entiende un proceso que logra una repre-sentación digital compacta de una señal cualquiera. Dentro de la literatura [4], [2], [3], [9] se utilizan distintos términos como codificación de fuente, compresión de ancho de

ban-da, compresión de señal para referirse al mismo proceso de compresión. Cuando la señal

a tratar es una imagen, una secuencia de video o una señal de audio, el problema de compresión se centra en minimizar el número de bits de su representación digital. Hoy en día existen muchas aplicaciones que se benefician de tener a las señales de audio, video o a las imágenes de manera comprimida. Sin esta compresión la mayoría de estas aplicaciones no serían factibles.

(46)

es decir sin compresión, y comprimidas.

Tabla 2.3: Aplicaciones para las cuales es necesaria la compresión Aplicación

Voz

8000 muestras/s, 8 bits/muestra Video en cámara lenta (10 cps)

tamaño del cuadro: 176x120 24 bits/píxel

Conferencia de voz

8000 muestras/s, 16 bits/muestra Conferencia de video (15 cps)

tamaño del cuadro: 352x240 24 bits/píxel

Audio digital (estéreo) 44100 muestras/s, 16 bits/muestra Transferencia de archivos de video (15 cps)

tamaño del cuadro: 352x240 24 bits/píxel

Video digital en un CD-ROM (30 cps) tamaño del cuadro: 352x240

24 bits/píxel

Transmición de video (30 cps) tamaño del cuadro: 720x480

24 bits/píxel

Televisión de alta definición (59.94 cps) tamaño del cuadro: 1280x720

24 bits/píxel

Tamaño sin compresión

5.07 Mbps

5.07 Mbps

128 kbps

30.41 Mbps

1.5 Mbps

30.41 Mbps

60.83 Mbps

248.83 Mbps

1.33 Gbps

Tamaño con compresión

8-16 kbps

8-16 kbps

6-64 kbps

64-768 kbps

128-768 kbps

384 kbps

1.5-4 Mbps

3-8 Mbps

20 Mbps

Señales tales como las imágenes y el video son deseables para la compresión debido a los siguientes factores [4]:

Existe una cantidad considerable de redundancia estadística en la señal.

1. En una imagen aislada o en un cuadro de video, existe una significativa cor-relación entre muestras vecinas (píxels en un vecindario) [31]. Esta corcor-relación se conoce como correlación espacial.

(47)

3. Para datos que dependen del tiempo (como es el video), existe un cantidad significativa de correlación entre muestras en distintos instantes de tiempo. A esto se le conoce como correlación temporal.

Hay una buena cantidad de información en la señal que es irrelevante desde el punto de vista de la percepción humana.

Algunos datos tienden a tener un alto nivel de características que son redundantes a través del espacio y el tiempo, esto es, el tipo de datos es de naturalez fractal.

Imagen y Video Digital

Imagen v ; Video <J ! Digital

Codificador de la

Fuente Codificador delCanal

Decodificadorde

la fuente Decodificador delcanal

Figura 2.6: Esquema general de compresión

Para una aplicación determinada, el esquema de compresión que se elija de-berá aprovechar algún o algunos de los factores mencionados previamente para tener la tasa de compresión deseada. La Figura 2.6 presenta el diagrama más general de lo que es el sistema de compresión para una imagen o una secuencia de video. Dentro del codificador tenemor el codificador de la fuente, el cual realiza la compresión y reduce la tasa de datos de la señal de entrada a un nivel que puede ser manejado por el dispositivo de almacenamiento o bien por el medio de trasmición. La tasa de datos a la entrada se mide preferentemente en bits por muestra, siendo para las imágenes o el video bits por píxel. En la literatura el término tasa de compresión, denotado por cr, también se

utiliza para caracterizar la capacidad de compresión de los sistemas. La definición de cr es la siguiente:

cr =

tamaño de los datos a la entrada del codificador tamaño de los datos a la salida del codificador Alternativamente también es utilizada la ecuación:

tamaño de los datos a la salida del codificador numero de pixeles de la imagen

(2.2)

(48)

En un sistema de compresión común, el codificador de la fuente esta seguido de un segundo nivel de codificación ilustrado en la Figura 2.6 como el codificador de canal. El codificador de canal convierte la información que le entrega el codificador de fuente a un formato de señal adecuado ya sea para transmición o para almacenamiento. Normal-mente la codificación del canal y de la fuente se realizan por separado. Cabe mencionar que para tener la señal de entrada reconstruida para su utilización será necesario re-vertir el proceso de codificación de canal y codificación de fuente, en este orden; este proceso por lo general lo lleva a cabo el decodificador.

MÉTODOS DE COMPRESIÓN PARA IMÁGENES Y VIDEO

Basados en modelos

Codificación -predictiva

lineal (LPC)

Modelado

"AR.ARMA

Ajuste polinomial

Fractales

Basada en objetos

'—Otros

Sin perdida Con perdida

Estadística

Gilbert —Fano

Huffman —Otros

niversal

Codificación aritmética

Codificación

.empel-Ziv

Correspondencia de patrones

Dominio Espacial y Temporal

Modulación delta

- P C M - D P C M

Cuantizacion

vectorial —nt™

Dominio Frecuencial

—Basada en Filtros

-Sub-banda

Wavelet '—Other

Basada en transformadas - O t r o s

—Fourier

—Loeve (KL)

- D C T

—Hadamard

-Otras

(49)

una división principal en dos grandes bloques, métodos basados en modelos y métodos

basados en la forma de onda. Los métodos basados en la forma de onda han sido los que

a través del tiempo se han ganado casi por completo la atención de los investigadores, en esta categoría podemos encontrar una nueva clasificación, la compresión sin pérdidas

(lossless) y la compresión con pérdidas (lossy). Las siguientes sub-secciones tratan de

explicar con cierto detalle ambas categorías.

2.4.1. Compresión sin pérdidas

En muchas aplicaciones, el decodificador tiene que reconstruir los datos originales sin ninguna pérdida. Para un proceso de compresión sin pérdida, los datos reconstruidos y los originales deben ser idénticos en valor para cada una de las muestras de datos. A esto también se le conoce como un proceso reversible. En el esquema de compresión sin pérdidas, para una aplicación específica la elección del método de compresión presenta un compromiso entre tres dimensiones: la eficiencia en la codificación, la complejidad de la codificación y el retraso de la codificación.

La eficiencia en la codificación se mide normalmente en bits por muestra o bits por segundo (bps). Dicha eficiencia usualmente está limitada por el contenido de la in-formación o entropía de la fuente. En términos intuitivos, la entropía de cierta fuente X provee una medida de la "aleatoriedad" de X. Desde el punto de vista de la compresión, señales con un alto grado de entropía son más difíciles de comprimir.

La complejidad de un proceso de compresión es análoga el esfuerzo computacional necesitado para implementar las funciones del codificador y decodificador. El esfuer-zo computacional se mide normalmente en términos de requerimientos de memoria y número de operaciones aritméticas. El conteo de operaciones se caracteriza por el término "millones de operaciones por segundo" y se refiere a él por sus siglas en inglés MOPS, también se suele usar el término MIPS (millones de instrucciones por segun-do). Para algunas aplicaciones, como los dispositivos portátiles, la complejidad de la codificación también puede ser caracterizada en términos del consumo de energía de la implementación.

Un proceso de compresión complejo normalmente tiende a incrementar los re-tardos debidos a la codificación tanto en el codificador como el decodificador. Estos retrasos pueden ser disminuidos mediante el uso de motores de procesamiento más sofisticados, sin embargo esto no siempre es posible y en algunas aplicaciones, como las comunicaciones interactivas, los retardos por la codificación deben ser restringidos.

(50)

2.4.2. Compresión con pérdidas

La mayoría de las aplicaciones para procesamiento de datos de imágenes y video no requieren que los datos reconstruidos y los originales sean idénticos en valor. De aqui, cierta cantidad de pérdida está permitida para los datos reconstruidos. Un proceso de compresión que resulta en una reconstrucción imperfecta se conoce como proceso de compresión con pérdidas. Este proceso de compresión es irreversible. En la práctica, la mayoría de los procesos irreversibles de compresión degradan rápidamente la calidad de la señal cuando son aplicados repetidamente en datos previamente descomprimidos. La elección de un método adecuado de compresión con pérdidas presenta (al igual que el método sin pérdidas) compromisos entre la complejidad del codificador, la efi-ciencia de la codificación, el retardo por la codificación, y un nuevo compromiso, la calidad de la señal. La adición de este "grado de libertad" provoca que los esquemas de compresión con pérdida alcancen niveles de compresión más elevados que los procesos sin pérdida.

Para medir la calidad de la señal no existe aun una medida universalmente acepta-da. Una de las medidas que suelen utilizarse es la relación señal a ruido, la cual puede expresarse como en la ecuación (2.4).

„„,.„ , energía de la señal a al entrada del codificador

SNR = Í0log10~-^ — — J- (2.4

energía de la señal de ruido

La energía de la señal de ruido está definida como la energía medida para una

señal hipotética que es la diferencia entre la señal a la entrada del codificador y la señal a la salida del codificador. Es interesante notar como la SNR viene dada en decibeles (dB). En el caso de imágenes o señales de video, en lugar de SNR se utiliza PSNR

(relación señal pico a ruido), la forma de calcularla es escencialmente la misma al caso

de la SNR; sin embargo, en el numerador, en lugar de usar la señal a la entrada del codificador, se utiliza una señal hipotética con una "fuerza" (signal strength) de 255 (el valor máximo decimal para un número de 8 bits sin signo, como es el pixel).

Altos valores para la SNR o la PSNR no siempre significan alta calidad per-ceptiba. Otra medida de la calidad de la señal es la "marca opcional media" (mean option score), en donde el rendimiento de un proceso de compresión se caracteriza por la calidad subjetiva de la señal decodificada.

Ya sea el esquema con pérdidas o sin pérdidas, la calidad de la señal de entrada afecta la tasa de compresión. Por ejemplo, el ruido adquirido, error producidos por un mal muestreo de datos, e incluso una conversión analógica-digital defectuosa afectan la calidad de la señal y reducen las correlaciones temporal y espacial. Algunos procesos de compresión son muy sensibles a la pérdida en la correlación y se pueden presentar malas compresiones ante la presencia de ruido.

(51)

Preprocesador

Codificación sin perdida

Codificador de entropía

Codificación

i

Procesamiento adicional

Figura 2.8: Modelo a bloques para la codificación sin pérdidas y con pérdidas

2.5. Trabajos previos relacionados

En esta sección se presenta un breve resumen de los trabajos que se han realizado recientemente en el mundo y que se relacionan con los objetivos y alcances de este trabajo.

En [22] los autores presentan una implementación en un FPGA para el módulo de decodificación de entropía, es decir, el bloque para la decodificación de longitud variabla VLD. Se evaluaron tres posibles implementaciones, cada una de las cuales ocupa una diferenta área en el FPGA y también consumen diferente número de ciclos de reloj. Se presentan los resultados de los experimentos y la mejoras logradadas de su implementación respecto a la implementación "todo software" que realiza el código que se puede obtener en [34].

El trabajo expuesto en [26] es el diseño de una arquitectura óptima para la decod-ificación de longitud variable (VLD) para aplicaciones de alta definición. Este trabajo es piedra angular ya que hasta el momento resulta ser la mejor arquitectura posible para implementar el VLD de tal modo que se pueda contar con datos decodificados en cada ciclo de reloj sencillo.

En [13] se presenta el diseño de un decodificador MPEG-2 todo basado en software. La decodificación se realiza utilizando una máquina con multripocesamiento de memoria compartida. Los resultados plantean que dicha decodificación es apta para aplicaciones de tiempo real donde las latencias son críticas. Se experimenta con implementaciones tanto de grano fino como de grano grueso en el multiprocesador; la implementación de grano grueso explota el paralelismo a nivel de la parte del estándar MPEG conocida

como grupo de imágenes, mientras que la implementación de grano fino explota el

paralelismo a un más bajo nivel, el nivel de rebanadas de la imagen (slice level). Los resultados se presentan comparativamente entre ambas implementaciones.

Figure

Figura 2.1: Organización del hardware del PowerPC 405 2.2.3.1. La unidad central de procesamiento (CPU)
Figura 2.7: Clasificación de los métodos de compresión para imágenes y video
Figura 3.3: La concentración de energía al aplicar la transformada coseno discreta, (a)
Tabla 3.2: Ejemplo de la codificación de longitud variable Símbolo i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Pi 0.282000.278600.141900.138900.051400.051300.015300.015300.007200.006800.003800.003200.001900.001300.000700.00040 k 22334455 1111111111111111 Códig
+7

Referencias

Documento similar

No había pasado un día desde mi solemne entrada cuando, para que el recuerdo me sirviera de advertencia, alguien se encargó de decirme que sobre aquellas losas habían rodado

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)

Content Adaptation, Image browsing, Image to Video transmoding, Regions of Interest (ROIs), Information fidelity, Visual attention model, Browsing path, Simulated camera