318 PART IV / STANDARDS
Table 16.4 Selected Code Option Identification Key
Option n _< 8
8<n<16
16<n
u
Zero-Block 0000
Second-Extension 0001
FS 001
k -- 1 010
k=2 011
k = 3 100
k = 4 101
k=5 110
k=6
k---7
k--8
k=9 m
k=10
k=ll
k=12
k=13
k=14
k=15
9 o
9 o
k=29
No compression 111
00000 000000
00001 000001
0001 00001
0010 00010
0011 00011
0100 00100
0101 00101
0110 00110
0111 00111
1000 01000
1001 01001
1010 01010
1011 01011
1100 01100
1101 01101
1110 01110
01111
10000
11110
1111 11111
Note:
A dash indicates no applicable value.
16.4 PREPROCESSOR
The role of the preprocessor is to transform the data into samples that can be more efficiently
compressed by the entropy encoder. To ensure that compression is "lossless," the preprocessor
must be reversible. The FS and sample-split options work on non-negative integer values. The
most effective preprocessor will transform integer data values into all non,negative values with
a unimodal distribution resembling a one-sided Lapace function. The example in Section 16.3.1
shows that to achieve effective compression, we need a preprocessing stage that transforms the
original data so that shorter codewords occur with higher probability than longer codewords. If
there are several candidate preprocessing stages, we would like to select the one that produces
the shortest average codeword length.
In general a preprocessor that removes correlation between samples in the input data block
will improve the performance of the entropy coder. In the following discussion, we assume that
preprocessing is done by a predictor followed by a prediction error mapper. For some types of
data, more sophisticated transform-based techniques can offer improved compression efficiency,
at the expense of higher complexity.
16.4.1 Predictor
The decorrelation function of the preprocessor can be implemented by a judicious choice of
predictor for an expected set of data samples. The selection of a predictor should take into
account the expected data as well as possible variations in the background noise and the gain of
CHAPTER 16 / THE CCSDS RECOMMENDATION FOR SPACE APPLICATIONS 319
x(i- 1, j-
1)
x(i- 1, j)
x(i, j-
1)
x(i, j)
FIGURE 16.4
Typical pixel data arrangement.
scan line i- 1
scan line i
Prediction Error
Ai
Delay
A
Predictor
xi
FIGURE 16.5
Preprocessor using a unit-delay predictor.
Prediction
Error
Mapper
Preprocessed
Samples
8i
,,..._
the sensors acquiring the data. The predictor should be chosen to minimize the amount of noise
resulting from sensor non-uniformity.
Given the data arrangement in Fig. 16.4, the predictor value
2(i, j)
of input value
x(i, j)
can be
(a) A one-dimensional first-order predictor:
2(i, j) = x(i, j -
1), or
2(i, j) = x(i -
1, j).
(b) A two-dimensional predictor: ~(i, j) =
1/2[x(i, j -
1) +
x(i
- 1, j)].
(c) A two-dimensional predictor: ~(i, j) =
1/813x(i, j -
1) +
3x(i - 1, j)
+ 2x(i- 1, j-
1)].
Other types of weighted predictor can be devised depending on applications. For multispectral
data, another prediction technique is to use samples from one spectral band as an input to a higher
order prediction function for the next band.
One of the simplest predictive coders is a linear first-order unit-delay predictor shown in
Fig. 16.5. The output, Ai, will be the difference between the input data sample and the preceding
data sample.
16.4.2 Reference Sample
It is clear from Fig. 16.5 that for a reversible operation, a reference sample is needed to perform the
first prediction. A reference sample is an unaltered data sample upon which successive predictions
are based. Reference samples are required by the decoder to recover the original values from
difference values. In cases where a reference sample is not used in the preprocessor or where

Get Lossless Compression Handbook now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.