36
PROYECTO FIN DE CARRERA Decodificador de vídeo MPEG-2 en MATLAB y análisis del bitstream ESCUELA SUPERIOR DE INGENIEROS DEPARTAMENTO DE TEORÍA DE LA SEÑAL Y COMUNICACIONES Autor: Elena Mª Aguilar Fernández Tutor: José Ramón Cerquides Bueno Junio - 2008

Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Embed Size (px)

Citation preview

Page 1: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

PROYECTO FIN DE CARRERA

Decodificador de vídeo MPEG-2 en MATLAB

y

análisis del bitstream

ESCUELA SUPERIOR DE INGENIEROS

DEPARTAMENTO DE TEORÍA DE LA SEÑAL Y COMUNICACIONES

Autor: Elena Mª Aguilar Fernández

Tutor: José Ramón Cerquides BuenoJunio - 2008

Page 2: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Motivaciones y Objetivos

Objetivos

•Estudio de las técnicas de compresión de imágenes

•Estudio exhaustivo del estándar MPEG-2 (Recomendación ISO/IEC 13818)

•Aplicación capaz de demultiplexar la información de vídeo

•Aplicación capaz de decodificar la información de vídeo

Motivaciones

•No existe ninguna aplicación en código abierto para MATLAB capaz de analizar un vídeo con formato MPEG-2 y decodificarlo

•Esta aplicación puede ser usada como base para la programación de otros algoritmos

•Se ha pensado en publicarla en el “File Exchange” de Mathworks

Page 3: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Índice

3. Técnicas de compresión

5. Capa de Sistema

6. Capa de Vídeo

7. Desarrollo del decodificador8. Conclusiones

4. MPEG. Conceptos básicos

1. Vídeo digital

2. Necesidad de compresión

Page 4: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Índice

3. Técnicas de compresión

5. Capa de Sistema

6. Capa de Vídeo

7. Desarrollo del decodificador8. Conclusiones

4. MPEG. Conceptos básicos

1. Vídeo digital

2. Necesidad de compresión

Page 5: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

1. Vídeo Digital. Introducción

Vídeo: Captura, grabación, almacenamiento y reconstrucción de una secuencia de imágenes que representan escenas en movimiento.

Digitalización:

Muestreo temporal: Tomar cada una de las imágenes

Muestreo espacial: Muestras equiespaciadas de cada una de las imágenes en filas y columnas.

Para crear sensación de movimiento las imágenes deben cambiar cada cierto tiempo. El número de imágenes en un segundo cambia según el medio:

Píxel: Cada una de las muestras. Se debe representar con un número de bits (generalmente 8 bits por muestra).

•Cine: 24

•TV PAL: 25

•TV NTSC: 30

Page 6: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Índice

3. Técnicas de compresión

5. Capa de Sistema

6. Capa de Vídeo

7. Desarrollo del decodificador8. Conclusiones

4. MPEG. Conceptos básicos

1. Vídeo digital

2. Necesidad de compresión

Page 7: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

2. Necesidad de compresión

Formato digital 4:2:2 (4 muestras Y, 2 muestras Cb, 2 muestras Cr)

Y: Muestreo a 13.5 MHz

8 bits por muestraCb: Muestreo a 6.75 MHz

8 bits por muestraCr: Muestreo a 6.75 MHz

8 bits por muestra

108 Mbps

54 Mbps

54 Mbps

216 Mbps

El bitrate medio de MPEG-2 es de 15

Mbps.

Supone una reducción en la información a

transmitir o almacenar de 15 veces

Page 8: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Índice

3. Técnicas de compresión

5. Capa de Sistema

6. Capa de Vídeo

7. Desarrollo del decodificador

8. Conclusiones

4. MPEG. Conceptos básicos

1. Vídeo digital

2. Necesidad de compresión

Page 9: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

3. Técnicas de compresión

Compresión: Proceso de compactar los datos en un menor número de bits

Puede ser con o sin pérdidas

•Redundancia espacial: píxeles cercanos parecidos

Transformada discreta del coseno (DCT)CuantificaciónSubmuestreo de crominancia

•Redundancia estadística: valores de bit repetidos

Escaneo zig-zag y Run Length Code (RLC)Variable Length Code (VLC)

•Redundancia temporal: píxel en el tiempo repetido

Motion EstimationMotion Compensation

I

P y B

Page 10: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Índice

3. Técnicas de compresión

5. Capa de Sistema

6. Capa de Vídeo

7. Desarrollo del decodificador

8. Conclusiones

4. MPEG. Conceptos básicos

1. Vídeo digital

2. Necesidad de compresión

Page 11: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. Conceptos básicos

