from
The Free On-line Dictionary of Computing (8 July 2008)
Joint Bi-level Image Experts Group
JBIG
<algorithm> (JBIG) An experts group of {ISO}, {IEC} and
{ITU-T} (JTC1/SC2/WG9 and SGVIII) working to define a
{compression} {standard} for {lossless} {image} coding. Their
proposed {algorithm} features compatible {progressive coding}
and {sequential coding} and is lossless - the image is
unaltered after compression and decompression.
JBIG can handle images with from one to 255 bits per {pixel}.
Better compression algorithms exist for more than about eight
bits per pixel. With multiple bits per pixel, {Gray code} can
be used to reduce the number of bit changes between adjacent
decimal values (e.g. 127 and 128), and thus improve the
compression which JBIG does on each {bitplane}.
JBIG uses discrete steps of detail by successively doubling
the {resolution}. The sender computes a number of resolution
layers and transmits these starting at the lowest resolution.
Resolution reduction uses pixels in the high resolution layer
and some already computed low resolution pixels as an index
into a lookup table. The contents of this table can be
specified by the user.
Compatibility between progressive and sequential coding is
achieved by dividing an image into stripes. Each stripe is a
horizontal bar with a user definable height. Each stripe is
separately coded and transmitted, and the user can define in
which order stripes, resolutions and bitplanes are intermixed
in the coded data. A progressively coded image can be decoded
sequentially by decoding each stripe, beginning by the one at
the top of the image, to its full resolution, and then
proceeding to the next stripe. Progressive decoding can be
done by decoding only a specific resolution layer from all
stripes.
After dividing an image into {bitplanes}, {resolution layers}
and stripes, eventually a number of small bi-level {bitmaps}
are left to compress. Compression is done using a {Q-coder}.
The Q-coder codes bi-level pixels as symbols using the
probability of occurrence of these symbols in a certain
context. JBIG defines two kinds of context, one for the
lowest resolution layer (the base layer), and one for all
other layers (differential layers). Differential layer
contexts contain pixels in the layer to be coded, and in the
corresponding lower resolution layer.
For each combination of pixel values in a context, the
probability distribution of black and white pixels can be
different. In an all white context, the probability of coding
a white pixel will be much greater than that of coding a black
pixel. The Q-coder, like {Huffman coding}, achieves
{compression} by assigning more bits to less probable symbols.
The Q-coder can, unlike a Huffman coder, assign one output
code bit to more than one input symbol, and thus is able to
compress bi-level pixels without explicit {clustering}, as
would be necessary using a Huffman coder.
[What is "clustering"?]
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 therefore
continuously adapts these probabilities to the symbols it
sees.
JBIG can be regarded as two combined algorithms:
(1) Sending or storing multiple representations of images at
different resolutions with no extra storage cost.
Differential layer contexts contain pixels in two resolution
layers, and so enable the Q-coder to effectively code the
difference in information between the two layers, instead of
the information contained in every layer. This means that,
within a margin of approximately 5%, the number of resolution
layers doesn't effect the compression ratio.
(2) A very efficient compression algorithm, mainly for use
with bi-level images. Compared to {CCITT Group 4}, JBIG is
approximately 10% to 50% better on text and line art, and even
better on {halftones}. JBIG, just like Group 4, gives worse
compression in the presence of noise in images.
An example application would be browsing through an image
database.
["An overview of the basic principles of the Q-coder adaptive
binary arithmetic coder", W.B. Pennebaker, J.L. Mitchell,
G.G. Langdon, R.B. Arps, IBM Journal of research and
development, Vol.32, No.6, November 1988, pp. 771-726].
(http://crs4.it/~luigi/MPEG/jbig.html).
(1998-03-29)