Today, images are one of the most common means of visual communication and documentation. Storing large quantities of unprocessed images can be hefty on storage devices and pose challenges during transmission. Various compression techniques have been developed to reduce the size of images. One of these techniques is lossless image compression.
As the name suggests, lossless image compression refers to the technique used for reducing the size of an image without facing any quality sacrifices and degradation of visual information.
Lossless image compression techniques retain every pixel's information and maintain originality. This attribute makes it an ideal preference for scenarios where image quality is of utmost importance, and accurate information retrieval is critical.
These scenarios can range anywhere from medical imaging to lawsuit archives, where any tempering with the original document can be damaging.
Lossless image compression methods use an algorithm that shrinks the image without diminishing the quality. To be precise, it rewrites the file in a more efficient and space-saving manner. This allows the file to be stored in a more efficient manner, thereby making it easier to transfer and store for further usage.
The file rewriting is done so that all the nonessential information is replaced with essential information and then indexed accordingly. The exact compression method differs from the algorithm employed by the image compression method.
A large number of algorithms are used widely to perform lossless image compression. These algorithms differ in their mechanisms. However, the goal to retain originality and quality remains unchanged.
Run-length encoding, or RLE is one of the simplest lossless compression algorithms available. It is highly useful for images with large sequences of repetitive numbers, as it works quite efficiently through this.
RLE replaces the repetitive pixel values with a shorter code representing the value and the number of times it has been repeated.
If you want to learn more about Run-length encoding, click here.
Huffman encoding is a variable-length encoding technique that assigns shorter codes to more frequent pixel values and in contrast, assigns longer codes to less common pixel values.
This variable length encoding scheme allows us to efficiently reduce the file size by using fewer bits to represent repetitive pixel values.
The diagram above illustrates how Huffman encoding assigns shorter codes, in the forms of 0s and 1s, to each pixel value. Here A, B, C, D, and E are individual pixel values of an image.
The final encoding of the pixels would be in the following manner:
Character | Encoding |
A | 0 |
B | 1 |
C | 10 |
D | 11 |
E | 100 |
Predictive coding predicts the value of a pixel based on its neighboring pixels and encodes the difference between the predicted value and the actual value, resulting in a more compact representation of the image.