# Compresión de imagen

Comprimir una imagen es reducir los datos redundantes e irrelevantes de la imagen con la menor pérdida posible. para permitir su almacenamiento o transmisión de forma eficiente.
Compresión de imagen con pérdida. La compresión de imagen puede ser con pérdida (Lossy) o sin pérdida (LossLess).
En la codificación sin pérdida se puede transmitir una imagen utilizando compresión sin pérdida de información sobre un protocolo de transmisión con pérdida como UDP. Por el contrario en la compresión con pérdida se puede transmitir una imagen comprimida con pérdida de información sobre un protocolo sin pérdida de datos como TCP.
Métodos de codificación de compresión con pérdida:
Métodos de codificación de compresión sin pérdida:

## La compresión con y sin pérdida (LOSSLESS)

Es aquella que permite recuperar exactamente la calidad original de la imagen, siendo utilizada para comprimir información que no puede ser degradada, dentro de este tipo de compresión se encuentran los sistemas adaptativos, no adaptativos y semi adaptativos.

### No adaptativos

(Código HuffmanHuffman) Establecen una tabla de códigos con las combinaciones de bits que más se repiten estadísticamente. A estas sentencias se asignan códigos cortos y a otros menos probables se asignan códigos de una longitud mayor, pero provoca problemas al cambiar la imagen original.

### Semiadaptativos

Corrigen el error de los anteriores al crear una tabla a la medida y logrando una compresión mucho mayor, lo que los vuelve más lentos al leer la imagen original dos veces.

### Adaptativos

Este tipo utiliza comúnmente el sistema denominado RUN LENGTH ENCODE o RLE que consiste en sustituir series de valores repetidos por una clave con indicador numérico, por este motivo son más lentos al empaquetar los datos que al descomprimirlos.
Este tipo de compresión es la preferida para propósitos de archivado y, a menudo, para imágenes médicas, dibujo técnico, clip art o cómics. Esto se debe a que los métodos de compresión con pérdida, especialmente cuando se utilizan a una tasa de bits muy baja, introducen artefactos de compresión. Los métodos con pérdida son especialmente adecuados para imágenes naturales tales como fotografías en aplicaciones donde es aceptable una pérdida menor (a veces imperceptible) para lograr una reducción en la tasa de bits. La compresión con pérdidas que produce diferencias imperceptibles puede llamarse visualmente sin pérdidas.

### Los métodos para la compresión de imagen sin pérdida son

* Delta encoding:
Delta encoding también conocido como "Delta compression" o "differential compression", es una técnica de compresión de archivos que se sale de los paradigmas convencionales de compresión, esta se basa en la compresión compacta del archivo.
Una función Delta hace referencia a la diferencia entre dos instancias de determinado objeto, en el caso de los archivos a respaldar, una función Delta para estos se refiere a la diferencia que existe dentro de un mismo archivo en dos versiones distintas. El algoritmo Delta encoding tiene como objetivo obtener solamente los bytes que han sido modificados desde la última versión del archivo, permitiendo reducir considerablemente el tamaño de este y lograr una optimización del uso de la red al momento de realizar un respaldo. Una vez que se tiene comprimido un archivo, se puede obtener el archivo original teniendo la versión de referencia del archivo y el archivo generado por el algoritmo de Delta encoding.
* Run-length encoding – utilizado por defecto en PCX y uno de los métodos posibles en BMP, TGA, TIFF
* DPCM y Codificación Predictiva
* Codificación entrópica
* Algoritmos de diccionario adaptables tales como LZW – usado s en GIF y TIFF
* Deflación – utilizado en PNG, MNG, y TIFF
* Chain code

### Métodos para compresión con pérdida

