Story Transcript
EFICIENCIA DE CODIFICACIÓN DEL CODIFICADOR DIRAC
Por: Karla Anai Martínez Figueroa Ricardo Ortiz
Presentado al comité revisor del Instituto de Ingeniería y Tecnología de La Universidad Autónoma de Ciudad Juárez para obtener el título de:
INGENIERO EN SISTEMAS DIGITALES Y COMUNICACIONES
UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ Mayo 2011
EFICIENCIA DE CODIFICACIÓN DEL CODIFICADOR DIRAC
Los miembros del comité revisor que aprobaron el proyecto de titulación de: Karla Anai Martínez Figueroa y Ricardo Ortiz.
Humberto Ochoa Asesor
___________________________________________
Abimael Jiménez
___________________________________________
David García
___________________________________________
UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ
Ins'tituto de Ingeniería y Tecnología
Departamento de Ingeniería Eléctrica y Computación
Titulación extracurricular: Por promedio
Fecha: 27 de Mayo del 2011 Hora: 16:00 - 18:00 Lugar: Lab. Control
Nombre del alumno: Karla Anaí Martínez Figueroa Promedio: 9.2
El acto protocolario consta de las siguientes partes: Presentación de alumno (s) Lectura del acta Firma del aeta Toma de protesta Finalización y felicitaciones
Firmas de conformidad:
Mtro. Jesús Armando Gándara Fernández
Jefe de Departamento M.C. David García Chaparro Coordinador de programa M.C Alejandra Mendozo Correón Coordinador de academia Ing. Ismael Canales Voldiviezo Tutor
UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ InsHtuto de Ingeniería y Tecnología Fecha: 27 de Mayo del 2011 Horario: 16:00 - 18:00 HRS.
EVALUACIÓN DE EXAMEN PROFESIONAL INTRACURRICULAR NIVEL: L1CEI~CIA TURA TEMA:
Lugar: Lab. Control
"Eficiencia de Codificación del Codificador DIRAC "
Lo evaluación del examen profesional intracurricular consto de 4 partes: [Desarrollado en 1 hora) 1°._ 2°.3°.4°.-
Exposición por parte de los alumnos (máximo 20 minutos). Réplica por porte del jurado. Comentarios y/o recomendaciones. Entrego de resultados.
Nombre del alumno: Ricardo Ortiz
Calificación Maestro de la materia (30%) Calificación Director de Trabajo (40%)
Z9 J/o
Calificación del Jurado (30%) TOTAL
Se recomiendo que el documento se deposite paro consulto en lo BIBLIOTECA SiD NoD
Jurado
Dr. Humberlo Ochoa Dominguez
Miro.
arda Chaparro
(
TABLA DE CONTENIDO Página AGRADECIMIENTOS…………………………………………………………..
vi
LISTA DE FIGURAS…....…………………………………………….................
vii
LISTA DE TABLAS…....……………………………………………...................
0ix
LISTA DE ACRÓNIMO…....…………………………………………………… LISTA DE ANOTACIONES…....………………………………………………..
0x 0xiii
Capítulo 1 1. INTRODUCCIÓN…………………………………………………………….
1
1.1 Introducción……………………………………………………………….
1
1.2 Planteamiento del
3
problema………………………………………………. 1.2.1 Definición del problema...
3
…………………………………………… 1.2.2 Objetivos………………………………………………………….......
3
1.2.3 Preguntas de
4
investigacion…………………………………………… 1.2.4 Justificación…………………………………………………………... 1.2.5 Delimitación………………………………………………………...
4 4
Capítulo 2 2. MARCO TEÓRICO…………………………………………………………… 2.1 Codificador Dirac………………………………………………………….
9
2.2 Decodificador Dirac………………………………………………………
9
2.3 Caracteristicas de
3
6
10
Dirac…………………………………………………… 2.4 Aplicaciones de Dirac…………………………………………………......
11
2.5 Ventajas de Dirac………………….……………………………………...
11
2.6 Comparación de Dirac con otros
12
codecs………………………………….. 2.7 Codificador de video
13
H.264………………………………………………. 2.8 Caracteristicas de H.264………………………………………...
19
………… 2.9 Aplicaciones de H.264………………………………………………….....
20
Capítulo 3 3. MATERIALES Y MÉTODOS………………………………………………... 3.1 Bloques del Sistema
22 22
Codificador…………………………………………. 3.1.1 Transformada
22
Wavelet……………………………………………….. 3.1.2 Transformada
24
Inversa………………………………………………… 3.1.3 Codificación
25
Aritmetica…………………………………………….... 3.1.4 Estimación de
25
Movimiento…………………………………………... 3.1.5 Compensación de
27
Moviemiento……………………………………… 3.2 Bloques del Sistema Decodificador
4
28
…………………………………….... 3.2.1 Decodificador de
29
Entropía………………………………………….... 3.2.2 Cuantización Escalar
29
Inversa………………………………………… 3.2.3 Compensación de
29
Movimiento…………………………………….... Capítulo 4 4. RESULTADOS Y CONCLUSIONES………………………………………...
30
4.1 Implementación……………………………………………………………
30
4.2 Resultados…………………………………………………………….....
30
4.3 Conclusiones…………………………………………………….............
44
APÉNDICE………………………………………………………………………. A. Luminancia, Cominancia y Formato
46 46
4:2:0……………………………….. REFERENCIAS…………………………………………………….…………….
5
48
AGRADECIMIENTOS Deseo expresar mi gratitud primeramente a Dios por guiarme en el camino de mi carrera, por estar conmigo en la realización de este proyecto y por darme la oportunidad de terminar una meta más en mi vida, gracias por llenar mi vida de dicha y bendiciones. De igual forma agradezco al Dr. Humberto Ochoa por su apoyo, guía, y paciencia que me fueron otorgados través de este proyecto, además de compartir su sabiduría e impulsarme a ser mejor cada día. A el Dr. José Míreles por el apoyo y guía que me brindo, a los miembros del comité revisor por su disposición, a mis maestros por sus enseñanzas y ayuda brindadas. A el Ing. Ismael Canales por todo el apoyo y guía que me ha brindado desde el inicio de esta carrera, gracias por la disponibilidad. Deseo dedicar todos mis logros a mi esposo Francisco, le agradezco su apoyo, guía y comprensión en la realización de mi carrera universitaria, estoy segura que sin él, no hubiera sido posible, gracias por siempre echarme porras para seguir adelante. A mis padres, a quienes agradezco de todo corazón, su amor y apoyo que me brindan día a día. Y a mis hermanos por estar siempre al pendiente de mí.
Mayo 2011
6
LISTA DE FIGURAS Figura
Página
2.1. Arquitectura del codificador Dirac……………………………………………………..9 2.2. Arquitectura del decodificador Dirac………………………………………………….10 2.3. Apoyo a formato de imagen 4:200 muestreo de croma, Superior: CIF, Inferior: QCIF……………………………………………………………………………...14 2.4. Piezas específicas para los perfiles de codificación H.264…………………………....19 3.1. Arquitectura de la Transformada Wavelet en Dirac………………………………......22 3.2. Frecuencia de Descomposición de Subbanda de la Transformada Wavelet Dirac………………………………………………………………………………………..23 3.3. Etapas de la Transformada Wavelet…………………………………………………...24 3.4. Descomposición de sub banda Wavelet relación entre padres e hijos………………...26 3.5 Cuantizador Uniforme y Zona Muerta………………………………………………....27 3.6. OBMC esquema que muestra los bloques superpuestos……………………………..28 4.1. Video original “foreman_cif.yuv” Secuencia CIF (352x288)………………………...31 4.2. PSNR (Y) Dirac y H.264 “foreman_cif.yuv” CIF………………………………..…...32 4.3. PSNR (Cb) Dirac y H.264 “foreman_cif.yuv” CIF……………………………....…...33 4.4. PSNR (Cr) Dirac y H.264 “foreman_cif.yuv” CIF………………………………..…..33 4.5. Video original “news_qcif.yuv” QCIF y “news_cif.yuv” CIF………………………..34 4.6. Dirac y H.264 “news_qcif.yuv” Secuencia QCIF………………………………...…...35 4.7. PSNR (Y) Dirac y H.264 “news_qcif.yuv” QCIF…………………………………….36 4.8. Dirac y H.264 “news_cif.yuv” Secuencia CIF……..………………………………....37 4.9. PSNR (Y) Dirac y H.264 “news_cif.yuv” CIF………………………..………………38
7
4.10. Video original “akiyo_qcif.yuv” Secuencia: QCIF……………………………..…...39 4.11. PSNR (Y) Dirac y H.264 “akiyo_qcif.yuv” QCIF………………………………..….40 4.12. Video original “bus_cif.yuv” Secuencia: CIF…………………………..……………41 4.13. PSNR (Y) Dirac y H.264 “bus_cif.yuv” CIF………………………………………...42 4.14. Video original “carphone_qcif.yuv” Secuencia: QCIF………………………………43 4.15. PSNR (Y) Dirac y H.264 “carphone_qcif.yuv” QCIF……………………………….44
8
LISTA DE TABLAS Tabla
Página
2.1 Formatos CIF y QCIF…………………………………………………………………...7 2.2 Comparación de Dirac con otros Códecs…………………………………………….. ..13 2.3 Perfiles de H.264 para usos particulares…...…………………………………………..16 2.4 H.264 / MPEG-4 Parte 10 Especificación de perfiles……………………………….....16 4.1 Análisis de la secuencia de video “foreman_cif.yuv” CIF…........................................32 4.2 Análisis de la secuencia de video “news.yuv” QCIF…………………………..………36 4.3 Análisis de la secuencia de video “news.yuv” CIF……………………….........………38 4.4 Análisis “akiyo_qcif.yuv” QCIF……………………………………………………….40 4.5 Análisis de la secuencia de video “bus_cif.yuv” CIF…………………………….……41 4.6 Análisis de la secuencia de video “carphone_qcif.yuv” QCIF………………………...43
9
LISTA DE ACRÓNIMOS 4K
4.000 píxeles de resolución horizontal
AFF
Formato Avanzado de Archivo (Advanced file format)
ASO
Orden de secuencia arbitraría (Arbitrary slice order)
AVC
Código de Video Avanzado (Advanced Video Coding)
BCC
Corporación
Británica
de
Radiodifusión
(British
Broadcasting
Corporation) Bitrate
Tasa de Bits
CAVLC
Adaptación de longitud variable en función del contexto de codificación (Context-based adaptive variable length coding)
CABAC
Contexto basado en la adaptación aritmética binaria de codificación (Context-based adaptive binary arithmetic coding)
CIF
Common Intermediate Format
Códec
Codificador-Decodificador
Codecs
Codificadores-Decodificadores
DCT
Coseno Discreto de Transformación (Discrete Cosine Transform)
DP
Partición de datos (Data partitioning)
DSL
Línea de abonado digital (Digital subcriber line)
FMO
Macro flexible para bloquear (Flexible macro block order)
Frames
Cuadros
Fps
Pies por segundo (Feet Per Second)
GOP
Grupo de Imagen
H.264
Codificador de video de alta comprensión
HD
Alta definición (High definition)
HDTV
Televisión de alta definición ( High definition televisión)
HH
Alto-Alto (High-High)
10
HL
Alto-Bajo (High-Low)
IEC
Comisión Electrotécnica Internacional (International Electrotechnical Commission)
I-PCM
Modulación de código (Pulse Code Modulation)
ISO
Organización Internacional de Normalización
LH
Bajo-Alto (Low-High)
LL
Bajo-Bajo (Low-Low)
MB
Vectores de movimiento (Motion vector)
MBAFF
Macro bloque del marco de adaptación / Campo (Macro block adaptive / field)
MPEG
Grupo de Expertos en Imágenes Móviles (Moving Picture Experts Group)
MPEG-2
Grupo de Expertos en Imágenes Móviles 2
MPEG-4
Grupo de Expertos en Imágenes Móviles 4
MVC
Video multi vista de codificación (Multi-view video coding)
NAL
Capa de abstracción de red
NTSC
Comité Nacional del Sistema de Televisión (National Television System Committee)
PAFF
Estructura imagen de Adaptación / Campo (Picture adaptive frame / field)
PAL
Línea alternada en fase (Phase Alternating Line)
PSNR
Relación Señal a Ruido de Pico (Peak Signal-to-Noise Ratio)
PVRs
Gravado de video personal ( Personal video recorder)
QCIF
Quarter Common Intermediate Format
QF
Factor de Calidad (Quality factor)
QP
Parámetro de cuantización (Quantization Parameter)
RDO
Tasa de optimización de la distorsión (Rate Distortion Optization)
RGB
Rojo, Verde y Azul (Red, Green and blue)
RS
Segmento redundante (Redundant slice)
11
Segmento B Bi direccional predictivo con código de división (Bi-directionally predictive coded slice) Segmento I
(Intra-coded slice)
Segmento P
(Predictive-coded slice)
SD
Definición estándar (Standard Definition)
SI
SVC
SP
Switched prediction
SVC
Codificación de video escalable (Scalable video coding)
VCL
Codificación de la capa de video (Video Coding Layer)
VLC
Cliente Video LAN (Video LAN Client)
WMV
Windows Media Video
12
LISTA DE ANOTACIONES Formatos de Video.- Los formatos de video representan
el tamaño y posición
miembro de la señal de video. Formato QCIF.- Es un formato para videoconferencias, define una resolución de la imagen que permite 30 cuadros por segundo con un tamaño de 144 líneas por 176 pixeles por línea, esto se refiere a un cuarto de la resolución de CIF. Su objetivo es ofrecer un formato de vídeo común reducido para los codificadores Formato CIF.- Es un formato que se utiliza para compatibilizar los diversos formatos de video digital. Su objetivo es ofrecer un formato de video común reducido para los codificadores. Define secuencias de video de 30 cuadros por segundo, donde cada cuadro contiene 288 líneas con 352 pixeles por línea, la línea presenta un aspecto en formato 4:3. Es utilizado en sistemas de videoconferencias que fácilmente soporta señales NTSC y PAL. H.264.- Es una norma que define a un Códec de video de alta comprensión. 4K.- Es un estándar emergente para la resolución en el cine digital y de gráficos por ordenador. NTSC.- Es la responsable de la configuración de la televisión y los estándares de video en todo el mundo. PAL.- Es un sistema de codificación empleado en transmisión de señales de televisión analógica en colores. Se deriva de NTSC con algunas mejoras. Es el estándar dominante. Luma.- Representa la parte blanca y negra del video. Croma.- El croma o inserción croma es una técnica audiovisual utilizada ampliamente tanto en cine y televisión como en fotografía, consiste en la sustitución de un fondo por otro mediante un ordenador, representa el color del video. Streaming.- Consiste en la distribución de audio o video por Internet. La palabra Steaming se refiere a que se trata de la corriente continua sin interrupción.
13
Blokiness.- Es la consecuencia de partes de una imagen de última hora en cuadros pequeños, debido a un exceso de presión o un archivo de video abrumado en el procesador de una computadora. MPEG-4 Parte 10 o AVC.- Estándar para la comprensión de video. RGB.- Es un modelo de color aditivo en el que se añaden luz roja, verde y azul. Codificación aritmética.- Se usa para crear una poderosa técnica de CABAC. Este tipo de codificación es sin perdidas. Tamaño de corte flexible.- Aumenta la eficacia de codificación mediante la reducción de los datos de cabecera. PSNR.- es un término utilizado en ingeniería para definir la relación entre la máxima energía posible de una señal y el ruido que afecta a su representación. Vectorscopio.- instrumento de medida utilizado en televisión para ver y medir la componente de color de la señal de vídeo. YUV.- Componente de luminancia y crominancia.
14
CAPITULO 1 INTRODUCCION 1.1 Introducción En la actualidad el uso de comunicación digital aumenta enormemente día con día, la comprensión de vídeo se ha convertido en una pieza muy importante para las nuevas tecnologías, desempeñando un papel integral que favorece el uso de multimedia a través de Internet. Con el rápido crecimiento de internet en el mundo digital y la introducción de los medios de alta definición y la capacidad de trasmitir lo más eficientemente posible. En la actualidad almacenar o trasmitir una secuencia de video digital es muy caro y lento por lo que precisa de codificadores que reduzcan el ancho de banda del video. Además existen multitud de estándares diferentes, especialmente en el ámbito informático. La mayoría de los codificadores de video comprimen la información para que pueda ser almacenada o transmitida ocupando el mínimo espacio posible. Para conseguirlo se aprovecha que las secuencias de video tienen redundancia en las dimensiones espacial y temporal. Por lo tanto, eliminando dicha información redundante se consigue codificar la información de manera más óptima. Para eliminar la información redundante en el plano temporal se utiliza la predicción por compensación de movimiento, donde se estima el movimiento entre bloques sucesivos de la imagen. Los bloques son formados por grupos de pixeles, generalmente de 8x8 o 16x16. Posteriormente se codifica la información de los vectores de movimiento y del error de predicción respecto al bloque anterior [27]. El códec Dirac es uno de los más recientes, es un códec de video de código abierto, llamado así en honor del científico Paul Dirac, el cual es basado en la transformada wavelet
15
y fue utilizado por primera vez en el 2008 durante las olimpiadas de Beijing por British Broadcasting Corporation (BBC) de Londres, la cual es la iniciadora del proyecto [28]. Dirac proporciona una eficiencia de comprensión, con una arquitectura simple, basado en herramientas básicas. El códec Dirac es investigado a detalle, con especial atención a su desempeño, en la presente investigación Dirac es comparado con el códec H.264. El análisis se realiza en términos visuales de calidad medidos por PSNR y tasa de bits. El objetivo general de Dirac es proporcionar la comprensión de video de alta calidad en la web hasta HD [7]. Dirac compite con otros formatos existentes, tales como H.264. La presente investigación es realizada para comprobar que tan eficiente es realmente el Códec Dirac, el cual será comparado con el códec H.264. En investigaciones anteriores se dice que Dirac es un Códec de comprensión de video de uso general adecuado para todo desde internet hasta televisión de alta definición [1]. Dirac puede comprimir cualquier tamaño de la imagen de baja resolución QCIF hasta de alta definición y más allá, similares a los Codecs de video comunes como la ISO / IEC, MPEG, MPEG-4 y WMV de Microsoft. Además promete un ahorro significativo en la tasa de datos y mejoras en la calidad sobre estos Codecs [7]. También emplea la compresión wavelet, en lugar del coseno discreto utilizado en la mayoría de otros Codecs, como H.264/MPEG-4 AVC. Dirac es uno de varios proyectos que han aplicado a ondas de compresión de vídeo y ha demostrado su viabilidad en el estándar de compresión JPEG 2000 para imágenes fotográficas [31]. Existen dos partes en el proceso del desarrollo de Dirac: una especificación de compresión para el flujo de bits y decodificador, y software para la compresión y descompresión. El software no está dirigido sólo para proporcionar referencias de codificación y decodificación, se trata de una aplicación prototipo que libremente se puede modificar e implementar. El decodificador, en particular, está diseñado para ser rápido y ágil. La especificación resultante es simple y sencilla de implementar y es optimizado para el rendimiento en tiempo real [2].
16
En esta investigación el rendimiento del códec Dirac ha sido analizado para secuencias de video QCIF y CIF, las cuales se comparan con el códec H.264 a diferentes velocidades de bits. Los capítulos 2 y 3 dan una amplia explicación del códec Dirac y el códec H.264. Se explican las arquitecturas del códec Dirac y diversas características de cada códec junto con las ventajas, características y aplicaciones. En el capítulo 4 se presentan los datos de prueba, resultados y conclusiones obtenidos. 1.2 Planteamiento del Problema 1.2.1 Definición del problema El Códec Dirac es una nueva tecnología en codificadores de video, creada y utilizada por la BBC de Londres para transmitir eventos especiales, llamado así en honor del científico británico Paul Dirac. La comunidad científica cada día toma más en cuenta y está más interesado en este Códec para formatos de video de alta definición, ya que es un Códec libre de patentes. Además, el Códec Dirac ofrece herramientas de comprensión y descomprensión de video para propósitos generales, a resoluciones desde QCIF hasta HDTV. Este Códec es muy importante en el sector audio visual ya que supone una importante pieza en el futuro. A la fecha no existe comparación de la eficiencia de esta tecnología en cuanto a capacidad de codificación y medidas subjetivas (calidad en un número determinado de secuencias de video) para la recuperación del video en el decodificador. 1.2.2 Objetivos Analizar la eficiencia de calidad del Códec Dirac por medio de las secuencias QCIF y CIF con el fin de estudiar la calidad de video en el lado del codificador.
17
1.2.3 Preguntas de investigación ¿Qué es Dirac? ¿Para qué sirve Dirac? ¿Cómo funciona Dirac? ¿Qué es H.264? ¿Para qué es H.264? ¿Qué son los formatos de video? ¿Cómo se mide la eficiencia del Códec Dirac? ¿Cómo se compara el codificador Dirac con el desempeño del codificador H.264? ¿Cuál es la eficiencia del Códec Dirac?
1.2.4 Justificación La presente investigación se realiza para comprobar que tan eficiente es realmente el Códec Dirac, el cual en investigaciones anteriores se dice que es un Códec de comprensión de video de uso general adecuado para todo desde internet hasta televisión de alta definición y el cine electrónico [1]. Dirac está diseñado para ser rápido, cuenta con una opción muy interesante para desarrollos independientes ya que no cuenta con patentes e incluso para los programas profesionales como Adobe Premier. Dirac utiliza una forma más flexible y eficiente de la entropía de codificación llamado codificación aritmética, que contiene los bits de manera eficiente en el flujo de bits [2]. Además es un códec de video de última generación que utiliza técnicas modernas, como la transformada wavelet y codificación aritmética. En esta investigación se comprobara si realmente lo que se dice del Códec Dirac es verdadero, comparándolo con el Códec H.264. 1.2.5 Delimitación
18
Utilizaremos los Códec Dirac y H.264 para realizar las comparaciones, por medio de los formatos QCIF y CIF, debido a que son los formatos que soportan ambos codificadores. Para obtener el Códec Dirac se compilará el código fuente del software utilizando Visual C ++ 2008.
19
CAPÍTULO 2 MARCO TEÓRICO El Códec Dirac promete ser un buen codificador. El objetivo de Dirac es proporcionar la comprensión de video de alta calidad de video en la web hasta HD [7] y ser competitivos con otros Codecs, fue elaborado en base a la relación de la cantidad de compresión y calidad perceptual obtenida por la BBC de Londres. Dirac ha sido desarrollado como una herramienta de investigación para el desarrollo de posteriores proyectos, no como un producto [3]. Existen múltiples y variadas razones que han llevado a la BCC a apoyar el desarrollo de Dirac, algunas van desde aspectos técnicos, como la necesidad de medición de la audiencia de sus canales de entretenimiento hasta los sistemas de transmisión de televisión. Dirac puede comprimir cualquier tamaño de cuadros de video de baja resolución QCIF (176x144 píxeles) hasta de alta definición (1920x1080 píxeles) y más allá, similares a los Codecs de video comunes como la ISO / IEC, MPEG, MPEG-4 y WMV de Microsoft. Sin embargo promete un ahorro significativo en la tasa de datos y mejoras en la calidad sobre estos Codecs [7]. Dirac utiliza comprensión con la transformada wavelet, compensación de movimiento y codificación aritmética para eliminar redundancias dentro de la imagen. La transformada separa en diferentes bandas frecuenciales con diferentes resoluciones, esto es, utiliza la transformada sub muestreada. En el codificador se puede seleccionar una de varias transformadas wavelet la cual se aplicará a toda la secuencia de video. La transformada wavelets es una representación lineal tiempo-frecuencia similar a la transformada Fourier que representa una señal en términos de versiones trasladadas y dilatadas de una onda finita (denominada ondula madre) [5,6]. Además, Dirac es
20
compatible con cualquier marco de dimensiones (QCIF a HDTV) y formato común de croma (luminancia sólo, 4:4:4, 4:2:2, 4:2:0) por medio del relleno del Marco. El relleno asegura que la transformada wavelet se puede aplicar correctamente [4]. El Códec Dirac opera con los formatos QCIF y CIF, el formato QCIF posee un cuarto de los píxeles del formato CIF, es un formato para video conferencias que permiten 30 cuadros por segundo. El formato CIF es un formato de video no entrelazado, con una resolución de (352x288) puntos por trama y con una tasa de tramas típica de 30 a 15 tramas. Estos valores corresponden a la mitad de las líneas activas de una señal de televisión [10]. CIF define secuencias de video de 29,97 imágenes por segundo, donde cada una de ellas contiene 288 líneas con 352 píxeles por línea. La imagen definida con estos parámetros presenta una relación de aspecto en formato 4:3 [11]. Tabla 2.1 Formatos CIF y QCIF [9].
La figura 2.1 muestra la arquitectura del codificador Dirac. El primer frame o cuadro de video entra por Vin, éste es transformado por la transformada wavelet y cuantizado utilizando cuantizadores gauseanos, la salida de estos cuantizadores es enviada al codificador de entropía o codificador aritmético para ser codificado sin pérdidas en una secuencia de unos y ceros. También, al mismo cuadro se le aplica el proceso inverso, o sea, se le aplica cuantización inversa y las transformada wavelet inversa. El cuadro recuperado es almacenado en una memoria y marcado como cuadro I. Después, se introduce el siguiente cuadro por Vin, al cual denominaremos P2. La imagen de este cuadro puede estar desplazado con respecto a la imagen en el cuadro I que se codificó anteriormente, estos desplazamientos deben ser buscados en la imagen I, esto es, el cuadro I se divide en ventanas de 32x32. El cuadro P2 se divide en cuadros de 8x8. Cada ventana de 32x32 en I corresponde a 16 cuadros de 8x8 en P2 a los cuales denominaremos CP. Cada cuadro CP se busca en su correspondiente ventana I calculando las diferencias (residuos) dentro de esta
ventana. Esto es, se desplaza el cuadro CP dentro de la ventana de 32x32 hasta que se encuentra el mínimo y se obtiene la diferencia entre el cuadro de 8x8 CP y el cuadro de 8x8 encontrado dentro de la ventana I que denominaremos CI. La diferencias la denominaremos D = CP – CI. Después, se calcula un vector desde inicio de la posición original del CP al inicio de la posición de CI en el cuadro I. Esto se realiza con todo el cuadro P2, y enseguida, se obtiene un cuadro de residuos con sus correspondientes vectores de movimiento. Este cuadro de residuos se llama compensación de movimiento. Posteriormente, los residuos son transformados, cuantizados y codificados utilizando en codificador aritmético. Los vectores de movimiento también se codifican utilizando el codificador aritmético. El cuadro de residuos se suma con el cuadro I utilizando los vectores de movimiento para producir el cuadro P, O sea, a cada residuo D, de 8x8, se le localiza en el cuadro I utilizando su correspondiente vector de movimiento y se realiza la operación inversa CP = D+CI. Con lo que se obtiene una versión aproximada del segundo cuadro de entrada P2 y se almacena en memoria. Existe la posibilidad de que en cuadros subsecuentes se utilice el cuadro P y el cuadro I para obtener residuos, el cuadro reconstruido se llamaría cuadro B, el cual es el resultado de una predicción bidireccional del cuadro P y del cuadro I con sus correspondientes vectores de movimiento este cuadro B también se almacena en memoria. Usualmente, después de 12 frames o cuadros predichos, se vuelve a calcular un nuevo cuadro I. Dirac está basado en una tecnología de código abierto. El desempeño general de los codificadores es mucho mejor que MPEG-2 y ligeramente peor que H.264/AVC en la actual etapa de desarrollo [8]. El decodificador revierte el proceso de codificación. De hecho, el codificador al reconstruir cualquier cuadro en base a residuos y vectores de movimiento, emula la función del decodificador, es por esta razón que el codificador siempre es más complejo que el decodificador. 2.1 Codificador Dirac
Figura 2.1. Arquitectura del codificador Dirac [8].
2.2 Decodificador Dirac En la figura 2.2. Se muestra como el decodificador realiza las operaciones inversas al codificador [7].
Figura 2.2. Arquitectura del decodificador Dirac [7]. 2.3 Características de Dirac [13] A continuación se muestran las características del Códec Dirac:
24
Apoyo directo de múltiples formatos de imagen
Apoyo directo de 4K cine electrónico a través del formato QCIF
Apoyo directo de múltiples formatos de croma por ejemplo, 4:4:4 / 4:2:2 / 4:2:0
Apoyo directo de múltiples profundidades de bits por ejemplo, de 8 bits a 16 bits
Apoyo directo de entrelazado a través de los metadatos
Apoyo directo de distintas velocidades de cuadro de 23.97 Fps. a 60 Fps.
Definibles proporciones de pixeles
Rangos definibles de señal y compensaciones
Múltiples espacios de color con los metadatos para describir
Color de primarias y matrices de color
Transferencia de funciones
Número de 32 bits de marco (60 Fps.)
Una selección de los filtros wavelet múltiples (incluidos los filtros optimizados de
baja conversión)
Profundidad definibles de wavelets
2.4 Aplicaciones de Dirac [1] A continuación se muestran las áreas de aplicación y uso del Códec Dirac:
Radiodifusión
Escritorio de producción
Clip de distribución
Transmisión en vivo de video
Enlace de noticias
Intermedio digital a película de almacenamiento de archivos
Transferencia de intercambio de archivos
Televisión de alta definición con SD, capacidad de transmisión simultanea
Archivo de almacenamiento
PVRs
2.5 Ventajas de Dirac [1] A continuación se muestran las ventajas del Códec Dirac:
Dirac es una tecnología abierta – la eliminación de costos de licenciamiento de
software, el hardware y el flujo de contenido
Flexibilidad técnica de Dirac ofrece un paquete versátil, que facilita la operación de
más de muchas aplicaciones y, por consiguiente ahorro de dinero
Capacidad de comprimir archivos de alta resolución para la producción, contenida
de la emisión, y las aplicaciones web 2.0. La comprensión puede ser sin pérdida o sin pérdida visual
Puede explotar de comprensión con pérdida de grupo largo de la imagen (GOP) en
formato para la radiodifusión y otros medios de distribución
25
La eficiencia de la calidad o comprensión es similar a la de H.264 [14], pero sin la
complejidad de la codificación o la carga de la licencia
Puede lograr un buen rendimiento de comprensión subjetiva utilizando algunas
herramientas guiadas por criterios psico visual
Más espacio para las futuras implementaciones y por lo tanto más posibilidades de
mejorar el rendimiento
Puede mejorar la calidad mediante la concentración de más en grandes errores y
restar importancia a los errores de alta frecuencia
Relativa simplicidad y rendimiento
Ofrece buena calidad a baja velocidad de bits, lo que lleva a costos más bajos
Ofrece buena calidad con bajo retardo, ideal para aplicaciones de transmisión en
vivo en los estudios y las emisiones fuera
Apto para todo, desde lo que fluye de Internet a televisión de alta definición y el
cine electrónico
La velocidad de reproducción puede ser mejorada ya que el software está
optimizado 2.6 Comparación de Dirac con otros Codecs A continuación se muestra la comparación del códec Dirac con otros Codecs.
26
Tabla 2.2 Comparación de Dirac con otros Codecs [15].
2.7 Codificación de video H.264 H.264 es un estándar abierto, con licencia compatible con las técnicas más eficientes de compresión de vídeo disponibles hoy en día, y es equivalente a MPEG-4 Parte 10, o MPEG-4 AVC [20]. H.264 / MPEG-4 tiene una estructura en capas que se componen de dos capas: NAL y VCL. Los resúmenes de los datos VCL y NAL tienen información de cabecera sobre el formato de VCL. El cual es conveniente para el transporte de las capas de transporte o medios de almacenamiento. La unidad NAL define un formato genérico para su uso, basados en paquetes y sistemas de transmisión de bits. La VCL es un núcleo de codificación de capa y se concentra en lograr la máxima eficiencia de codificación. La estructura de capa soporta 4:2:0 croma de muestreo del formato de la imagen como en los formatos QCIF y CIF el cual se muestra en la figura 2.3.
Figura 2.3. Apoyo a formato de imagen 4:2:0 muestreo de croma, Superior: CIF, Inferior: QCIF [14].
27
El estándar H.264 es una “familia de normas”, que incluyen los siguientes conjuntos de capacidades: •
Perfil básico (PA): El perfil de referencia incluye los segmentos I, P y el tramo de
codificación, herramientas mejoradas de recuperación de errores (bloque flexible macro-pedido FMO), y CAVLC. Principalmente para aplicaciones de bajo costo con recursos informáticos limitados, este perfil se utiliza ampliamente en aplicaciones de videoconferencia y móvil. •
Perfil principal (MP): Originalmente concebido como el perfil de consumo
corriente para aplicaciones de transmisión y almacenamiento. El perfil principal que incluye, I-, P- y B-partes, entrelazado de codificación, CAVLC y CABAC. Este perfil está diseñado para proporcionar la mayor eficacia posible de codificación. •
Perfil extendido (XP): El perfil extendido es un superconjunto del perfil de
referencia. Incluye B-, SP- y SI-partes, particiones de datos, herramientas de codificación y entrelazado, además de herramientas del perfil de referencia. Por lo tanto, es más complejo pero también proporciona una mejor eficacia de la codificación. Se pretende que el perfil de streaming de vídeo, tiene una capacidad de compresión relativamente alta y la solides de las pérdidas de datos y conmutación de corriente del servidor. •
Alto Perfil (HIP): El perfil principal de las aplicaciones de almacenamiento y
difusión del disco, sobre todo para la televisión de alta definición. Existen cuatro altos perfiles [21]:
-
Alto perfil.- Apoya el vídeo de 8 bits con muestreo 4:2:0 para aplicaciones
con alta resolución.
28
-
Alto perfil 10.- Apoya la toma de muestras 4:2:0 con un máximo de 10 bits
de precisión de la representación por muestra. -
Alto perfil 4:2:2.- Soporta el muestreo de croma 4:2:2 y hasta 10 bits por
muestra. -
Alto perfil 4:4:4.- Soporta el muestreo de croma 4:4:4, hasta 12 bits por
muestra, y un número entero de color residual transformado para la codificación de la señal RGB.
Tabla 2.3 Perfiles de H.264 para usos particulares [14].
29
Tabla 2.4 H.264 / MPEG-4 Parte 10 Especificación de perfiles [14].
Las partes más comunes de codificación para los perfiles son los siguientes [14]:
Segmento I: utiliza la predicción sólo a partir de muestras descifrada en la misma
división
Segmento P: utiliza la predicción de cosas, de imágenes de referencia previamente
descifradas, utilizando la mayoría de vectores de movimiento y un índice de referencia para predecir los valores de la muestra de cada bloque
CAVLC: para la entropía de codificación
Las partes más comunes de codificación para el perfil de referencia son las siguientes:
30
Segmentos comunes: I segmento, P segmento, CAVLC
FMO: macro-bloques no necesariamente en la exploración de trama orden. El mapa
asigna macro-bloques a un grupo de corte
ASO: la dirección de macro-bloque de la primera macro-bloque de un trozo de una
imagen puede ser menor que la dirección de macro-bloque de la primera macro-bloque de alguna otra parte anterior de la misma imagen codificada
RS: este segmento pertenece a la codificación de datos redundantes obtenidos por la
tasa de codificación igual o diferente, en comparación con los datos anteriores codificados de la misma división Las partes más comunes de codificación para el perfil principal son los siguientes:
Segmentos comunes: Segmento I, Segmento P, CAVLC
Segmento B: el segmento de código mediante el uso de la predicción de cosas, de
imágenes de referencia previamente descifrados, con un máximo de dos vectores de movimiento y los índices de referencia para predecir los valores de la muestra de cada bloque
Ponderado de predicción: ajuste de escala mediante la aplicación de un factor de
ponderación de las muestras de movimiento compensado datos de la predicción en P o B división
CABAC: para la codificación de la entropía
Las partes más comunes de codificación para el perfil extendido son los siguientes:
Segmentos comunes: Segmento I, Segmento P, CAVLC
Segmento SP: especialmente codificados para la conmutación eficiente entre
secuencias de vídeo, similar a la codificación de un segmento P
Segmento SI: encendido, similar a la codificación de un segmento I
Partición de datos: los datos codificados se colocan en las particiones de datos por
separado, cada partición se puede colocar en la unidad de capa diferente
31
FMO, ASO
Segmento RS, Segmento B
Predicción Ponderado
Las partes específicas de codificación para los diferentes perfiles están representadas en la figura 2.4.
32
Figura 2.4. Piezas específicas para los perfiles de codificación H.264 [14].
2.8 Características de H.264 [20, 21] H.264/AVC/MPEG-4 Parte 10, contiene una serie de características nuevas que le permiten comprimir el vídeo mucho más eficaz que los estándares anteriores y proporcionar una mayor flexibilidad para las aplicaciones en una amplia variedad de entornos de red. A continuación se mencionan algunas de las características [20, 21]: Multi-imagen y predicción inter-foto incluido el tamaño de bloque variable de
compensación de movimiento, la predicción ponderada, la exactitud de cuartos de píxeles de la compensación de movimiento, sin restricciones de múltiples vectores de movimiento por macro-bloque, del filtrado para la predicción de luminancia media de la muestra PEL y el apoyo de imágenes de referencia múltiples
33
Transforma la longitud de palabra 4 x 4 para 16 bits
Codificación aritmética
Conjunto de parámetros de estructura
Tamaño de corte flexible
PAFF
MBAFF
Sin pérdidas macro-bloque de codificación y ordenación flexible macro-bloque
Vídeos flexibles de escaneo entrelazado de codificación
Transforma las nuevas características de diseño, incluyendo: número entero
resultado exacto (4 × 4) y (8 × 8) transforma los bloques espaciales
Diseño de cuantificación incluyendo: control logarítmica de tamaño de paso para
facilitar la gestión de la velocidad de bits y en circuito de bloqueo del filtro para evitar el bloqueo de los artefactos
La entropía de codificación de diseño, incluyendo: CABAC, CAVLC y VLC
Pérdida de características que incluyen la resistencia: NAL, FMO, DP y RS
Apoyo de blanco y negro, 4:2:0, 4:2:2, y 4:4:4 sub-muestreo de croma
Apoyo de precisión a la profundidad de muestreo de bits entre 8 a 12 bits por
muestra 2.9 Aplicaciones de H.264 [14] El H.264 / MPEG-4 parte 10 AVC tiene una amplia gama de aplicaciones de contenido de vídeo. Algunos de ellos se enumeran a continuación:
34
Vídeo en tiempo real a través de Internet
Televisión por cable en redes ópticas
Servicios de difusión directa por satélite de vídeo
DSL, servicios de vídeo
Radiodifusión de televisión digital terrestre, cable modem
Medios Interactivos de almacenamiento
Correo multimedia
35
Servicios multimedia sobre redes de paquetes
Servicios de conversación en tiempo real (videoconferencia, etc.)
Vigilancia remota de vídeo
Medios de almacenamiento de serie (videograbadora digital, etc.)
D Cinema de distribución de contenidos, edición de estudio
SVC y MVC, se han adoptado como extensiones de la H.264
CAPITULO 3 MATERIALES Y MÉTODOS 3.1. Bloques del Sistema Codificador A continuación se explica cada uno de los bloques de la arquitectura del codificador Dirac: 3.1.1. Transformada Wavelet Dirac utiliza la transformada Wavelet discreta como un remplazo para el DCT, el cual se utiliza en muchos codificadores. La transformada wavelet ha demostrado proporcionar a una técnica más eficiente que el bloqueo transformador con imágenes fijas [16]. Dentro de los filtros de ondulación de Dirac, se codifican los datos en tres etapas, las indicaciones se muestran en la figura 3.1. En la ondulación de Daubechies los filtros se utilizan para transformar y para dividir los datos en los sub bandas las cuales se cuantifican con los parámetros correspondientes de RDO y de ahí la longitud de la variable se codifica como lo muestra la siguiente figura. Estas tres etapas se invierten en el decodificador.
Figura 3.1. Arquitectura de la Transformada Wavelet en Dirac [16].
36
Dirac adopta 4 niveles de la transformada wavelet, el filtro producido para las sub bandas llamado LL, LH, HL, HH. La banda de LL se codifica iterativa para obtener los datos necesarios.
Cada sub banda contiene coeficientes que representan las áreas
específicas dentro del marco; los coeficientes de diversas bandas que se relacionan en la misma área se pueden explotar para la correlación. Esta independencia de sub banda puede ser modelada como relación padre-hijo y aprovechar los armónicos del espectro. Cifrando al padre antes que al hijo (LF-HF) la probabilidad de los valores cero puede ser estimado mejorando la eficiencia. La única restricción para la descomposición wavelet es que debe haber un número exacto de macro bloques horizontales y verticales en el que las dimensiones sean divisibles por 16; típicamente un macro bloque debe ser de 4X4 fijado en bloques. Sin embargo esta restricción se puede eliminar automáticamente rellenando los datos con negro antes de la codificación, pero tiene que ser ejecutada dentro de Dirac [1].
Figura 3.2. Frecuencia de Descomposición de la Transformada Wavelet [1].
La siguiente figura muestra una imagen original a la izquierda, en primer lugar la transformada wavelet en el medio y segundo lugar la transformada en la derecha. Considerando que el primer nivel de transformación, representa un cero medio gris. Aunque la transformación es del mismo tamaño que el original, la mayoría de la información se concentra ahora en la frecuencia baja esquina superior izquierda. Es posible que para ver detalle en otras partes de la transformación, pero es a un nivel mucho más
37
bajo. La transformación de los paquetes de la mayor parte de la información es solo una parte de la transformación (superior izquierda de la frecuencia), lo que nos permite lograr una comprensión [2].
Figura 3.3. Etapas de la Transformada Wavelet [2].
3.1.2. Transformada Inversa Si la transformada inversa se ha aplicado correctamente antes de la codificación y sin pérdida de codificación empleada, el recorte no será necesario, y al revertir las operaciones se reproduce la codificación Y, CO y CG sin pérdida de IR (Y es de 8 bits) e IG (CO y CG será de 9 bits), produciendo un proceso transparente de RGB de 8 bits a RGB de 8 bits del sistema de codificación. En la codificación YCoCg, IR entero, IG, IB debe calcularse directamente a partir del descifrado Y, C1 (CO) y C2 (GC) por los valores [36]: Y − = Parámetros de video [Desplazamiento de Luma] Co = C1 − = Parámetros de video [Desplazamiento de Croma] Cg = C2 − = Parámetros de video [Desplazamiento de Croma] t = Y − (Cg>> 1) IG = t + Cg IB = t − (Co >> 1) IR = IB + Co
38
(3.1)
3.1.3. Codificación Aritmética La entropía de codificación se aplica para reducir al mínimo el número de bits utilizados. La clave de codificación de entropía es utilizar un número variable de bits para los diferentes valores. Normalmente se utilizan ocho bits para definir el brillo de un píxel. En la transformada wavelet, podemos ver en la figura 3.3, que muchos de los valores son aproximadamente cero. Si sólo usamos un solo bit para indicar un valor de cero, inmediatamente necesita muchos menos bits para almacenar la transformación. Por supuesto, esto sólo funciona después de la transformación wavelet debido a que pocos de los valores de la imagen original son cero. Dirac utiliza una técnica avanzada de la entropía de codificación llamado "codificación aritmética" [17], que es a la vez flexible y eficiente. Los valores distintos de cero en la mayor sub-bandas de frecuencias de la transformada wavelet, están a menudo en la misma parte de la imagen como lo son en menor sub-bandas de frecuencias. Es decir, hay correlaciones estadísticas entre sub-bandas. Dirac crea modelos estadísticos de estas correlaciones y la codificación aritmética nos permite aprovechar estas correlaciones para lograr una mejor compresión [18]. La información del movimiento estimado en el codificador también utiliza modelos estadísticos y la codificación aritmética para comprimirlo en el menor número de bits. Estos datos comprimidos se ponen en el flujo de bits, para ser utilizado por el decodificador como parte del vídeo comprimido. 3.1.4. Estimación de Movimiento Esta tarea es específica para el codificador, y representa la parte más pesada del proceso de codificación. Dirac utiliza tres etapas de enfoque, utilizando muestras de luminancia solamente. En primer lugar, el movimiento de vectores se encuentra en cada bloque con una precisión de píxeles con estimación de movimiento jerárquico. En la segunda etapa los vectores se encuentran para cada bloque con una precisión sub-pixel, con soporte hasta 1.8 pixeles. En la tercera etapa, se toma la decisión de elegir que calculo se va
39
a utilizar y el movimiento global de vectores mediante la agrupación de bloques con el movimiento similar.
Figura 3.4. Descomposición de la Sub banda Wavelet relación entre padres e hijos [1].
Dirac utiliza tres tipos de imagen. Imágenes Intra (I), Imágenes nivel 1 (L1) e imágenes nivel 2 (L2). Las imágenes Intra se codifican sin hacer referencia a otras imágenes de secuencia, las imágenes nivel 1 y 2 son imágenes de interés, es decir, se codifican con referencia a otras imágenes previamente codificadas. Las imágenes L1 son predecidas a partir de imágenes I, solo de la cara (también conocidos como P-imágenes), mientras que las imágenes L2 son previstas a partir de ambas referencias anteriores y posteriores, (También conocidas como B-imágenes). Después de la transformada wavelet, se cuantifica el coeficiente de cada sub banda. Dirac utiliza una cuantificación de zona muerta, las indicaciones se muestran en la figura 3.5, que se diferencia de la cuantificación ortodoxa, haciendo el primer sistema de paso de la cuantificación dos veces más ancho. Esto permite que Dirac realice una cuantificación más grande en valores más pequeños. Se realiza la predicción del coeficiente una vez que la transformada wavelet se ha terminado, y se utiliza para quitar cualquier dependencia residual entre los coeficientes el tener en cuenta una codificación más eficaz de la entropía de datos. El coeficiente de predicción se produce con la región LL en uno por píxel. Un coeficiente es predicho por el valor medio de los píxeles circundantes del píxel actual. La diferencia se cuantifica y se agrega a una última etapa para la reconstrucción. Los
40
parámetros de codificación se adaptan a los pasos de cuantificación de acuerdo a los parámetros RDO necesarios para alcanzar una calidad métrica determinada [1].
Figura 3.5. Cuantizador Uniforme y Zona Muerta [1].
3.1.5. Compensación de Movimiento Dirac utiliza la compensación de movimiento, al igual que muchos otros sistemas, para lograr una buena compresión [11]. Para evitar el bloqueo de artefactos comunes en otros Codecs, estimando movimiento con superposición de bloques. Esta información debe ser enviada al codificador. Sin embargo debe haber un exacto numero de macro bloques (4x4 conjunto de bloques) horizontal y vertical, lo cual se logra mediante el relleno de los datos. El método OBMC se encuentra en una máscara lineal de rampa separable, que actúan como una función de peso en el bloque. Un pixel puede estar comprendido en un solo bloque o en un máximo de cuarto si se encuentra en la esquina de un bloque [19], como se muestra en la figura 3.6.
41
Figura 3.6. OBMC esquema que muestra los bloques superpuestos [19].
Dirac también apoya el uso del cálculo del movimiento global, el cual puede indicar el movimiento de la cámara, por ejemplo, el zoom, en unos pocos bytes y reducir así la tasa de bits. A bajas velocidades de bits que puede ser útil para predecir simplemente un marco usando sólo la información de movimiento sin transmitir ningún coeficiente wavelet en absoluto. Aún más extrema puede predecir simplemente un marco a ser el mismo que un cuadro anterior. Estas técnicas, que son apoyados por Dirac, puede ofrecer importantes reducciones de tasa de bits cuando sólo se requiere una modesta calidad, por ejemplo, para el streaming de Internet [1]. La compensación de movimiento en Dirac bloquea el uso, pero los bloques se traslapan. A través de que se traslapan, hay una transición suave entre las predicciones proporcionados por los vectores de movimiento diferentes. El resultado es que incluso a bajas tasas de bits, Dirac es generalmente libre de blockiness, así como dentro los marcos. 3.2. Bloques del Sistema Decodificador A continuación se explica cada uno de los bloques de la arquitectura del decodificador Dirac.
42
3.2.1 Decodificador de Entropía En esta primera etapa, la entrada de flujo de bits codificados se descifra mediante la técnica de decodificación de la entropía. El decodificador está incrustado en el codificador y por lo tanto, podemos obtener una imagen reconstruida después de la codificación y decodificación. El codificador es utilizado por el decodificador para la reconstrucción, el trabajo es la sincronización. Si no se mantiene entonces el error de cuantificación se acumula. 3.2.2 Cuantización Escalar Inversa La Cuantización escalar inversa es una de las últimas etapas, en la cual la transformada inversa se aplica a los datos para producir la salida descodificada, sin compresión de vídeo. 3.2.3 Compensación de Movimiento La compensación de movimiento es una de las últimas etapas del decodificador, una compensación es entre la calidad de vídeo y la velocidad de movimiento vector bits. Estas técnicas pueden proporcionar reducciones sustanciales y tasa de bits con sólo una calidad modesta necesaria.
43
CAPITULO 4 RESULTADOS Y CONCLUSIONES 4.1 Implementación Dirac es interpretado en el lenguaje C++ de programación que permite el desarrollo orientado a objetos en todos los sistemas operativos más comunes. El código C++ compila para producir las bibliotecas de funciones comunes, la valoración de movimiento, codificación y decodificación, que tiene una interfaz que les permite llamar desde C [2]. Para realizar este proyecto se utilizo el programa de Dirac en Microsoft Visual C + + 2008 Express Edition. 4.2 Resultados Este estudio consiste en mostrar la eficiencia de codificación del códec Dirac, en comparación con el códec H.264, establecidos en términos de calidad visual, se utilizo el formato 4:2:0 con secuencias QCIF y CIF, para mostrar la eficiencia del códec Dirac se realizaron pruebas de PSNR y bitrate, en algunas de las secuencias de video también se obtuvo el QF para el caso de Dirac y el QP para H.264. Para garantizar la exactitud de las pruebas, el códec Dirac se codifico con el mismo bitrate de los datos obtenidos de H.264. Se utilizaron 5 videos con diferentes grados y tipos de movimiento para las simulaciones. Las secuencias de video de “Foreman” CIF (352x288 pixeles) [29], “News” QCIF (176x144 pixeles) y CIF (352x288 pixeles) [29], “Akiyo” QCIF (176x144 pixeles) [29], “Bus” CIF (352x288 pixeles), “Carphone” QCIF (176x144 pixeles) [29] se han utilizado para el proceso de las pruebas de Dirac. En estas pruebas, las secuencias de video han sido codificadas y decodificadas en Dirac, variando el bitrate y en algunos casos el QF.
44
Se utilizo MATLAB para obtener los PSNR de las secuencias de video codificadas y decodificadas de Dirac. I.
En la primera prueba se utiliza la secuencia de video de “Foreman” CIF (352x288),
en la figura 4.1 se muestra el video original que contiene 298 frames de los cuales se analizaron 298 frames. En esta secuencia el QF es de 5 en todos los casos, se obtuvo el PSNR de Y, u (Cb) y v (Cr) después de codificar y decodificar las secuencias de video con los diferentes bitrates en Dirac como se muestra en la tabla 4.1 y en las figuras 4.2, 4.3 y 4.4.
Figura 4.1. Video original “foreman_cif.yuv” Secuencia CIF (352x288) [29].
45
Tabla 4.1 Análisis de la secuencia de video “foreman_cif.yuv” CIF. DIRAC
H.264
Bitrate(Kb/sec )
PSNR (Y)
PSNR (u(Cb))
PSNR (v(Cr))
Bitrate(Kb/sec)
PSNR (Y)
PSNR (u(Cb))
PSNR (v(Cr))
102
30.926
35.7498
37.0434
102
31.80
40.08
37.76
220
34.36
37.5811
39.557
220
34.85
41.92
39.56
356
37.209
39.7929
41.9484
356
36.18
42.76
40.12
492
38.776
41.2715
43.3071
492
37.44
43.45
40.36
756
40.746
42.9833
44.6673
756
38.56
43.98
41.08
985
42.062
43.91
45.6395
985
39.83
44.37
41.78
1185
42.927
44.5328
46.2004
1185
40.20
44.78
41.92
Figura 4.2. PSNR (Y) Dirac y H.264 “foreman_cif.yuv” CIF.
46
47
Figura 4.3. PSNR (Cb) Dirac y H.264 “foreman_cif.yuv” CIF.
Figura 4.4. PSNR (Cr) Dirac y H.264 “foreman_cif.yuv” CIF.
Para la secuencia de video “foreman” CIF, el códec Dirac muestra una ganancia baja con respecto al códec H.264 que tiene una ganancia mayor, a una velocidad binaria de 102 Kb/sec a 1185 Kb/sec, tanto para Y como para Cr y Cb. Esto se muestra
48
claramente en las figuras 4.2, 4.3 y 4.4. La secuencia “foreman” tiene movimiento en la cara de la persona y un movimiento de cámara, hay que tomar en cuenta que se analizo los 298 con los que cuenta esta secuencia de video. II.
En esta prueba se utiliza la secuencia de video de “News” QCIF (176x144) y CIF
(352x288), En la figura 4.5 se muestra el video original que contiene 298 frames de los cuales se analizaron 100, para ambas secuencias, en las cuales se utilizo en Dirac un QF variado de 0 a 10 y un QP de 0 a 50 para H.264 como se muestra en la figura 4.6 para la secuencia QCIF, y en la figura 4.8 para la secuencia CIF. Además se obtuvo el PSNR de Y después de codificar y decodificar las secuencias de video con los diferentes bitrates que se muestran en la figura 4.7 y tabla 4.2 para QCIF y en la figura 4.9 y la tabla 4.3 para CIF.
Figura 4.5. Video original “news_qcif.yuv” QCIF y “news_cif.yuv” CIF [29].
49
Figura 4.6. Dirac y H.264 “news_qcif.yuv” Secuencia QCIF [29, 34].
50
Tabla 4.2 Análisis de la secuencia de video “news.yuv” QCIF. DIRAC
H.264
QF
Bitrate (Kb/sec)
PSNR Y
QP
Bitrate (Kb/sec)
PSNR Y
10
226.920
46.087
0
226.920
66.767
8
91.395
40.448
10
91.395
51.357
5
13.176
26.130
25
13.176
39.473
3
1.972
24.895
40
1.972
28.089
0
0.681
22.968
50
0.681
21.780
Figura 4.7. PSNR (Y) Dirac y H.264 “news_qcif.yuv” QCIF.
Para la secuencia de video “news” QCIF, Dirac muestra una ganancia baja respecto a H.264 que tiene una ganancia mayor, a una velocidad binaria de 0.681 Kb/sec a 226.920 Kb/sec. La secuencia “news” no presenta movimiento de cámara. Sin embargo el fondo
51
contiene movimiento debido a escenas de ballet. Los objetos de enfrente (2 personas) presentan movimiento ligero de cara. Para esta secuencia se analizaron 100 frames de 298.
52
Figura 4.8. Dirac y H.264 “news_cif.yuv” Secuencia CIF [29, 34].
53
Tabla 4.3 Análisis de la secuencia de video “news.yuv” CIF. DIRAC
H.264
QF
Bitrate(Kb/sec)
PSNR Y
QP
Bitrate(Kb/sec)
PSNR Y
10
963.130
46.7070
0
963.130
45.8237
8
401.650
43.4084
10
401.650
42.6281
5
38.624
28.6117
25
38.624
28.6117
3
5.826
27.1693
40
5.826
29.6997
0
2.060
25.1507
50
2.060
30.3389
Figura 4.9. PSNR (Y) Dirac y H.264 “news_cif.yuv” CIF
Para la secuencia de video “news” CIF, Dirac muestra al inicio una ganancia baja, a una velocidad binaria de 2.060 Kb/sec a 38.624 Kb/sec respecto a H.264 que tiene una
54
ganancia mayor, para después mostrar una mayor ganancia de a una velocidad binaria de 38.624 Kb/sec a 963.130 Kb/sec, a diferencia de H.264 que muestra una menor ganancia. Para esta secuencia se analizaron 100 frames de 298. La secuencia “news” no presenta movimiento de cámara. Sin embargo el fondo contiene movimiento debido a escenas de ballet. Los objetos de enfrente (2 personas) presentan movimiento ligero de cara. III.
En esta prueba se utiliza la secuencia de video “akiyo” QCIF (176x144), en la
figura 4.10 se muestra el video original que contiene 298 frames de los cuales se analizaron 60 frames. En la secuencia “akiyo” el QF es de 0 para todos los casos en Dirac y el QP varia de 2 a 51 para H.264, se obtuvo el PSNR de Y después de codificar y decodificar las secuencias de video a diferentes bitrates en Dirac como se muestra en la tabla 4.4 y figura 4.11.
Figura 4.10. Video original “akiyo_qcif.yuv” Secuencia: QCIF [29].
55
Tabla 4.4 Análisis “akiyo_qcif.yuv” QCIF. DIRAC
H.264
Q F
Bitrate (Kb/sec)
PSNR Y
Q P
Bitrate (Kb/sec)
PSNR Y
0
4710.570
-
2
4710.570
62.518
0
3728.600
-
6
3728.600
55.275
0
1292.510
-
10
1292.510
51.832
0
204.140
46.4502
28
204.140
38.431
0
66.050
41.9091
40
66.050
29.836
0
12.760
27.7398
51
12.760
12.790
Figura 4.11. PSNR (Y) Dirac y H.264 “akiyo_qcif.yuv” QCIF.
Para la secuencia de video “akiyo” QCIF, Dirac muestra al inicio una ganancia alta, a una velocidad binaria de 12.76 Kb/sec a 204.14 Kb/sec respecto a H.264 que tiene una ganancia menor, para después no mostrar una ganancia a una velocidad binaria de 204.14
56
Kb/sec a 4710.57 Kb/sec, a diferencia de H.264 que muestra una ganancia mayor. Para esta secuencia se analizaron solo 60 frames de 298. La secuencia “akiyo” no presenta movimiento de cámara. Solo presenta un movimiento ligero de cara. IV.
En la siguiente prueba se utiliza la secuencia de video “bus” CIF (352x288), en la
figura 4.12 se muestra el video original que contiene 148 frames de los cuales se analizaron 60 frames. En esta secuencia el QF es de 0 para todos los casos en Dirac y el QP varia de 2 a 51 para H.264, se obtuvo el PSNR de Y después de codificar y decodificar las secuencias de video a diferentes bitrates en Dirac como se muestra en la tabla 4.5 y figura 4.13.
Figura 4.12. Video original “bus_cif.yuv” Secuencia: CIF [29].
Tabla 4.5 Análisis de la secuencia de video “bus_cif.yuv” CIF. DIRAC
57
Q F
Bitrate(Kb/sec)
0 0
H.264 PSNR Y
Q P
Bitrate(Kb/sec)
PSNR Y
16857.590
-
2
16857.590
64.735
12825.100
-
6
12825.100
55.792
0
3626.320
45.8305
20
3626.320
42.57
0
193.940
28.4754
40
193.940
26.759
0
48.480
21.2804
50
48.480
20.722
Figura 4.13. PSNR (Y) Dirac y H.264 “bus_cif.yuv” CIF
Para la secuencia de video “bus” CIF, Dirac muestra una ganancia mayor, respecto a H.264 que tiene menor ganancia a una velocidad binaria de 48.480 Kb/sec a 3626.320 Kb/sec, para después no mostrar ganancia a una velocidad binaria de 3626.320 Kb/sec a 16857.590 Kb/sec, a diferencia de H.264 que muestra una ganancia mayor. Para esta secuencia se analizaron solo 60 frames de 148. La secuencia “bus” presenta movimiento de cámara. En esta prueba se utiliza la secuencia de video “carphone” QCIF (176x144), en la figura 4.14 se muestra el video original que contiene 380 frames de los cuales se analizaron 30. En esta secuencia el QF es de 0 para todos los casos en Dirac, se obtuvo el PSNR de Y
58
después de codificar y decodificar las secuencias de video a diferentes bitrates en Dirac como se muestra en la tabla 4.6 y figura 4.15.
59
Figura 4.14. Video original “carphone_qcif.yuv” Secuencia: QCIF [29].
Tabla 4.6 Análisis de la secuencia de video “carphone_qcif.yuv” QCIF. DIRAC
60
H.264
Bitrate(Kb/sec)
PSNR Y
Bitrate(Kb/sec)
PSNR Y
128
37.8829
128
36.70
256
41.7849
256
40.40
384
43.3671
384
42.73
512
44.6883
512
44.45
768
46.6431
768
46.76
1024
48.2723
1024
48.43
Figura 4.15. PSNR (Y) Dirac y H.264 “carphone_qcif.yuv” QCIF
Para la secuencia de video “carphone” QCIF, Dirac muestra una ganancia mayor, par respecto a H.264 que tiene menor ganancia a una velocidad binaria de 128 Kb/sec a 768 Kb/sec, para después mostrar una ganancia menor a una velocidad binaria de 768 Kb/sec a 1024 Kb/sec, a diferencia de H.264 que muestra una ganancia mayor. Para esta secuencia se analizaron solo 30 frames de 148. La secuencia “carphone” presenta movimiento de cámara. Además de ligeros movimientos de cara.
4.3 Conclusiones Dirac es un códec muy prometedor, Según la BCC de Londres, Dirac fue desarrollado con el fin de optimizar su rendimiento sea la relación de compresión y la calidad de percepción a la vanguardia. Su carácter simplista proporciona robustez que es una característica muy beneficiosa, por lo tanto en gran medida Dirac ha logrado su objetivo [30]. Dirac y H.264 tienen resultados similares.
61
Dirac es un sistema de comprensión de video de uso general que logra un alto rendimiento mediante el uso de técnicas modernas como la transformada wavelet y la codificación aritmética la cual permite una codificación eficiente. Los resultados de H.264 se destacan en términos de rendimiento respecto a la relación de comprensión, calidad y aplicaciones a través de Dirac. Las graficas y tablas muestran que el PSNR de las secuencias de video mejora a medida que aumenta la velocidad de bits. La compresión de video es fundamental para la trasmisión de video y almacenamiento, los resultados muestran que la simplicidad del diseño de Dirac es apropiada para aplicaciones que requieren una latencia baja, como las videoconferencias. Por otra parte, en los casos en que el video es totalmente codificado H.264 sería una mejor opción. Hay que tomar en cuenta que Dirac es un códec relativamente nuevo y tiene un potencial significativo a nuevas mejoras. Una de las ventajas principales de Dirac es que es un códec libre de regalías, además el uso de video está creciendo día a día rápidamente y la reducción de costos probablemente se convertirá en una cuestión clave ya que apoya el uso de la tecnología digital para los consumidores. Para concluir en las pruebas realizadas se demostró que el Codec Dirac, es un mejor codificador para 4 de 6 secuencias de video tanto QCIF como CIF, esto a diferentes velocidades de bitrates. Para un mejor análisis de cumplimiento de normas de codificación se puedes hacer más pruebas a velocidades de bits diferentes con otras secuencias de video como SD y HD.
62
APÉNDICE A LUMINANCIA, CROMINANCIA Y FORMATO 4:2:0 La luminancia es una componente de la señal de video, es la medida fotométrica del brillo de una imagen de video. La luminancia representa la información de la de la parte negra y blanca que tiene la imagen. Esto quiere decir que la luminancia maneja solo dos colores blanco y negro. En los sistemas digitales esta señal se codifica por separado a la señal de color, y se evita en todo momento que interfiera con las señales de color, además esta señal de luminancia suele indicarse con la letra Y. En los sistemas de procesamiento de imágenes digitales, la luminancia es creada a partir de la señal RGB original, esto se hace multiplicando las 3 matrices de píxeles (una matriz de rojo, una de verde y una de azul), que componen la imagen en determinadas proporciones, y se generan escalas de grises acordes con el brillo que el ojo humano va a recibir posteriormente de la imagen. Es un término comúnmente utilizado en el procesamiento digital de imágenes para caracterizar a cada píxel. En el sistema de color RGB, la luminancia de un pixel se calcula con la expresión matemática [25]. Y = 0,299R + 0,587G + 0,114B
(A.1)
La crominancia es el componente que contiene la información sobre el color de una señal de vídeo. Se utiliza el vectorscopio para ver y medir la señal de la crominancia. El color o croma es una señal de video, el cual está definido por los parámetros de tono y saturación, el tinte (HUE) nos indica que color es y la saturación la cantidad de color. Dependiendo del sistema utilizado para la codificación de una imagen estas dos magnitudes toman diferentes formas [26]. La crominancia requiere un ancho de banda menor que la luminancia, y suele indicarse como Cb y Cr. El formato 4:2:0 es una simplificación del 4:2:2 que se utiliza en un gran número de aplicaciones para el registro de video en soporte magnético o en disco duro. Es el formato
63
de entrada utilizado en la versión MPEG-2 que se utiliza en la transmisión de televisión digital. Se obtiene reduciendo a la mitad la frecuencia de muestreo de los componentes de croma en el sentido vertical. Con ello, se iguala la densidad de muestra de croma de las dos direcciones. Las muestras de croma se obtienen a partir de las muestras del formato 4:2:2, promediando dos filas consecutivas. En definitiva, en el formato 4:2:0 el tamaño de las matrices de croma se reducen a 360x240 para el estándar 525/60 y a 360x288 para el estándar 625/50, mientras que las matrices de luminancia se mantienen con el mismo tamaño que los formatos 4:4:4 o 4:2:2. A continuación se muestra la posición de las muestras de cromas respecto a las de luminancia.
(A.2)
64
REFERENCIAS
[1]
(BCC) “Dirac / La familia de compresión utilizando la tecnología abierta” http://www.bbc.co.uk/rd/projects/dirac/, a 22 de Febrero 2011.
[2] T. Borer, and T. Davies, “Dirac video compression using open technology”, BBC EBU Technical Review, July 2005. [3] “Video / Dirac (Códec)” http://es.wikipedia.org/wiki/Dirac_(c%C3%B3dec), a 23 de Febrero 2011. [4] M. Tun, K. K. Loo and J. Cosmas “ Error- Resilient Performance of Dirac Video Codec Over Packet-Erasure Channel ”IEEE SP. Magazine, vol. 53, No. 3, Sept. 2007. [5] Juan José Pérez Solano, Supresión de Interferencias Mediante Transformadas Wavelet en Sistemas de Comunicación con Espectro Ensanchado por Salto de Frecuencia. Grado de Doctor, Universidad de Valencia, Valencia, España, 2002. [6] “Video / Dirac (Códec)” http://es.wikipedia.org/wiki/Wavelet, a 24 de Febrero 2011. [7] Aruna Ravi, Performance Analysis and Comparison of Dirac Video Codec with H.264 / MPEG-4 part 10 AVC. Master, University of Texas at Arlington, Arlington, Texas, 2009. [8] T.Wiegand, G. J. Sullivan, G. Bjøntegaard and A. Luthra, "Overview of the H.264/AVC Video Coding Standard", IEEE Transactions On Circuits and Systems for Video Technology, Vol. 13, No. 7, July 2003, pp. 560-576. [9]
Pedro Ángel Cuenca Castillo, Codificación y Transmisión Robusta de Señales de Vídeo MPEG-2 de Caudal Variable sobre Redes de Transmisión Asíncrona ATM. Ediciones de la Universidad de Castilla-La Mancha, 1999.
65
[10] María Carmen España Boquera, Servicios Avanzados de Telecomunicación. Ediciones Díaz de Santos, S.A, 2003. [11] Nexus Radical, “Common Intermediate Format”, Tecnología al Instante, Mayo 2008. [12] H. Ochoa, pláticas sostenidas el día 03 de Marzo 2010, Edificio Y4 IIT, UACJ. [13] “Dirac / Video comprensión” http://diracvideo.org/, a 24 de Febrero 2011. [14] S.K.Kwon, A.Tamhankar and K.R.Rao, “Overview of H.264 / MPEG-4 Part 10” J. Visual Communication and Image Representation, Vol 17, pp.186-216, April 2006. [15] G. A. Davidson, et al “ATSC video and audio coding”, Proceedings of IEEE, vol. 94, pp. 60-76, Jan. 2006. [16] Constantino Pérez Vega, José María Zamanillo Sainz de la Maza, Fundamentos de Televisión Analógica y Digital. Servicio de Publicaciones de la Universidad de Cantabria, 2003. [17] (Mohammed Ghanbari) “Standard Codecs / Image Compression to Advanced Video Coding” http://www.iee.org/Publish/Books/index.cfm, a 4 de Marzo del 2011. [18] (G.G. Langdon and J. Rissanen) “A double / adaptive file compression algorithm IEEE Trans” http://www.ieee.org/portal/site, a 4 de Marzo del 2011. [19] (BBC R&D ) “The Dirac Algorithm, available online at the wiki of the project” http://diracvideo.org/wiki/index.php/Dirac_Algorithm. [20] “MPEG-4 / AVC” http://es.wikipedia.org/wiki/H.264/MPEG-4_AVC, a 28 de Marzo 2011. [21] D. Kumar, P. Shastry and A. Basu, “Overview of the H.264 / AVC”, 8 th Texas Instruments Developer Conference India, 30 Noviembre – 1 Diciembre del 2005. [22] T. Wiegand and G. J. Sullivan, “The H.264 video coding standard”, IEEE Signal Processing Magazine, vol. 24, pp. 148-153, March 2007. [23] D. Marpe, T. Wiegand and G. J. Sullivan, “The H.264/MPEG-4 AVC standard and its applications”, IEEE Communications Magazine, vol. 44, pp. 134-143, Aug. 2006. [24] I. Richardson, “The H.264 AVC standard”, to be published in late 2009. [25] “Luminancia” http://es.wikipedia.org/wiki/Luminancia, a 20 de Abril 2011. [26] “Crominancia” http://es.wikipedia.org/wiki/Crominancia, a 20 de Abril 2011.
[27] “Códec Dirac” http://www.slashcam.com/ES/info/C-dec-Dirac-recibe-apoyo-GPU319068.html, a Febrero 2010. [28] L. Fan, “Mobile Multimedia Broadcasting Standards”, ISBN: 978-0-387-78263-8, Springer US, 2009. [29] “Secuencias de Video YUV” http://trace.eas.asu.edu/yuv/index.html, a 1 de Marzo 2011. [30] K. Onthriar, K. K. Loo and Z. Xue, “Performance comparison of emerging Dirac video
codec
with
H.264/AVC”,
IEEE
International
Conference
on
Digital
Telecommunications, 2006, ICDT apos; Vol. 06, Page: 22, Issue: 29-31, Aug. 2006. [31] “Dirac códec” http://en.wikipedia.org/wiki/Dirac_(codec) a 20 de abril 2011. [32] Peter Meerwald “The Dirac Video Codec” Computer Science, University of Salzburg, 18 de Abril 2007. [33] “Performance
Analysis
and
Comparison
of
H.264”
www.ee.uta.edu/Dip/.../Performance%20Analysis%20and%20Comparison.ppt a 16 de Mayo 2011. [34] “Study
and
Performance
Comparison
of
H.264”
www.ee.uta.edu/Dip/Courses/EE5359/Touseef.ppt a 16 de Mayo 2011. [35] “MPEG-4
AVC/H.264
Video
Сodecs
Comparison”
http://compression.ru/video/codec_comparison/pdf/MSU_H264_Comparison_eng.pdf a 16 de Mayo 2011. [36]
“Especificaciones
de
latest.pdf a 3 de marzo 2011.
Dirac”
diracvideo.org/download/specification/dirac-spec-
68