Why lossless ?

The polyomino compressed image format is lossless: this means that it can be used to compress and decompress an image any number of times without lowering the image's quality. Tipically images are saved in lossy formats, as discarding the less significative information we can obtain file several times smaller, and in many cases this little loss does not affect the visual quality of the image. A typical example of lossy jpeg compression is shown in the figure:

Lossy compression example Lossless compression example

Even if through higher-quality compression we could achieve (almost) unperceptible changes, there are still cases that require lossless compression:

  • Bad lossy compression results: In some cases lossy compression acts very badly. Jpeg gives very bad results for high-edged images as the one used in the example above, where for example a lossless compression algorithm (PNG) obtains a file of size less than the half of the jpeg worst-quality file (9.5 KB against 22.5 KB!). You can verify it yourself for example with this image, representing an even more 'extreme' example.
  • Multiple encoding loss: Sometimes there is a need to compress and decompress an image many times, for example while working on it and apporting various changes, and it may be desirable to store the image in a compressed format between the various changes. Encoding the image in a lossy format as jpeg every time would slowly degenerate image quality, as even if a single encoding may produce invisible changes multiple losses will have cumulative effects on the image.
  • High importance of an image: Some images are so important that cannot allow even a minimal quality loss. Two examples are medical images that may be used to determine the right therapy for a patient, and images that can be used in a legal process like fingerprints.

In conclusion, even if lossy-compressed image formats will probably continue to be the most used, it is important to develop also good performing lossless algorithms for an efficient lossless compression. For this goal the polyomino compressed image format has been created.

The evolution of the PCIF algorithm is now available ! It has a greater compression ratio, it is much faster and the implementation is available in both Java bytecode and native executables. Take a look at the new BCIF algorithm.