Tener claridad de ideas sobre como afecta la compresión de una imagen a su calidad es algo que nos puede ayudar a tomar las decisiones más adecuadas en muy diversas circunstancias.

No soy partidario de aburrir con un montón de argumentos técnicos, porque seguramente eso solo sirve al que tiene posibilidades de resolver ese tipo de problemas por sí mismo. A mí me gusta enfocar las cosas desde un enfoque práctico y con ejemplos que estimulen la comprensión.

droid100

Antiguo logo de Ciberdroide Informática

Para ilustrar el primer ejemplo usaré el antiguo logotipo de Ciberdroide. (Antes era Ciberdroide Informática y era una tienda virtual. De eso hace ya algunos años). La imagen que pongo es una versión reducida del fichero original. Un fichero en formato tiff, con una imagen de 9350×2280 sin compresión. No la he subido porque ocupa 5,1Mb.

La imagen tiff de 5,1 MBytes tiene una calidad perfecta, pero ocupa mucho. Si la pasamos a jpeg con una calidad del 85% y usando un gran aumento podría llegar a apreciarse una ligera pérdida de calidad, pero tendrás un fichero con un tamaño que será la dieciseisava parte del original. Si pasamos una imagen tiff como la nuestra de 5,1Mbytes a jpeg con una calidad del 95%, se quedará en 2,2MBytes. Es decir en algo menos de la mitad. La calidad final con esta compresión rozaría la perfección, y es la que puede apreciarse en la parte izquierda de la última imagen de la serie que viene a continuación.


cabeza_droid05

Jpeg Calidad 05%

cabeza_droid15

Jpeg Calidad 15%

cabeza_droid25

Jpeg Calidad 25%

Calidad 35%

Jpeg Calidad 35%

Calidad 45%

Jpeg Calidad 45%

Calidad 55%

Jpeg Calidad 55%

cabeza_droid65

Jpeg Calidad 65%

Calidad 75%

Jpeg Calidad 75%

Calidad 85%

Jpeg Calidad 85%

Calidad 95%

Jpeg Calidad 95%



isbn_1

isbn_2



La compresión jpeg en imágenes pequeñas funciona ligeramente peor que en las grandes y podemos ver que la última imagen de la derecha de esa serie que termina con calidad del 95% es algo inferior a la de la parte izquierda. Explicaremos la razón de esto.

Lo que he hecho es tomar un trozo de 482×464 pixels de la imagen original con el detalle de la cabeza del ciberdroide. Con el programa convert lo he pasado a formato jpeg con distintos niveles de compresión.

Ya hemos mencionado muchas veces la utilidad convert de ImageMagick, podemos usarla para pasar de un formato de imagen cualquiera, a otro, y para muchas más cosas.

Para pasar de formato tiff a jpeg con calidad del 75% podemos usar el comando siguiente:

convert -quality 75 imagen.tiff imagen.jpg

Sin embargo, para nuestro ejemplo, puesto que partimos de una imagen más grande,  hay dos formas de hacer esto, y el resultado no es el mismo:

  1. 1) Podemos comprimir primero la gran imagen tiff de 9350×2280 pixels, pasándola a jpeg con los mismos pixels pero comprimida, y luego recortarla a 482×464 pixels.

  2. 2) Primero recortamos la imagen tiff de 9350×2280 pixels a 482×464 pixels y luego pasamos a jpeg comprimiendo.

Vemos que el resultado no es el mismo. Esto se aprecia mejor pinchando en las primeras imágenes (calidad de 15%).

En las últimas (calidad del 95%) también se puede apreciar si se usa una visualización con suficiente aumento.

En las imágenes dobles que muestro vemos que la parte izquierda tiene siempre un poco más de calidad, y está realizada con el procedimiento primero, mientras que la parte derecha se uso el procedimiento segundo. Es decir el procedimiento primero actúa comprimiendo sobre la imagen grande, y el segundo actúa comprimiendo sobre una porción pequeña.

La mala fama del JPEG se debe sobre todo a malas experiencias con un montón de programas que producen por defecto salida JPEG con una calidad baja, pero Gimp pregunta siempre que calidad quieres usar. Un jpeg con una calidad del 95% tiene una calidad muy buena.

El sistema de resolver el problema de la compresión, se llama algorítmo de compresión, y en el caso del jpeg implica pérdida de calidad. Esto ocurre porque al comprimir el fichero se pierde algo de la información original, y la imagen perderá calidad apareciendo un efecto ruido.

Hay otros algoritmos de compresión que conservan toda la calidad porque no se produce pérdida de información. Por ejemplo el formato gif usa un sistema de compresión que no es adecuado ni para fotos ni para imágenes donde los tonos de los pixels sufran gradientes o degradados.

El algoritmo de compresión para ficheros gif funciona bien en imágenes de dibujos con colores planos, tipo logotipos, etc. Eso es así porque lo que viene a hacer el algoritmo gif es ahorrar espacio de almacenamiento cuando descubre en horizontal varios píxels con idéntico color. Anota los valores de color del pixel indicando las veces que se repetirá en sentido horizontal y así ahorra espacio en el fichero.

Para demostrar esto hemos tomado una imgjen gif de un código de barras y la hemos girado 90 grados. El resultado es que mientras la primera imagen ocupa 92Kbytes la segunda, simplemente por haberla girado, ocupará 36Kbytes.

Los trazos finos horizontales se comprimen en gif mejor que los verticales.

Para solventar las carencias del formato gif se diseñó un nuevo formato que a diferencia del formato gif no está sujeto a patentes. Se trata del formato png. Usa al igual que gif un tipo de compresión sin pérdidas, es algo más sofisticado que el gif. Su implementación en los navegadores no está tan extendida como el formato gif o el jpeg.

Al igual que gif su uso es recomendable para comprimir imágenes con grandes áreas con colores planos.

Glosario de términos que puede consultar en la wikipedia: