COMPRESION DE IMAGENES DIGITALES Jaime Lopez Carvajal Univalle Tulua 2008
Que es compresion de datos? Es el arte o ciencia de representar la informacion de forma compacta En terminos digitales: usar un numero menor de bits para representar la informacion Compresion + Datos = informacion – redundancia
Para que? La comunicacion moderna (almacenamiento, transmicion, multimedia,etc.) depende fuertemente de la compresion de datos –JPEG, MPEG, MP3 –DVD, Fax – Modems, Celulares –Internet Un ancho de banda suficiente es un mito “640KB deberia ser suficiente para todos.” - Bill Gates, 1982
Proceso de Compresion
Tipos de Compresion Sin perdida (Lossless) Con perdida (Lossy)
Tipos de Compresion Sin perdida (Lossless) –Los datos se pueden recuperar completamente al descomprimirlos –Los datos recuperados son identicos al original –Utiliza la redundancia en los datos
Tipos de Compresion Con perdida (Lossy) –Los datos no pueden recuperarse completamente despues de la descompresion –Permite mayor compresion que la anterior (lossless) –Descarta componentes de los datos “poco significativos”
Compresion Basada en la eliminacion de datos (irrelevantes, redundantes) Redundancia se reduce usando representacion mas eficiente - Proceso sin perdida - Codificacion por Entropia Datos irrelevantes se descartan - Proceso con perdida - Dependiendo del uso de la imagen (calidad visual subjetiva)
Compresion / Transmision CompresionDescompresion xyx’ canalfuente recuperado Sin perdida (Lossless) : x = x’ Con perdida (Lossy) : x ≠ x’
Tecnicas Sin perdida (Lossless) –Basada en Entropia : Huffman, Aritmetica –Basada en longitud: Run length (RLE) : BMP –Basada en Diccionario : LZW78, PkZip, GIF Con perdida (Lossy) –Transformada Discreta del Coseno (DCT) : JPEG –Basado en Wavelet : JPEG 2000 –Perceptual : MP3, MPEG
Tecnicas Sin pérdida (Lossless) –Run-Length –Huffman –LWZ
Codificacion Run length Los archivos suelen contener filas de datos donde se repiten valores muchas veces –Ej: imagen nocturna del cielo Los datos se pueden tratar individualmente o en grupo Original RunLength
Ejemplo: Run length
Compresion Probabilistica Una imagen discreta codifica informacion redundante si: –Los niveles de gris de pixeles individuales no son igualmente probables –Los niveles de gris de pixeles vecinos estan correlacionados La teoria de la informacion brinda limites para la codificacion minima de fuentes de informacion probabilistica
Compresion Probabilistica (cont.) La redundancia en la codificacion de pixeles individuales con G niveles de gris cada uno es: B = numero de bits usados por cada pixel = log 2 G H = numero medio de bits requeridos para codificar la informacion de esta fuente
Codificacion Huffman Asigna codigos de palabra cortos a aquellos bloques de pixeles con alta probabilidad y largos para los de baja probabilidad Se diseña uniendo dos pixeles menos probables, y repite este proceso hasta que solo queda uno solo Se genera un codigo de arbol de donde se obtiene el codigo Huffman
Codificacion Huffman Algoritmo –Ordenar los niveles de gris con probabilidad decreciente –Formar un nuevo nodo uniendo los niveles de gris con menor probabilidad (sumar sus probabilidades) –Asignar 0 a la palabra-codigo izquierdo y 1 al derecho –Repetir los pasos anteriores hasta que solo quede un solo nivel de gris
Codificacion Huffman Ejemplo: “abracadabra”
Codificacion Huffman Ejemplo: Paso 1
Codificacion Huffman Ejemplo: Paso 2
Codificacion Huffman Ejemplo: Paso 3
Codificacion Huffman Ejemplo: Paso 4
Codificacion Huffman Ejemplo: tabla de codigos Original: 33 bits Codificada: 23 bits
Codificacion Huffman Ejemplo: decodificacion
Codificacion Huffman (cont) Esta codificacion es optima porque ninguna otra tecnica sin perdida la supera –La tasa del ejemplo es 2.09 bits/caracter –El limite menor de entropia es 1.99 bits/caracter Sus desventajas son que se deben obtener las estadisticas previas, asi como adjuntar el codigo generado previamente, al momento de transmitir
Codificacion LWZ Su idea basica consiste en analizar secuencias de entrada en bloques no traslapados de diferente longitud construyendo un diccionario de bloques vistos hasta el momento Los programas WinZip, gzip y pkzip estan basados en este metodo
Codificacion LWZ Algoritmo –Inicializar el diccionario con todos los bloques de longitud uno D={a,..z} –Buscar el bloque W mas largo que ha aparecido en el diccionario –Codificar W por su respectivo indice en el diccionario –Adicionar W seguido del primer simbolo del siguiente bloque al diccionario –Ir al paso 2
Ejemplo: Codificacion LWZ
Codificacion LWZ Comparacion
Compresion por Entropia Tecnicas de codificacion Standard –Codificacion Huffman –Codificacion Aritmetica –Limpel-Zip Tecnicas especializadas para imagenes –Explota la estructura bidimensional –Utiliza propiedades que estan presentes en imagenes normales –Explota estructuras sobre diferentes escalas
Cuantizacion Reduccion de imagenes a conjuntos mucho mas pequeños El nuevo conjunto deberia contener los casos mas importantes La cuantizacion esta estrechamente ligada a la codificacion por entropia Cuantizacion escalar d : factor de cuantizacion Valor del pixel reconstruido
Imagen Cuantizada Imagen despues de llevar los 4 bits menos significativos a cero (compresion 2:1)
Tecnicas con Perdida (lossy) Tecnicas con Perdida (lossy) Representacion Alternativa (Transformada) Cuantization xX XqXq canalfuente quantizado Codificador (tasa de bit reducida) X comprimido
Tipos de Compresion de Imagenes Tipos de Compresion de Imagenes canal Blanco/NegroGraficosNatural
Compresion JPEG Basado en dos componentes centrales: Transformada Discreta del Coseno (DCT) Codificacion por Entropia Cuantizacion espectral
Transformada Discreta del Coseno (DCT) Transformada Discreta del Coseno (DCT) Separa la imagen en componentes de diferentes frecuencias Descarta las frecuencias menos importantes durante el proceso de cuantizacion (con perdida) Unicamente se usan las frecuencias mas importantes durante el proceso de descompresion (distorsion pequeña)
Transformada Discreta del Coseno (DCT) Transformada Discreta del Coseno (DCT) La DFT (Fourier) comprende una suma de productos que involucran el termino coseno, y una suma de productos con el termino seno Entonces para la DCT (Coseno): Cuando se conoce que la funcion es simetrica, su termino seno es cero, por lo cual se omite Ademas, al ser simetrica sobre su punto central, se hace el calculo solamente con la primera mitad de la funcion, reduciendo los calculos requeridos de 2N+1 a N+1
Transformada Discreta del Coseno (DCT) Transformada Discreta del Coseno (DCT) DCT para dos dimensiones (imagen), omite el termino seno
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Proceso JPEG –La imagen se divide en bloques de 8x8 pixeles –Se aplica la DCT de izq-der, arriba-abajo –Cada bloque se comprime usando la cuantizacion –El arreglo de los bloques comprimidos conforma la imagen almacenada –La imagen se reconstruye utilizando la IDCT (Transformada Discreta del Coseno Invers a)
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Proceso JPEG
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Ecuacion: esta calcula la entrada i,j de la DCT de una imagen
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Entonces: –p(x,y) es el elemento x,y (rango:0-7) de la imagen representado por la matriz p –N: tamaño del bloque (8) –C(i) : coeficientes de la matriz DCT
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Para obtener la matriz T se utiliza:
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Niveles de gris de la imagen original (bloque 8x8)
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Se resta 127 a cada pixel (valor promedio de los valores de nivel de gris 0-255)
Discreta del Coseno (DCT) Discreta del Coseno (DCT) SE obtiene la DCT, con 64 coeficientes c(i,j)
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Cuantizacion –Se utiliza una matriz de cuantizacion segun el nivel de compresion deseado –Luego se divide cada elemento de la matriz D por su correspondiente en la matriz Q –Redondear al valor entero mas cercano
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Matrices de compresion Q (% de igualdad) 50% 90% 10%
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Luego de esto se obtiene la matriz C:
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Codificacion: –Todos los coeficientes se convierten por un codificador a su equivalente binario –Luego se recoge la secuencia completa siguiendo el orden ilustrado
Discreta del Coseno (DCT) Discreta del Coseno (DCT)
Descompresion –Se decodifica la cadena de bits que representa la matriz cuantizada C (binario -> decimal) –Cada elemento de C se multiplica por su correspondiente elemento en la matriz Q
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Descompresion
Descompresion –Luego se aplica la IDCT a la matriz R, redondeando al entero mas cercano –Luego se suma 128 a cada elemento, para asi obtener la imagen resultante JPEG de la imagen de 8x8 pixeles
Discreta del Coseno (DCT) Discreta del Coseno (DCT) JPEG
Ejemplo: pimiento
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Ejemplo: DCT de pimiento
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Ejemplo: DCT cuantizado de pimiento
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Ejemplo: Comparacion
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Ejemplo: Comparacion
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Ejemplo: ranas
Discreta del Coseno (DCT) Discreta del Coseno (DCT) Ejemplo: carpa
Discreta del Coseno (DCT) Discreta del Coseno (DCT) JPEG: problemas