Title: Image Processing Fundamentals
1Digital Image Processing
Chapter 13 Image Compression
Prepared by Eng. Mohamed Hassan Supervised by
Dr. Ashraf Aboshosha http//www.icgst.com/A_Abosh
osha.html editor_at_icgst.com Tel.
0020-122-1804952 Fax. 0020-2-24115475
2Goal of Image Compression
- Digital images require huge amounts of space for
storage and large bandwidths for transmission. - A 640 x 480 color image requires close to 1MB of
space. - The goal of image compression is to reduce the
amount of data required to represent a digital
image. - Reduce storage requirements and increase
transmission rates.
3Approaches
- Lossless
- Information preserving
- Low compression ratios
- Lossy
- Not information preserving
- High compression ratios
- Trade-off image quality vs compression ratio
4Data ? Information
- Data and information are not synonymous terms!
- Data is the means by which information is
conveyed. - Data compression aims to reduce the amount of
data required to represent a given quantity of
information while preserving as much information
as possible.
5Data vs Information
- The same amount of information can be represented
by various amount of data, e.g.
Your wife, Helen, will meet you at Logan Airport
in Boston at 5 minutes past 600 pm tomorrow
night Your wife will meet you at Logan Airport
at 5 minutes past 600 pm tomorrow night Helen
will meet you at Logan at 600 pm tomorrow night
Ex1
Ex2
Ex3
6Data Redundancy
compression
Compression ratio
7Data Redundancy
Example
8Types of Data Redundancy
- Coding
- Interpixel
- Psychovisual
- Compression attempts to reduce one or more of
these redundancy types.
9Coding Redundancy
- Code a list of symbols (letters, numbers, bits
etc.) - Code word a sequence of symbols used to
represent a piece of information or an event
(e.g., gray levels). - Code word length number of symbols in each code
word
10Coding Redundancy
N x M image rk k-th gray level P(rk)
probability of rk l(rk) of bits for rk
Expected value
11Coding Redundancy
Example
12Coding Redundancy
- l(rk) variable length
- Consider the probability of the gray levels
13Interpixel redundancy
- Interpixel redundancy implies that any pixel
value can be reasonably predicted by its
neighbors (i.e., correlated).
autocorrelation f(x)g(x)
14Interpixel redundancy
- To reduce interpixel redundnacy, the data must be
transformed in another format (i.e., through a
transformation) - e.g., thresholding, differences between adjacent
pixels, DFT
(110) bits/pair
15Psychovisual redundancy
- The human eye does not respond with equal
sensitivity to all visual information. - It is more sensitive to the lower frequencies
than to the higher frequencies in the visual
spectrum. - Idea discard data that is perceptually
insignificant!
16Psychovisual redundancy
Example quantization
256 gray levels
16 gray levels
16 gray levels
i.e., add to each pixel a small pseudo-random
number prior to quantization
C8/4 21
17How do we measure information?
- What is the information content of a
message/image? - What is the minimum amount of data that is
sufficient to describe completely an image
without loss of information?
18Modeling Information
- Information generation is assumed to be a
probabilistic process. - Idea associate information with probability!
A random event E with probability P(E) contains
Note I(E)0 when P(E)1
19How much information does a pixel contain?
- Suppose that gray level values are generated by a
random variable, then rk contains
units of information!
20How much information does an image contain?
- Average information content of an image
using
Entropy
units/pixel
(assumes statistically independent random events)
21Redundancy (revisited)
where
Note of Lavg H, the R0 (no redundancy)
22Entropy Estimation
- It is not easy to estimate H reliably!
image
23Entropy Estimation
- First order estimate of H
24Estimating Entropy
- Second order estimate of H
- Use relative frequencies of pixel blocks
image
25Estimating Entropy
- The first-order estimate provides only a
lower-bound on the compression that can be
achieved. - Differences between higher-order estimates of
entropy and the first-order estimate indicate the
presence of interpixel redundancy!
Need to apply transformations!
26Estimating Entropy
- For example, consider differences
27Estimating Entropy
- Entropy of difference image
- Better than before (i.e., H1.81 for original
image)
- However, a better transformation could be found
since
28Image Compression Model
29Image Compression Model
- Mapper transforms input data in a way that
facilitates reduction of interpixel redundancies.
30Image Compression Model
- Quantizer reduces the accuracy of the mappers
output in accordance with some pre-established
fidelity criteria.
31Image Compression Model
- Symbol encoder assigns the shortest code to the
most frequently occurring output values.
32Image Compression Models
- Inverse operations are performed.
- But quantization is irreversible in general.
33Fidelity Criteria
- How close is to ?
- Criteria
- Subjective based on human observers
- Objective mathematically defined criteria
34Subjective Fidelity Criteria
35Objective Fidelity Criteria
- Root mean square error (RMS)
- Mean-square signal-to-noise ratio (SNR)
36Objective Fidelity Criteria (contd)
RMSE 5.17
RMSE 15.67
RMSE 14.17
37Lossless Compression
38Lossless Methods Taxonomy
39Huffman Coding (coding redundancy)
- A variable-length coding technique.
- Optimal code (i.e., minimizes the number of code
symbols per source symbol). - Assumption symbols are encoded one at a time!
40Huffman Coding
- Forward Pass
- 1. Sort probabilities per symbol
- 2. Combine the lowest two probabilities
- 3. Repeat Step2 until only two probabilities
remain.
41Huffman Coding
- Backward Pass
- Assign code symbols going backwards
42Huffman Coding
- Lavg using Huffman coding
- Lavg assuming binary codes
43Huffman Coding/Decoding
- After the code has been created, coding/decoding
can be implemented using a look-up table. - Note that decoding is done unambiguously.
44Arithmetic (or Range) Coding (coding redundancy)
- No assumption on encode source symbols one at a
time. - Sequences of source symbols are encoded together.
- There is no one-to-one correspondence between
source symbols and code words. - Slower than Huffman coding but typically achieves
better compression.
45Arithmetic Coding (contd)
- A sequence of source symbols is assigned a single
arithmetic code word which corresponds to a
sub-interval in 0,1. - As the number of symbols in the message
increases, the interval used to represent it
becomes smaller. - Smaller intervals require more information units
(i.e., bits) to be represented.
46Arithmetic Coding (contd)
Encode message a1 a2 a3 a3 a4
1) Assume message occupies 0, 1)
2) Subdivide 0, 1) based on the probability of
ai
3) Update interval by processing source symbols
47Example
Encode
a1 a2 a3 a3 a4
0.06752, 0.0688) or, 0.068
48Example
- The message a1 a2 a3 a3 a4 is encoded using 3
decimal digits or 3/5 0.6 decimal digits per
source symbol. - The entropy of this message is
- Note finite precision arithmetic might cause
problems due to truncations!
-(3 x 0.2log10(0.2)0.4log10(0.4))0.5786
digits/symbol
49Arithmetic Decoding
1.0
0.8
0.72
0.592
0.5728
a4
0.8
0.72
0.688
0.5856
0.57152
Decode 0.572
a3
0.4
0.56
0.624
0.5728
056896
a2
a3 a3 a1 a2 a4
0.2
0.48
0.592
0.5664
0.56768
a1
0.0
0.4
0.56
0.56
0.5664
50LZW Coding (interpixel redundancy)
- Requires no priori knowledge of pixel probability
distribution values. - Assigns fixed length code words to variable
length sequences. - Patented Algorithm US 4,558,302
- Included in GIF and TIFF and PDF file formats
51LZW Coding
- A codebook (or dictionary) needs to be
constructed. - Initially, the first 256 entries of the
dictionary are assigned to the gray levels
0,1,2,..,255 (i.e., assuming 8 bits/pixel)
Initial Dictionary
Consider a 4x4, 8 bit image 39 39 126
126 39 39 126 126 39 39
126 126 39 39 126 126
52LZW Coding (contd)
- 39 39 126 126
- 39 39 126 126
- 39 39 126 126
- 39 39 126 126
As the encoder examines image pixels, gray level
sequences (i.e., blocks) that are not in the
dictionary are assigned to a new entry.
- Is 39 in the dictionary..Yes - What
about 39-39.No - Then add 39-39 in entry
256
39-39
53Example
Concatenated Sequence CS CR P
39 39 126 126 39 39 126 126 39 39
126 126 39 39 126 126
(CR)
(P)
CR empty
If CS is found (1) No Output (2) CRCS
else (1) Output D(CR) (2) Add CS to D (3)
CRP
54Decoding LZW
- The dictionary which was used for encoding need
not be sent with the image. - Can be built on the fly by the decoder as it
reads the received code words.
55Differential Pulse Code Modulation (DPCM) Coding
(interpixel redundancy)
- A predictive coding approach.
- Each pixel value (except at the boundaries) is
predicted based on its neighbors (e.g., linear
combination) to get a predicted image. - The difference between the original and predicted
images yields a differential or residual image. - i.e., has much less dynamic range of pixel
values. - The differential image is encoded using Huffman
coding.
56Run-length coding (RLC) (interpixel redundancy)
- Used to reduce the size of a repeating string of
characters (i.e., runs) -
- 1 1 1 1 1 0 0 0 0 0 0 1 ? (1,5) (0,
6) (1, 1) - a a a b b b b b b c c ? (a,3) (b, 6) (c,
2) - Encodes a run of symbols into two bytes (symbol,
count) - Can compress any type of data but cannot achieve
high compression ratios compared to other
compression methods.
57Bit-plane coding (interpixel redundancy)
- An effective technique to reduce inter pixel
redundancy is to process each bit plane
individually. - (1) Decompose an image into a series of binary
images. -
- (2) Compress each binary image (e.g., using
run-length coding)
58Combining Huffman Coding with Run-length Coding
- Assuming that a message has been encoded using
Huffman coding, additional compression can be
achieved using run-length coding.
e.g., (0,1)(1,1)(0,1)(1,0)(0,2)(1,4)(0,2)
59Lossy Compression
- Transform the image into a domain where
compression can be performed more efficiently
(i.e., reduce interpixel redundancies).
(N/n)2 subimages
60Example Fourier Transform
The magnitude of the FT decreases, as u, v
increase!
K ltlt N
K-1
K-1
61Transform Selection
- T(u,v) can be computed using various
transformations, for example - DFT
- DCT (Discrete Cosine Transform)
- KLT (Karhunen-Loeve Transformation)
62DCT
63DCT (contd)
- Basis set of functions for a 4x4 image
(i.e.,cosines of different frequencies).
64DCT (contd)
DFT
WHT
DCT
8 x 8 subimages 64 coefficients per
subimage 50 of the coefficients truncated
RMS error 2.32 1.78
1.13
65DCT (contd)
4 x 4 subimages
8 x 8 subimages
2 x 2 subimages
original
66JPEG Compression
- JPEG is an image compression standard which was
accepted as an international standard in 1992. - Developed by the Joint Photographic Expert Group
of the ISO/IEC for coding and compression of
color/gray scale images. - Yields acceptable compression in the 101 range.
- A scheme for video compression based on JPEG
called Motion JPEG (MJPEG) exists
67JPEG Compression (contd)
- JPEG uses DCT for handling interpixel redundancy.
- Modes of operation
- (1) Sequential DCT-based encoding
- (2) Progressive DCT-based encoding
- (3) Lossless encoding
- (4) Hierarchical encoding
68JPEG Compression (Sequential DCT-based encoding)
Entropy decoder
69JPEG Steps
- 1.Divide the image into 8x8 subimages
- For each subimage do
- 2. Shift the gray-levels in the range -128,
127 - - DCT requires range be centered
around 0 - 3. Apply DCT (i.e., 64 coefficients)
- 1 DC coefficient F(0,0)
- 63 AC coefficients F(u,v)
-
70JPEG Steps
- 4. Quantize the coefficients (i.e., reduce the
amplitude of coefficients that do not contribute
a lot).
Q(u,v) quantization table
71Example
72Example (contd)
Quantization
73JPEG Steps (contd)
- 5. Order the coefficients using zig-zag ordering
- - Place non-zero coefficients first
- - Create long runs of zeros (i.e., good for
run-length encoding)
74Example
75JPEG Steps (contd)
- 6. Form intermediate symbol sequence and encode
coefficients - 6.2 AC coefficients variable length coding
6.1 DC coefficients predictive encoding
76Intermediate Coding
DC
symbol_1 (SIZE)
symbol_2 (AMPLITUDE)
end of block
DC (6)
(61) AC (0,2)
(-3)
symbol_1 (RUN-LENGTH, SIZE) symbol_2
(AMPLITUDE)
SIZE bits for encoding amplitude RUN-LENGTH
run of zeros
77DC/AC Symbol Encoding
symbol_1 symbol_2 (SIZE)
(AMPLITUDE)
predictive coding
-2048, 2047
-211, 211-1 1 SIZE11
0 0 0 0 0 0 476 (6,9)(476)
-210, 210-1 1 SIZE10
If RUN-LENGTH gt 15, use symbol (15,0) , i.e.,
RUN-LENGTH16
78Effect of Quality
90 (58k bytes)
50 (21k bytes)
10 (8k bytes)
worst quality, highest compression
best quality, lowest compression
79Example 1 homogeneous 8 x 8 block
80Example 1 (contd)
Quantized
De-quantized
81Example 1 (contd)
Reconstructed
Error
82Example 2 less homogeneous 8 x 8 block
83Example 2 (contd)
Quantized
De-quantized
84Example 2 (contd)
Error
Reconstructed spatial
85JPEG for Color Images
- Could apply JPEG on R/G/B components .
- It is more efficient to describe a color in terms
of its luminance and chrominance content
separately, to enable more efficient processing. - YUV
- Chrominance can be subsampled due to human vision
insensitivity
86JPEG for Color Images
- Luminance Received brightness of the light
(proportional to the total energy in the visible
band). - Chrominance Describe the perceived color tone of
the light (depends on the wavelength composition
of light - Hue Specify the color tone (i.e., depends on the
peak wavelength of the light). - Saturation Describe how pure the color is (i.e.,
depends on the spread or bandwidth of the light
spectrum).
87JPEG for Color Images
Encoder
Decoder
88JPEG Modes
- JPEG supports several different modes
- Sequential Mode
- Progressive Mode
- Hierarchical Mode
- Lossless Mode
- Sequential is the default mode
- Each image component is encoded in a single
left-to-right, top-to-bottom scan. - This is the mode we have been describing.
89Progressive JPEG
- The image is encoded in multiple scans, in order
to produce a quick, rough decoded image when
transmission time is long.
Sequential
Progressive
90Progressive JPEG (contd)
- Send DCT coefficients in multiple scans
- (1) Progressive spectral selection algorithm
- (2) Progressive successive approximation
algorithm - (3) Hybrid progressive algorithm
91Progressive JPEG (contd)
- (1) Progressive spectral selection algorithm
- Group DCT coefficients into several spectral
bands - Send low-frequency DCT coefficients first
- Send higher-frequency DCT coefficients next
92Progressive JPEG (contd)
- (2) Progressive successive approximation
algorithm - Send all DCT coefficients but with lower
precision. - Refine DCT coefficients in later scans.
93Progressive JPEG (contd)
- (3) Hybrid progressive algorithm
- Combines spectral selection and successive
approximation. -
94Hierarchical JPEG
- Hierarchical mode encodes the image at several
different resolutions. - Image is transmitted in multiple passes with
increased resolution at each pass.
95Hierarchical JPEG (contd)
f4
N/4 x N/4
f2
N/2 x N/2
f
N x N
96Hierarchical JPEG (contd)
97Hierarchical JPEG (contd)
98Lossless Differential Pulse Code Modulation
(DPCM) Coding
- Each pixel value (except at the boundaries) is
predicted based on certain neighbors (e.g.,
linear combination) to get a predicted image. - The difference between the original and predicted
images yields a differential or residual image. - Encode differential image using Huffman coding.
xm
dm
Entropy Encoder
pm
predictor
99Lossy Differential Pulse Code Modulation (DPCM)
Coding
- Similar to lossless DPCM except that (i) it uses
quantization and (ii) the pixels are predicted
from the reconstructed values of certain
neighbors.
100Block Truncation Coding
- Divide image in non-overlapping blocks of pixels.
- Derive a bitmap (0/1) for each block using
thresholding. - e.g., use mean pixel value in each block as
threshold. - For each group of 1s and 0s, determine
reconstruction value - e.g., average of corresponding pixel values in
original block.
101Subband Coding
- Analyze image to produce components containing
frequencies in well defined bands (i.e.,
subbands) - e.g., use wavelet transform.
- Optimize quantization/coding in each subband.
102Vector Quantization
- Develop a dictionary of fixed-size vectors (i.e.,
code vectors), usually blocks of pixel values. - Partition image in non-overlapping blocks (i.e.,
image vectors). - Encode each image vector by the index of its
closest code vector.
103Fractal Coding
- What is a fractal?
- A rough or fragmented geometric shape that can be
split into parts, each of which is (at least
approximately) a reduced-size copy of the whole.
Idea store images as collections of
transformations!
104Fractal Coding (contd)
Generated by 4 affine transformations!
105Fractal Coding (contd)
- Decompose image into segments (i.e., using
standard segmentations techniques based on edges,
color, texture, etc.) and look them up in a
library of IFS codes. - Best suited for textures and natural images.
106Fingerprint Compression
- An image coding standard for digitized
fingerprints, developed and maintained by - FBI
- Los Alamos National Lab (LANL)
- National Institute for Standards and Technology
(NIST). - The standard employs a discrete wavelet
transform-based algorithm (Wavelet/Scalar
Quantization or WSQ).
107Memory Requirements
- FBI is digitizing fingerprints at 500 dots per
inch with 8 bits of grayscale resolution. - A single fingerprint card turns into about 10 MB
of data!
A sample fingerprint image 768 x 768 pixels
589,824 bytes
108Preserving Fingerprint Details
The "white" spots in the middle of the black
ridges are sweat pores Theyre admissible points
of identification in court, as are the little
black flesh islands in the grooves between
the ridges
These details are just a couple pixels wide!
109What compression scheme should be used?
- Better use a lossless method to preserve every
pixel perfectly. - Unfortunately, in practice lossless methods
havent done better than 21 on fingerprints! - Would JPEG work well for fingerprint compression?
110Varying compression ratio
- FBIs target bit rate is around 0.75 bits per
pixel (bpp) - i.e., corresponds to a target compression ratio
of 10.7 (assuming 8-bit images) - This target bit rate is set via a knob on the
WSQ algorithm. - i.e., similar to the "quality" parameter in many
JPEG implementations. - Fingerprints coded with WSQ at a target of 0.75
bpp will actually come in around 151
111End
Thank you