Vous êtes sur la page 1sur 74

Goal 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.

Approaches
Lossless
Information preserving Low compression ratios

Lossy
Not information preserving High compression ratios

Trade-off: image quality vs compression ratio

Data 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.

Data vs Information (contd)


The same amount of information can be represented by

various amount of data, e.g.:

Ex1:

Your subject faculty, AK, will meet you at SAC101 in SAC Building at 5 minutes past 9:00 am tomorrow morning AK Sir will meet you at SAC101 at 5 minutes past 9:00 am tomorrow morning AK Sir will meet you at SAC101 at 9:00 am tomorrow

Ex2:

Ex3:

Data Redundancy

compression

Compression ratio:

Data Redundancy (contd)

Relative data redundancy:

Example:

Types of Data Redundancy


(1) Coding (2) Interpixel (3) Psychovisual
Compression attempts to reduce one or more of these

redundancy types.

Coding 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

Coding Redundancy (contd)


N x M image rk: k-th gray level P(rk): probability of rk l(rk): # of bits for rk

Expected value:

= E( X )

= xP ( X
x

x)

Coding Redundancy (cond)


l(rk) = constant length

Example:

Coding Redundancy (contd)


l(rk) = variable length Consider the probability of the gray levels:
variable length

Interpixel redundancy
Interpixel redundancy implies that any pixel value can

be reasonably predicted by its neighbours (i.e., correlated).

f = ( x) o g ( x)

f ( x) g ( x + a )da

autocorrelation: f(x)=g(x)

Interpixel redundancy (contd)


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

Example:
original

(profile line 100) threshold

thresholded (1+10) bits/pair

Psychovisual 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!

Psychovisual redundancy (contd)


Example: quantization
256 gray levels 16 gray levels 16 gray levels

C=8/4 = 2:1

i.e., add to each pixel a small pseudo-random number prior to quantization

How 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?

Modeling 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

How much information does a pixel contain?


Suppose that gray level values are generated by a

random variable, then rk contains:

units of information!

How much information does an image contain?


Average information content of an image:
L 1

E = I (rk ) Pr(rk )
k =0

using

Entropy

units/pixel

(assumes statistically independent random events)

Redundancy (revisited)
Redundancy:

where:

Note: of Lavg= H, the R=0 (no redundancy)

Entropy Estimation
It is not easy to estimate H reliably!

image

Entropy Estimation (contd)


First order estimate of H:

Estimating Entropy (contd)


Second order estimate of H:
Use relative frequencies of pixel blocks :
image

Estimating Entropy (contd)


The first-order estimate provides only a lowerbound 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!

Estimating Entropy (contd)


For example, consider differences:

16

Estimating Entropy (contd)


Entropy of difference image:

Better than before (i.e., H=1.81 for original image) However, a better transformation could be found since:

Image Compression Model

Image Compression Model (contd)

Mapper: transforms input data in a way that facilitates

reduction of interpixel redundancies.

Image Compression Model (contd)

Quantizer: reduces the accuracy of the mappers

output in accordance with some pre-established fidelity criteria.

Image Compression Model (contd)

Symbol encoder: assigns the shortest code to the most

frequently occurring output values.

Image Compression Models (contd)

Inverse operations are performed. But quantization is irreversible in general.

Fidelity Criteria

How close is

to

Criteria Subjective: based on human observers Objective: mathematically defined criteria

Subjective Fidelity Criteria

Objective Fidelity Criteria


Root mean square error (RMS)

Mean-square signal-to-noise ratio (SNR)

Lossless Compression

Lossless Methods: Taxonomy

Huffman 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!

Huffman Coding (contd)


Forward Pass 1. Sort probabilities per symbol 2. Combine the lowest two probabilities 3. Repeat Step2 until only two probabilities remain.

Huffman Coding (contd)


Backward Pass

Assign code symbols going backwards

Huffman Coding (contd)


Lavg using Huffman coding:

Lavg assuming binary codes:

Huffman Coding/Decoding
After the code has been created, coding/decoding can be

implemented using a look-up table. Note that decoding is done unambiguously.

Arithmetic (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.

Arithmetic 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.

Arithmetic Coding (contd)


Encode message: a1 a2 a3 a3 a4
1) Assume message occupies [0, 1)

2) Subdivide [0, 1) based on the probability of i 3) Update interval by processing source symbols

Example

a1 a2 a3 a3 a4

Encode

[0.06752, 0.0688) or, 0.068

Example
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:

-(3 x 0.2log10(0.2)+0.4log10(0.4))=0.5786 digits/symbol


Note: finite precision arithmetic might cause problems due to truncations!

Arithmetic 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
0.2 0.48 0.592 0.5664 0.56768

a3 a3 a1 a2 a4

a1
0.0 0.4 0.56 0.56 0.5664

LZW 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

LZW 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

Dictionary Location

Entry

0 1 . 255 256 511

0 1 . 255 -

LZW Coding (contd)


39 39 39 39 39 39 39 39 126 126 126 126 126 126 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.
Entry

Dictionary Location

0 1 . 255 256 511

0 1 . 255 39-39 -

- Is 39 in the dictionary..Yes - What about 39-39.No - Then add 39-39 in entry 256

Example
39 39 39 39 39 39 39 39 126 126 126 126 126 126 126 126 Concatenated Sequence: CS = CR + P
(CR) (P)

CR = empty If CS is found: (1) No Output (2) CR=CS else: (1) Output D(CR) (2) Add CS to D (3) CR=P

Decoding 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.

Differential 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. yields a differential or residual image.

The difference between the original and predicted images


i.e., has much less dynamic range of pixel values.

The differential image is encoded using Huffman coding.

Run-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.

Bit-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)

Combining Huffman Coding with Run-length Coding


Assuming that a message has been encoded using Huffman

coding, additional compression can be achieved using runlength coding.

e.g., (0,1)(1,1)(0,1)(1,0)(0,2)(1,4)(0,2)

Lossy Compression
Transform the image into a domain where compression

can be performed more efficiently (i.e., reduce interpixel redundancies).


~ (N/n)2 subimages

Example: Fourier Transform

The magnitude of the FT decreases, as u, v increase!

K << N
K-1 K-1

Transform Selection

T(u,v) can be computed using various transformations, for

example: DFT DCT (Discrete Cosine Transform) KLT (Karhunen-Loeve Transformation)

DCT
forward

inverse

if u=0 if u>0

if v=0 if v>0

DCT (contd)
Basis set of functions for a 4x4 image (i.e.,cosines of

different frequencies).

DCT (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

DCT (contd)
DCT minimizes "blocking artifacts" (i.e., boundaries

between subimages do not become very visible).

DFT
i.e., n-point periodicity gives rise to discontinuities!

DCT
i.e., 2n-point periodicity prevents discontinuities!

DCT (contd)
Subimage size selection:

original

2 x 2 subimages

4 x 4 subimages

8 x 8 subimages

Lossy Methods: Taxonomy

Lossless 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. yields a differential or residual image.

The difference between the original and predicted images Encode differential image using Huffman coding.

xm
Predictor

dm pm

Entropy Encoder

Lossy 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 neighbours.

Block 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.

Subband 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.

Vector 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). vector.

Encode each image vector by the index of its closest code

Fractal 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!

Fractal Coding (contd)


Generated by 4 affine transformations!

Fractal 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.

Vous aimerez peut-être aussi