* Reducir el espacio de color a los colores más comunes en la imagen. Los colores seleccionados son especificados en la paleta de colores en la cabecera de la imagen comprimida. Cada píxel referencia el índice de un color en la paleta. Este método puede combinarse con interpolación aleatoria para evitar la posterización.
* Chroma subsampling. Este método toma la ventaja del hecho de que el ojo humano percibe los cambios de brillo más nítidamente que los cambios de color, promediando y eliminando parte de la información cromática de la imagen.
* Codificación por transformación. Es el método más utilizado. Se aplica a la transformada de Fourier-relacionada tal como la transformada de coseno discreta o la transformada de óndula, seguida de la cuantificación y la codificación entrópica.
* Compresión fractal.
Diferencia de Compresión con pérdida y sin pérdida Una compresión sin pérdidas devuelve la imagen descomprimida exactamente igual a la original. Por el contrario, la compresión con pérdidas acepta alguna degradación en la imagen de cara a una mayor compresión.
Cantidad de colores Las imágenes más simples contienen solo dos colores: blanco y negro, y solo se necesitan 1 bit para representar cada píxel. La mayoría de las tarjetas de video en los PC soportan solo 16 colores prefijados. Más adelante soportan 256 y en la actualidad admiten 224 o 16 millones de colores.

## Formatos
### TIFF (Tagged Image File Format)

TIFF es, en principio, un formato muy flexible con o sin pérdida. Los detalles del algoritmo de almacenamiento de la imagen se incluyen como parte del fichero. En la práctica, TIFF se usa casi exclusivamente como formato de almacenamiento de imágenes sin pérdidas y sin ninguna compresión. Consecuentemente, los archivos en este formato suelen ser muy grandes. Algunas veces se usan un algoritmo de compresión sin pérdidas llamado LZW, pero no siempre.

### PNG

PNG es también un formato de almacenamiento sin pérdida. Al contrario que ocurre con el formato TIFF puede comprimir la imagen. Además tal compresión es totalmente reversible y por tanto la imagen que se recupera es exacta a la original.

### GIF

GIF crea una tabla de 256 colores a partir de una de 16 millones. Si la imagen tiene menos de 256 colores, GIF puede almacenar la imagen sin pérdidas. Cuando la imagen contiene muchos colores, el software que crea el archivo GIF usa algún algoritmo para aproximar los colores de la imagen con una paleta limitada de 256 colores disponibles. Un buen algoritmo de este tipo, tratará de encontrar un conjunto óptimo de 256 colores. Algunas veces, GIF usa el color más cercano para representar cada píxel, y algunas veces usa un "error de difusión" para ajustar los colores de los píxeles vecinos y así corregir el error producido en cada píxel.
GIF produce compresión de dos formas. Primero, reduce el número de colores de la imagen a 256 y por tanto, reduce el número de bits necesario por píxel. Después, remplaza áreas de color uniforme usando código de secuencias: en lugar de almacenar "blanco, blanco, blanco, blanco, blanco" almacena "5 blanco"
Por tanto, GIF es una compresión de imágenes sin pérdida solo para imágenes de 256 colores o menos. Sin embargo, para una imagen de 16 millones de colores GIF puede "perder" el 99.998% de los colores.

### JPG

JPG es el método de compresión más adecuado para fotografías e imágenes de tonos continuos similares que contiene muchos colores. Permite obtener unos radios de compresión muy altos manteniendo a su vez una calidad en la imagen muy elevada. JPG analiza las imágenes y elimina la información que no es apreciable. JPG almacena imágenes de 16 millones de colores. Otro aspecto importante es que el método JPG permite distintos niveles de compresión. En niveles de compresión de imágenes moderado, es muy difícil discernir las diferencias de la imagen original. Programas de tratamiento de imágenes avanzados como GIMP, Paint Shop Pro o Photoshop permiten ver la calidad de la imagen y el tamaño del fichero como una función de nivel de compresión, de esa forma, se puede elegir convenientemente la calidad y el tamaño del fichero deseado.

### RAW, BMP, PSP, PSD, ...