MPEG: Moving Picture Experts Group. Familia de estándares que se pueden aplicar en diversas aplicaciones: MPEG-1, MPEG-2, MPEG-4, MPEG-7…

MPEG-2: Ha alcanzado gran éxito debido principalmente a la amplia gama de aplicaciones.

El documento que describe este estándar es la recomendación ISO/IEC 13818, dividida en 9 capas. Nos centraremos en las 3 primeras: Sistema, Vídeo y Audio

ISO/IEC 13818-1

ISO/IEC 13818-3

ISO/IEC 13818-1

Page 12: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. Jerarquía del vídeo

Imagen

I: Intra-trame

P: Predicted

B: Bidirectional

Procesamiento temporal

Page 13: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. Codificación de Imágenes I

Page 14: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. Descomposición en bloques

Divididir en macrobloques de 16x16.

Los macrobloques están formados por bloques de 8x8 ordenados sucesivamente (f(x,y))4:2:0 4:2:2 4:4:4

Page 15: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. DCT

A cada bloque f(x,y) se le calcula la DCT bidimensional formando F(v,u)

f(x,y) F(v,u)

El coeficiente F(0,0), coeficiente DC, es el que más información contiene, por eso se codifica con más precisión que el resto mediante codificación diferencial

Elimina Redundancia Espacial

Page 16: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. Cuantificador variable

La cuantificación consiste en dividir cada elemento por un número que aparece en las tablas de cuantificación, las cuales pueden ser definidas por el codificador o emplearse tablas por defecto.

Tabla de cuantificación por defecto para imágenes I

Indica la importancia relativa de cada coeficiente transformado (paso de cuantificación con el que se codifica cada elemento).

El coeficiente DC tiene nuevamente un tratamiento especial y el paso de cuantificación se obtiene de la secuencia de bits

Page 17: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. Escaneo en Zig-Zag

La mayoría de los coeficientes cuantificados toman el valor 0. Mediante una matriz de escaneo zig-zag podemos obtener una secuencia de coeficientes con muchos ceros seguidos.

130, -2, -2, 1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 0, … resto de coeficientes nulos

Elimina Redundancia Estadística

Page 18: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. Codificación entrópica

La codificación combinada entre códigos de longitud variable (VLC) y métodos de longitud de series (RLC) resulta muy eficiente.

Coeficientes AC: Se forman parejas formadas por las palabras:

run: número de ceros seguidos

level: siguiente valor no nulo

130, -2, -2, 1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 0, …

(0,130),(0,-2),(0,-2),(0,1),(1,1),(1,-1),(4,-1),EOB

Coeficientes DC: Se emplean dos tipos de palabras:

En el ejemplo anterior:

Las parejas se codifican con códigos VLC

dct-size: número de bytes de la siguiente palabra codificado con VLC

dct_diff: código de longitud fija, con el valor diferencial del coeficiente

s=0 level=level

s=1 level=-level

Codificamos

‘1101’

Elimina Redundancia Estadística

Page 19: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. Redundancia temporal

En las imágenes P y B, además de las técnicas anteriores se elimina la redundancia temporalCompensación de movimiento

1. Estimación de movimiento: Buscar bloque de imagen de referencia óptima para predicción

2. Compensación de movimiento: Calcular diferencia entre bloque actual y predictor

3. Vector de movimiento: Componente de desplazamiento vertical y horizontal de la diferencia de posición entre el bloque actual y el de referencia.

Tipos

Predicción de trama

Predicción de campo

Compensación de movimiento 16x8

Aritmética Dual-prime

Page 20: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. Resumen codificación Imágenes P

Page 21: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

4. MPEG. Resumen codificación Imágenes B

Page 22: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Índice

3. Técnicas de compresión

5. Capa de Sistema

6. Capa de Vídeo

7. Desarrollo del decodificador

8. Conclusiones

4. MPEG. Conceptos básicos

1. Vídeo digital

2. Necesidad de compresión

Page 23: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

5. Capa de Sistema (ISO/IEC 13818-1)

Al codificar la información de audio, vídeo u otros tipos se obtienen flujos elementales (ES, elementary streams). Éstos se dividen en unidades de acceso (UA).

Son flujos de datos que contienen toda la información de cada tipo de una sola fuente.

No son óptimos para ser transmitidos. Necesitamos estructuras más adecuadas (PES packets). Esta capa se encarga de combinarlos.

Cabecera

(long. variable)

Stream_id

Time Stamps

PES header lenght

Page 24: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

5. Capa de Sistema. PS y TS

Dos formas de encapsulado que generan dos tipos diferentes de flujos de datos:

Transport StreamProgram Stream

Medios de transmisión fiables y almacenamiento

Equivalente a un solo programa audiovisual

Multiplexación de varios ES con base de tiempos común

