Joint Bi-level Image Experts Group
Joint Bi-level Image Experts Group
(algorithm)JBIG can handle images with from one to 255 bits per pixel.Better compression algorithms exist for more than about eightbits per pixel. With multiple bits per pixel, Gray code canbe used to reduce the number of bit changes between adjacentdecimal values (e.g. 127 and 128), and thus improve thecompression which JBIG does on each bitplane.
JBIG uses discrete steps of detail by successively doublingthe resolution. The sender computes a number of resolutionlayers and transmits these starting at the lowest resolution.Resolution reduction uses pixels in the high resolution layerand some already computed low resolution pixels as an indexinto a lookup table. The contents of this table can bespecified by the user.
Compatibility between progressive and sequential coding isachieved by dividing an image into stripes. Each stripe is ahorizontal bar with a user definable height. Each stripe isseparately coded and transmitted, and the user can define inwhich order stripes, resolutions and bitplanes are intermixedin the coded data. A progressively coded image can be decodedsequentially by decoding each stripe, beginning by the one atthe top of the image, to its full resolution, and thenproceeding to the next stripe. Progressive decoding can bedone by decoding only a specific resolution layer from allstripes.
After dividing an image into bitplanes, resolution layersand stripes, eventually a number of small bi-level bitmapsare left to compress. Compression is done using a Q-coder.
The Q-coder codes bi-level pixels as symbols using theprobability of occurrence of these symbols in a certaincontext. JBIG defines two kinds of context, one for thelowest resolution layer (the base layer), and one for allother layers (differential layers). Differential layercontexts contain pixels in the layer to be coded, and in thecorresponding lower resolution layer.
For each combination of pixel values in a context, theprobability distribution of black and white pixels can bedifferent. In an all white context, the probability of codinga white pixel will be much greater than that of coding a blackpixel. The Q-coder, like Huffman coding, achievescompression by assigning more bits to less probable symbols.The Q-coder can, unlike a Huffman coder, assign one outputcode bit to more than one input symbol, and thus is able tocompress bi-level pixels without explicit clustering, aswould be necessary using a Huffman coder.
Maximum compression will be achieved when all probabilities(one set for each combination of pixel values in the context)follow the probabilities of the pixels. The Q-coder thereforecontinuously adapts these probabilities to the symbols itsees.
JBIG can be regarded as two combined algorithms:
(1) Sending or storing multiple representations of images atdifferent resolutions with no extra storage cost.Differential layer contexts contain pixels in two resolutionlayers, and so enable the Q-coder to effectively code thedifference in information between the two layers, instead ofthe information contained in every layer. This means that,within a margin of approximately 5%, the number of resolutionlayers doesn't effect the compression ratio.
(2) A very efficient compression algorithm, mainly for usewith bi-level images. Compared to CCITT Group 4, JBIG isapproximately 10% to 50% better on text and line art, and evenbetter on halftones. JBIG, just like Group 4, gives worsecompression in the presence of noise in images.
An example application would be browsing through an imagedatabase.
["An overview of the basic principles of the Q-coder adaptivebinary arithmetic coder", W.B. Pennebaker, J.L. Mitchell,G.G. Langdon, R.B. Arps, IBM Journal of research anddevelopment, Vol.32, No.6, November 1988, pp. 771-726].
http://crs4.it/~luigi/MPEG/jbig.html.