RAW es la imagen de salida que ofrece algunas cámaras digitales. Aunque es un método sin pérdida, ofrece un factor de tres o cuatro menor que el formato TIFF de la misma imagen. La desventaja es que el método RAW no está estandarizado y cada marca tiene su propia versión de dicho método, por tanto, se debe usar el software de la cámara para poder visualizar las imágenes.
BMP es un formato de almacenamiento sin compresión de imágenes propiedad de Microsoft.
PSP, PSD y CPT son formatos propios de distintos programas de edición: Paint Shop Pro, Photoshop y Corel PhotoPaint, respectivamente. XCF es un formato abierto editado principalmente por el programa de manipulación de imágenes de GNU (GIMP).
En resumen, los métodos de compresión TIFF, PNG y GIF son estándares públicos y por tanto se pueden implementar en cualquier programa gráfico. GIF y JPG son los más usados en las páginas web. Dado que PNG hace lo mismo que GIF e incluso mejor, se espera que PNG sustituirá GIF en el futuro. PNG no sustituirá JPG dado que JPG consigue una mayor compresión en imágenes fotográficas. JPEG es un formato propietario.

## Eligiendo el tipo de formato

Cada uno de los formatos especificados arriba son apropiados para diferentes tipos de imágenes. Elegir el formato adecuado resulta en imágenes de mayor calidad y archivos de menor tamaño. Un formato incorrecto significa que una imagen no tendrá una alta calidad como debería de ser y el peso del archivo será más largo de lo necesario
Vista de que tipo de archivo funciona mejor para cada tipo de imagen:
GIF Si se requiere de animación. Dibujos de lineales y gráficos simples
JPEG Fotos, sin mucho contraste. Capturas de pantalla, especialmente de películas, juegos, o contenido similar.
PNG Arte lineal, ilustraciones. Fotos con alto contraste. Transparencia, especialmente el canal alfa. Capturas de pantalla de aplicaciones o diagramas detallados.

#### Evitar usar los formatos para

GIF Imágenes con gradientes. Fotos.
JPEG Imágenes con alto contraste. Imágenes detalladas, específicamente diagramas. Gráficos simples (el tamaño de los archivos es más largo).
PNG Fotos con bajo contraste.

## Otras propiedades

El objetivo principal de la compresión de imagen es, generar la mejor calidad de imagen en una tasa de bits dada (o tasa de compresión). Sin embargo, hay otras propiedades importantes en los esquemas de compresión:

#### Escalabilidad

Generalmente se refiere a la reducción de calidad lograda por la manipulación de los datos del archivo (sin descomprimir y comprimir nuevamente). Otros nombres para escalabilidad son codificación progresiva o tramas de bits embebidos. A pesar de su naturaleza opuesta, la escalabilidad también puede encontrarse en codecs sin pérdida, normalmente en forma de escaneados de refinamiento de píxel . La escalabilidad es especialmente útil para previsualizar las imágenes mientras se descargan (p.e., en un navegador web) o para proporcionar accesos de calidad variable a, por ejemplo, bases de datos. Hay varios tipos de escalabilidad:
* Calidad progresiva o capa progresiva: Las tramas de bits refinan sucesivamente la imagen reconstruida.
* Resolución progresiva: Primero codifica una imagen a baja resolución; luego codifica la diferencia a resoluciones mayores.
* Componente progresiva: Primero codifica el gris y luego el color.

#### Codificación de región de interés.

Ciertas partes de la imagen se codifican con una calidad mayor que otras. Esto se puede combinar con la escalabilidad (codificar estas partes primero, las demás después).

#### Meta información.

Los datos comprimidos pueden contener información sobre la imagen que puede ser utilizada para categorizar, buscar o navegar por las imágenes. Tal información puede incluir estadísticas de color y textura, pequeñas imágenes previsualizadas, el autor o información de derechos de copia.

#### Recursos de procesamiento.

Los algoritmos de compresión requieren diferentes cantidades de recursos para codificar y descodificar.
La calidad de un método de compresión se mide a menudo por la Relación señal a ruido de pico. Mide la cantidad de ruido introducida en la compresión con pérdida de la imagen. Sin embargo, la opinión subjetiva de quien ve la imagen también se tiene en cuenta, siendo quizás la medida más importante.