Los packs tienen longitud variable (aprox. 2 Kbytes)

Medios de transmisión no fiables

Posibilidad de multiplexar varios programas audiovisuales

Multiplexación de varios ES de diferentes programas

Los TS packets tienen longitud fija (188 bytes)

El primer byte de cada PES packet debe ser el primer byte de carga útil del TS packet

Page 25: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

5. Capa de Sistema. Esquema global

Page 26: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Índice

3. Técnicas de compresión

5. Capa de Sistema

6. Capa de Vídeo

7. Desarrollo del decodificador

8. Conclusiones

4. MPEG. Conceptos básicos

1. Vídeo digital

2. Necesidad de compresión

Page 27: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

6. Capa de vídeo (ISO/IEC 13818-2)

Código de Comienzo: Esquema de bits específicos que no se repiten dentro de la propia información codificada formados por 4 bytes (los 3 primeros se denominan prefix code y el cuarto start code value)

Page 28: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

6. Capa de vídeo. Reglas semánticas

Page 29: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Índice

3. Técnicas de compresión

5. Capa de Sistema

6. Capa de Vídeo

7. Desarrollo del decodificador

8. Conclusiones

4. MPEG. Conceptos básicos

1. Vídeo digital

2. Necesidad de compresión

Page 30: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

7. Desarrollo del decodificador. Funcionalidad

Demultiplexor: encargado de separar la información correspondiente al vídeo.

•Desarrollado mediante una única función.

•Reconoce solamente el encapsulado Program Stream.

Decodificador: encargado de leer la secuencia binaria con la información de vídeo y demultiplexar las distintas capas extrayendo la información de las cabeceras.

•Formado por 27 funciones propias (además de otras de MATLAB) y 17 tablas.

•Las funciones y parámetros se han nombrado de igual forma que aparecen en la recomendación para que cualquier persona ajena al proyecto pueda interpretarlas.

•Una vez extraídos todos los parámetros necesarios y realizados los cálculos correspondientes se deben crear las imágenes decodificadas.

•Finalmente se genera un vídeo decodificado con las imágenes en el orden correspondiente.

Page 31: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

7. Desarrollo. Compresión vs velocidad

En una secuencia de imágenes I, P, B con formato de croma 4:2:0 y tamaño de imagen 240x320 hemos obtenido estos resultados.

Si comparamos el tiempo de decodificación empleado y el espacio ocupado en memoria vemos que encontramos intereses contrarios.

Imágenes I: Invertimos muy poco tiempo al decodificar pero ocupan un gran espacio en memoria (poca compresión)

Imágenes P: El tiempo de decodificación es similar a las de tipo B pero ocupan más espacio en memoria (compresión media)

Imágenes B: Empleando tiempos algo superiores a las anteriores ocupan el menor espacio (alta compresión)

Page 32: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

7. Desarrollo. Reparto de tiempos

La mayor parte del tiempo de decodificación se emplea en hacer los cálculos para la compensación de movimiento.

Después, en proporciones similares tenemos:

•DCT inversa

•Decodificación VCL y cuantificación inversa

•Transformación del espacio de color y formación de imágenes.

Page 33: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

Índice

3. Técnicas de compresión

5. Capa de Sistema

6. Capa de Vídeo

7. Desarrollo del decodificador8. Conclusiones

4. MPEG. Conceptos básicos

1. Vídeo digital

2. Necesidad de compresión

Page 34: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

8. Conclusiones

•Se ha diseñado una herramienta capaz de decodificar vídeos MPEG-2 no escalables y encapsulados como Program Stream

•Los tiempos conseguidos de decodificación de cada imagen, si bien son elevados para usos comerciales, mejoran cuantiosamente las referencias iniciales

•Servirá como herramienta para futuras investigaciones gracias a que su interpretación es sencilla y se encuentra ampliamente documentada mediante la recomendación del estándar (ISO/IEC 13818)

•Se va a publicar la aplicación en el “File Exchange” de Mathworks como un primer paso en este campo y se espera que sea mejorada por el resto de usuarios de MATLAB

Page 35: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

8. Conclusiones. Vías futuras

•Demultiplexar el encapsulado Transport Stream

•Ampliar decodificador para vídeos escalables

•Decodificación de la Capa de Audio

•Adaptar la aplicación para otras versiones de MPEG

•Conseguir tiempos de decodificación mejores

Aplicación:

Diseño de algoritmos de detección de cambios de plano en vídeo comprimido MPEG-2. Modificando relativamente poco el código propuesto se puede conseguir el desarrollo de algunos de estos algoritmos.

Page 36: Decodificador de vídeo mpeg 2 en matlab y análisis del bitstream

FIN

Muchas gracias