Compresor con perdida de calidad

Creo recordar que no comenté nada en el blog pero hace unos meses estuve haciendo un compresor de imagenes sin perdida, basado en huffman y diferencia de pixeles, ya hablaré de ello en otra entrada.

Este fin de semana he recordado dicho proyecto y he decidido implementar un compresor de imagenes con perdida. Para ello he usado un algoritmo parecido al que usa JPG, esto es, divido la imagen en bloques de 8x8, le aplico la DCT y recorro el resultado en zig zag y lo voy añadiendo a un array, a continuación aplico una codificación Run-Length Encoding.

Captura de pantalla de 2017-10-08 23-13-00

La imagen original tiene un tamaño de 8x8x3 que hacen un total de 192 bytes, sin contar bytes de cabecera, y la imagen una vez comprimida ocupa 12 bytes. Tengo que decir que es una imagen especial que se comprime muy bien. En aplicaciones reales la compresión será algo menor.

Hay que tener en cuenta también que al resultado de esta compresión aún no se le aplica huffman por lo que la compresión final será algo mayor.