Compresión JPEG y MPEG-1
Enviado por Diego Guzman • 14 de Julio de 2019 • Informe • 2.496 Palabras (10 Páginas) • 137 Visitas
Escuela Politécnica Nacional
[pic 1]
Técnicas de compresión de la información.
Informe: Compresión JPEG y MPEG-1
Jorge Guerra
Diego Guzmán
Félix Miño
2018-B
Ing. Franklin Sánchez
Objetivos
- Conocer la ventaja de la compresión de archivos y comprobar su efectiva compresión
- Entender como el protocolo JPEG comprime imágenes e implementarlo prácticamente en un lenguaje.
- Entender el funcionamiento del algoritmo de compresión de archivos de audio MP3 (MPEG1).
Marco Teórico
Los archivos que utilizamos diariamente ocupan espacio el disco duro de nuestras computadoras. El tamaño que ocupan es en realidad menor al tamaño real del archivo. Esto se logra con diferentes técnicas de compresión utilizadas según el tipo de archivo que se guarda. Estas técnicas son capaces de eliminar cierta redundancia de información que existe en los archivos y de esta manera disminuir su tamaño. Según el funcionamiento de las técnicas de compresión de la información podemos tener:
- Métodos Adaptativos
- Métodos con o sin perdidas
- Métodos en cascada
- Métodos de Percepción
- Métodos de compresión simétrica
Básicamente con estos métodos lo que logramos es reducir el número de bits requeridos para representar la información. Actualmente existen dos métodos famosos de compresión el uno es usado para imágenes, JPEG, y el otro para archivos de audio, MP3.
JPEG (Joint Photographic Experts Group)
JPEG es un estándar de compresión y codificación de imágenes. Fue creado por un comité que intento de compartir su experiencia en cuanto ala digitalización de imágenes, 3 años después fue estandarizado por la ISO.
JPEG es un buen protocolo para comprimir fotografías con cambios graduales en color mas no para gráficos debido a que estos tienen drásticos cambios en color, haciendo más visibles las distorsiones. Es necesario indicar que JPEG obtiene una tasa de compresión de 10:1 sin una perdida notable visible.
Es necesario indicar que JPEG trabaja con el espacio de color Y Cb y Cr.
- Y representa la luminancia
- Cb representa la componente de crominancia diferencia azul
- Cr representa la componente de crominancia diferencia rojo
Funcionamiento de JPEG
El algoritmo de JPEG básicamente realizada la transformada de coseno a bloques de 8x8 de la cada una de las componentes YCbCr de la imagen. Para después ser cuantizada y codificada y finalmente colocar las cabeceras del protocolo y tener la imagen.
[pic 2]
Imagen 1. Funcionamiento JPEG
- Conversión RGB a color
Lo primero que se necesita realizar en el algoritmo es transformar las componentes de RGB a YCbCr. Esta transformación esta dada por las siguientes ecuaciones. [1]
[pic 3]
Imagen 2. Ecuaciones RGb a YCrCb
- Cambiar Niveles de la imagen
Se resta a cada pixel el valor de donde P es el número de bits que se utilizan par representar un pixel.[pic 4]
- Dividir cada componente en bloques de 8x8
En este paso se divida cada componente de la imagen en bloques de 8x8. Si la dimensión de la imagen no es un múltiplo de 8, el codificador replica los valores de la última columna o fila hasta obtener el tamaño deseado.
[pic 5]
Imagen 3. Separación en Bloques 8x8
- Transformada DCT
El siguiente paso es probablemente el más importante en el algoritmo y probablemente el responsable de que el algoritmo sea tan eficiente. Esta es la transformada Discreta del Coseno. Básicamente esta transformada decorrelaciona la matriz de 8x8 a la cual es aplicada, agrupando en la esquina superior izquierda aquellos datos con mucha información mientras que en la esquina inferior derecha se agrupan aquellos datos que no cargan tanta información.
[pic 6]
Imagen 4. Bloque 8x8 (Izquierda) Trasformada DCT imagen(derecha)
- Cuantización
El siguiente paso es la cuantización en la cual, basándonos en una matriz estándar de cuantización, convertiremos a cero aquellos valores cercanos a este. Es por lo que se lo considera una compresión con perdida pues una vez cuantizado no podremos obtener la información original otra vez. El fin de la cuantización es tener largas cadenas de 0 en aquellos coeficientes DCT que no llevaban mucha información (esquina inferior izquierda) para así poder codificarlos fácilmente con RLE (Run Length Coding)
[pic 7]
Imagen 5. Transformada DCT (Izquierda) Trasformada DCT y Cuantizada (derecha)
- Escaneo en Zig-Zag
Antes de la codificación es necesario serializar cada bloque de 8x8 pero esta serialización se la realiza de una manera particular. Se empieza por la esquina superior izquierda en el primer valor de la tabla cuantizada (DC) y es base a estas se avanza en Zig-Zag hacia la esquina inferior derecha. Esto se realiza con el fin de dejar una gran cadena de ceros al final del bloque serializado para facilitar su codificación.
[pic 8]
Imagen 6. Escaneo en Zig Zag
- Codificación
El valor DC de un bloque y el resto de sus valores (AC) son codificados de manera diferente. El valor DC se codifica con una versión avanzada de la codificación de Huffman. Para los valores AC es necesario realizar una codificación RLE y Huffman para así comprimir de mejor manera las grandes cadenas de ceros que existen en los bloques 8x8. Para esto es necesario crear un token (Z,C) donde:
- Z es el numero de ceros que anteceden al valor AC
- C es la categoría en la cual se ubica el valor AC que indica el número de bits que se necesita para representar el valor
[pic 9]
Imagen 7. Tabla de categorías para valores DC y AC
Obtenido este token se buscará en una tabla estándar creada a partir de la codificación RLE y Huffman la palabra código con la cual se codificará la imagen y finalmente se le agregará el valor del coeficiente AC. Si en caso este valor es negativo se le agrega el complemento del valor AC.
...