Pack4png (Version 1.1 of July 4, 2003)
Author: T. Pavlidis
This set of pages describes work that is part of an effort to develop image transforms (filters) that produce images that maintain the visual impression of the original while they can be compressed more efficiently than the original. The whole process can be seen as a lossy compression done in two steps: a lossy transformation followed by lossless compression.
The specific reported work describes a preprocessor that transforms images in a way that will increase the efficiency of space domain schemes such as PNG (Portable Network Graphics) or GIF (Graphics Interchange Format) that rely on Lempel-Ziv type algorithms. The key idea is to analyze the intensity histograms of the image, subdivide them into intervals, construct a table mapping the intensities in each interval to one value, and then apply the table on the original image to obtain one with fewer intensities. This is motivated by the observation that when few color images (such as business graphics) are scanned or scaled (or encoded by JPEG) additional color intensities are introduced that cause a deterioration in the compression obtained by mentioned space domain methods. We refer to this method as packing and to the code implementing it as pack4png. (The choice is historical motivated by the easy public availability of PNG encoding.) pack4png identifies and eliminates spurious color intensities.
In addition a heuristic is presented that indicates whether an image is compressed best by JPEG rather than by space domain schemes (possibly precedeed by packing). The usual heuristic relying on the number of colors present in an image is not valid when packing is involved.
Paper (10 pages) describing the method with links to detailed examples. The paper is a major revision of the one posted with version 1.0 by providing more detailed analysis of the basis of the method.
Code containing: (1) Source code is for a library to be invoked from another image processing program; (2) Source code for a Microsoft Windows application that calls the pack4png librarry; and (3) "ready to be used" executable code of the Windows application. This version of the code has relatively minor changes from the previous version (1.0 posted on April 22, 2003), mainly bug fixing, cleanup of code, clarifications in the documentation and the like.
Instructions are also provided on how to build a batch application outside the Microsoft programming environment.
Please send comments to t.pavlidis AT ieee DOT org