0.2.1 Symbol coding
Lossy symbol coding provides a natural way of doing lossy coding of text regions. The idea is to allow small
differences between the original symbol bitmap and the one indexed in the symbol dictionary. Compression gain
is effected by not having to code a large dictionary and, afterwards, by having a cheap symbol index coding as a
consequence of the smaller dictionary. It is up to the encoder to decide when two bitmaps are essentially the same
or essentially different. This technique was first described in [1].
The hazard of lossy symbol coding is to have substitution errors, that is, to have the encoder replace a bitmap
corresponding to one character by a bitmap depicting a different character, so that a human reader misreads the
character. The risk of substitution errors can be reduced by using intricate measures of difference between bitmaps
and/or by making sure that the critical pixels of the indexed bitmap are correct. One way to control this, described
in [5], is to index the possibly wrong symbol and then to apply refinement coding to that symbol bitmap. The idea
is to encode the basic character shape at little cost, then correct pixels that the encoder believes alter the meaning
of the character.
The process of beneficially introducing loss in textual regions may also take simpler forms such as removing
flyspecks from documents or regularizing edges of letters. Most likely such changes will lower the code length of
the region without affecting the general appearance of the region — possibly even improving the appearance.
A number of examples of performing this sort of lossy symbol coding with JBIG2 can be found in [7].
NOTE — Although the term “text region” is used for regions of the page coded using symbol coding, other
possible uses of symbol coding include coding line-art and other non-textual data.
0.2.2 Generic coding
To effect near-lossless coding using generic coding, the encoder applies a preprocess to an original image and
encodes the changed image losslessly. The difficulties are to ensure that the changes result in a lower code length
and that the quality of the changed image does not suffer badly from the changes. Two possible preprocesses are
given in [11]. These preprocesses flip pixels that, when flipped, significantly lower the total code length of the
region, but can be flipped without seriously impairing the visual quality. The preprocesses provide for effective
near-lossless coding of periodic halftones and for a moderate gain in compression for other data types. The
preprocesses are not well-suited for error diffused images and images dithered with blue noise as perceptually
lossless compression will not be achieved at a significantly lower rate than the lossless rate.
0.2.3 Halftone coding
Halftone coding is the natural way to obtain very high compression for periodic halftones, such as clustered-dot
ordered dithered images. In contrast to lossy generic coding as described above, halftone coding does not intend to
preserve the original bitmap, although this is possible in special cases. Loss can also be introduced for additional
compression by not putting all the patterns of the original image into the dictionary, thereby reducing both the
number of halftone patterns and the number of bits required to specify which pattern is used in which location.
For lossy coding of error diffused images and images dithered with blue noise it is advisable to use halftone
coding with a small grid size. A reconstructed image will lack fine details and may display blockiness but will be
clearly recognizable. The blockiness may be reduced on the decoder side in a postprocess; for instance, by using
other reconstruction patterns than those that appear in the dictionary. Error diffused images may also be coded
losslessly, or with controlled loss as described above, using generic coding.
More details on performing this halftone coding can be found in [12].
0.2.4 Consequences of inadequate segmentation
In order to obtain optimum coding, both in terms of quality and file size, the correct form of encoding should
be used for the appropriate regions of the document pages. This subclause briefly describes the consequences of
errors in this segmentation.
Using lossy symbol coding for a document containing both text and halftone data will result in poor compres-
sion. Depending on the encoder, the quality of the halftone data may be good or bad. Using the form of lossy
symbol coding described in [5] the visual quality will probably not suffer.
Using lossy generic coding (using the preprocesses given in [11]) for a document containing both symbol and
halftone data usually results in good quality and moderate compression.
16