Tải bản đầy đủ (.pdf) (11 trang)

Wavalet transform coding SPIHT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.46 MB, 11 trang )

Wavelet Transform
• Wavelet Transform
– A family of transformations that filters the data into
low resolution data plus detail data.

CSE 592
Data Compression

low pass filter

Fall 2006

image

Lecture 15:
Wavelet Transform Coding
SPIHT

L

L

H

H

wavelet
transformed image

high pass filter
detail subbands


3

Wavelet Transformed Barbara
(Enhanced)

Wavelet Transformed Barbara
(Actual)

Low
resolution
subband

most of the
details are small
so they are
very dark.

Detail
subbands

4

5

Bit Planes of Coefficients

Wavelet Transform Compression
Encoder
image
(pixels)


wavelet
transform

transformed image
(coefficients)

wavelet
coding

sign plane

bit
stream

+-+++

1
Decoder
wavelet
decoding

2
transformed image
(approx coefficients)

inverse
wavelet
transform


distorted
image

Wavelet coder transmits wavelet transformed image in bit plane
order with the most significant bits first.

3
4
.
.
.

00011

00001

01000

10100

.
.
.
Coefficients are normalized between –1 and 1.

6

7

1

CuuDuongThanCong.com

/>

Rate-Fidelity Curve

Why Wavelet Compression Works

– In the most significant bit planes, many coefficients are 0 so they
can be coded efficiently.
– Only some of the bit planes are transmitted. (This is where quality
is lost when doing lossy compression.)

• Natural progressive transmission:
compressed bit planes

PSNR

• Wavelet coefficients are transmitted in bit-plane order.

38
36
34
32
30
28
26
24
22
20

0.

02
0.
13
0.
23
0.
33
0.
42
0.
52
0.
65
0.
73
0.
83
0.
92

...

SPIHT coded Barbara

bits per pixel

truncated compressed bit planes


As more bit planes of the wavelet transformed image are sent,
the higher the image quality.
8

9

Wavelet Coding Methods

Wavelet Transform
Encoder

• EZW - Shapiro, 1993

image
(pixels)

– Embedded Zerotree coding.

• SPIHT - Said and Pearlman, 1996
– Set Partitioning in Hierarchical Trees coding. Also uses
“zerotrees”.

wavelet
transform

transformed image
(coefficients)

wavelet
coding


bit
stream

Decoder

• ECECOW - Wu, 1997

transformed image
wavelet (approx coefficients)
decoding

– Uses arithmetic coding with context.

• EBCOT – Taubman, 2000
– Uses arithmetic coding with different context.

• JPEG 2000 – new standard based largely on EBCOT
• GTW – Hong, Ladner 2000

inverse
wavelet
transform

distorted
image

A wavelet transform decomposes the image into a low resolution
version and details. The details are typically very small so they can
be coded in very few bits.


– Uses group testing which is closely related to Golomb codes.
10

One-Dimensional Average
Transform (1)

11

One-Dimensional Average Transform
(2)
y

y
x

detail

average
(x+y)/2

y
x

x

y

(x+y)/2 = L
low pass filter


L

x

(y-x)/2
(y-x)/2 = H

x= L-H
y=L+H

high pass
filter

How do we represent
two data points at lower resolution?

H
Transform

detail

12

Inverse Transform

13

2
CuuDuongThanCong.com


/>

One-Dimensional Average
Transform (3)

One-Dimensional Average
Transform (4)
Low
Resolution
Version

L

A

B

L

H

H
Note that the low resolution
version and the detail together
have the same number of
values as the original.

Detail


1
1
n
A[2i] + A[2i + 1], 0 ≤ i <
2
2
2
1
1
n
B[n/2 + i] = − A[2i] + A[2i + 1], 0 ≤ i <
2
2
2

B[i] =

L = B[0..n/2-1]
H = B[n/2..n-1]

14

15

One-Dimensional Average Inverse
Transform

Two Dimensional Transform (1)
low resolution
subband

horizontal
transform

B

L

H

L

H

vertical
transform

A

A[2i] = B[i] − B[n/2 + i], 0 ≤ i <

n
2

Transform
each row

LL

LH


HL

HH

Transform
each column
in L and H

n
A[2i + 1] = B[i] + B[n/2 + i], 0 ≤ i <
2

3 detail
subbands

16

17

Two Dimensional Average
Transform

Two Dimensional Transform (2)

horizontal
transform
LLLL LHLL

LL


HL

negative value

vertical
transform

LH

HH

horizontal
transform

LLL HLL

HL

Transform
each row in LL

LH

vertical
transform

LH
HLLL HHLL

HH


HL

HH

Transform
each column in
LLL and HLL

2 levels of transform gives 7 subbands.
k levels of transform gives 3k + 1 subbands.
18

19

3
CuuDuongThanCong.com

/>

Wavelet Transformed Image

Wavelet Transform Details

2 levels of wavelet
transform

• Conversion to reals:
– Convert gray scale to floating point.
– Convert color to Y U V and then convert each to

band to floating point. Compress separately.

1 low resolution
subband
6 detail subbands

• After several levels (3-8) of transform we
have a matrix of floating point numbers called
the wavelet transformed image (coefficients).

20

21

Wavelet Transforms

Haar Filters

• Technically wavelet transforms are special kinds of
linear transformations. Easiest to think of them as
filters.
– The filters depend only on a constant number of values.
(bounded support)
– Preserve energy (norm of the pixels = norm of the
coefficients)
– Inverse filters also have bounded support.

low pass =

1 1

,
2 2

high pass = −

0.8

0.8

0.6

0.6
0.4

0.4

0.2

0.2

0

0
-0.2

1 1
,
2 2

0


1

-0.2

0

1

-0.4

-0.4

-0.6

-0.6

-0.8

-0.8

n
1
1
A[2i + 1], 0 ≤ i <
A[2i] +
low pass B[i] =
2
2
2

1
1
n
high pass B[n/2 + i] = −
A[2i] +
A[2i + 1], 0 ≤ i <
2
2
2

• Well-known wavelet transforms
– Haar – like the average but orthogonal to preserve
energy. Not used in practice.
– Daubechies 9/7 – biorthogonal (inverse is not the
transpose). Most commonly used in practice.

Want the sum of squares of the filter coefficients = 1
22

23

Linear Time Complexity of 2D
Wavelet Transform

Daubechies 9/7 Filters
low pass filter

high pass filter

1


gj

0.8

hj

0.6

0.6

0.4

0.4

0.2

0.2

0
-0.2

• Let n = number of pixels and let b be the
number of coefficients in the filters.
• One level of transform takes time

1

0.8


0
-4

-3

-2

-1

0

1

2

3

-0.2

4

-0.4

-0.4

-0.6

-0.6

-0.8


-0.8

-1

-3

-2

-1

0

1

2

3

-1

low pass

B[i] =

4

∑ h A[2 i + j],
j


0≤i<

j = −4

high pass

B[n/2 + i] =

3

∑ g A[2 i + j],
j

j = −3

– O(bn)

• k levels of transform takes time proportional to
– bn + bn/4 + ... + bn/4k-1 < (4/3)bn.

n
2

0≤i<

• The wavelet transform is linear time when the
filters have constant size.

n
2


– The point of wavelets is to use constant size filters
unlike many other transforms.

reflection used near boundaries
24

25

4
CuuDuongThanCong.com

/>

Wavelet Coding (SignificanceRefinement Method)

Wavelet Coding
Encoder
image
(pixels)

wavelet
transform

transformed image
(coefficients)

bit
stream


wavelet
coding

Decoder
transformed image
wavelet (approx coefficients)
decoding

distorted
image

inverse
wavelet
transform

• Normalize the coefficients to be between –1
and 1.
• Transmit one bit-plane at a time.
• For each bit-plane:
– Significance pass: Find the newly significant
coefficients, transmit their signs.
– Refinement pass: transmit the bits of the known
significant coefficients.

Wavelet coder transmits wavelet transformed image in bit plane
order with the most significant bits first.
26

27


Significant Coefficients

Significant Coefficients

90

90

80

80

70

70

bit-plane 1
threshold

60
50

magnitude

40

60
50

magnitude


40

30

30

20

20

10

10

0

bit-plane 2
threshold

0

coefficients

coefficients

28

Significance & Refinement Passes
• Code a bit-plane in two

passes
– Significance pass
• codes previously
insignificant coefficients
• also codes sign bit
– Refinement pass
• refines values for
previously significant
coefficients

• Main idea:
– Significance-pass bits likely to
be 0;
– Refinement-pass bit are not

#

29

bit plane
1

Coefficient List
value

bpp
.0014

1 010010010110


PSNR
15.3

2 001011011110
3 000001001001
4 000000010110
5 000100111101
6 000000100101

refinement
bits

7 101101110101
8 010010011111
9 001011101101
10 000010100101

:
:

Bit-plane 3
30

31

5
CuuDuongThanCong.com

/>


bit planes
1–2

bit planes
1–3

bpp
.0033

bpp
.0072

PSNR
16.8

PSNR
18.8

32

33

bit planes
1–4

bit planes
1–5

bpp
.015


bpp
.035

533 : 1

ratio
229 : 1

PSNR
20.5

PSNR
22.2

34

35

bit planes
1–6

bit planes
1–7

bpp
.118

bpp
.303


ratio
68 : 1

ratio
26 : 1

PSNR
24.8

PSNR
28.7

36

37

6
CuuDuongThanCong.com

/>

bit planes
1–8

bit planes
1–9

bpp
.619


bpp
1.116

ratio
13 : 1

ratio
7:1

PSNR
32.9

PSNR
37.5

38

39

The Zero-Tree Method

Zero-Tree Example

• Invented by Shapiro, 1993, and refined by
Said and Pearlman, 1996.
Values in a
zero-tree are
correlated.


If a bit plane value in a low
resolution subband is insignificant
then it is likely that the
corresponding values in higher
subbands are also insignificant
in the same bit plane.
Such groups of insignificant
values are called zero-trees.

40

41

Simplified SPIHT Coding

SPIHT Zero-Trees

• Runs in passes - one for each bit plane.
• C[i,j] is the coefficient at index (i,j) and C[i,j,k] is the k-th
bit of C[i,j].
• Encoder maintains two data structures.
– S, a list of indices (i,j) such that C[i,j] is declared significant in
the current bit plane.
– Z, a stack of zero trees of two types.
• rootless (R)
• root-and-childless (RC)
– The nodes in a zero tree are insignificant in the current bit
plane. (ignore root in R and root and children in RC)

root is on the list S


R

all other nodes are
insignificant in
current bit plane
RC
Each zero tree can be
identified by its type
and the index (i,j)
of its root.

42

43

7
CuuDuongThanCong.com

/>

R-Tree Example (1)

R-Tree Example (2)

0 1 2 3 4 5 6 7
0
1
2
3

4
5
6
7

0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7

Example of zero-tree (R,0,1)
(0,1)

0 1 2 3 4 5 6 7

(0,2)

0
1
2
3
4
5
6
7


(0,3)

(1,2)

Example of zero-tree (R,3,1)
(3,1)
0 1 2 3 4 5 6 7

(1,3)

(6,2)

0
1
2
3
4
5
6
7

(2,4) (2,5) (3,4) (3,5)

in S

(6,3)

(7,2)


(7,3)

in S

44

45

Initialization of SPIHT

RC-Tree Example

• The lowest subband indices are put into S.

0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7

– If (i,j) in lowest subband then output sign (0 for and 1 for +) of C[i,j] and put (i,j) into S.

Example of zero-tree (RC,1,1)

• A stack Z of zero trees is formed using the
lowest resolution subband indices as roots.


(1,1)

0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7

(2,2)

(2,3)

(3,2)

– If (i,j) in the lowest subband is a root of a zero tree
of type R if i is odd or (i is even and j is odd).

(3,3)

(4,6) (4,7) (5,6) (5,7)
root of a zero tree
in S

lowest subband
46


47

Decomposition of R

Iteration of SPIHT Encoder
k-th iteration
We have list S of significant values and a stack Z of
zero trees from the previous pass or the initialization.
Significance Pass.
while Z is not empty do
T := pop(Z);
if T has an index that becomes significant in bit plane k then
output 1;
decompose(T);
else
output 0;
push T on Z’
Z := Z’; {At this point all indices in zero trees in Z are insignificant}
Refinement Pass.
for each (i,j) in S output the k-th significant bit, C[i,j,k].

R

Output the sign (0 for - and 1 for +) of each of the
children of the root and put them in S. Push the RC
tree on the stack Z. Exception is when tree has no
grandchildren. In this case, the tree dies.

48


49

8
CuuDuongThanCong.com

/>

SPIHT Coding Example:
Initialization

Decomposition of RC
RC

Initial data structure:
0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7

Push each of the four trees
on the stack Z.

S = (0,0), (0,1), (1,0), (1,1)
Z = (R,0,1), (R,1,0), (R,1,1)

sign(0,0) = sign(0,1) = +
sign(1,0) = +
sign(1,1) = +
in S

Initial output:
0111

50

51

SPIHT Coding Example: Pass 1,
Significance Pass (1)

SPIHT Coding Example: Pass 1,
Significance Pass (2)

S = (0,0), (0,1), (1,0), (1,1)
0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7


0
1
2
3
4
5
6
7

Z = (R,0,1), (R,1,0), (R,1,1)
(R,0,1) is significant
output 1
S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3)
output 1101 for signs of these
became significant
in S

Z = (RC,0,1), (R,1,0), (R,1,1)
(RC,0,1) is not significant
output 0
S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3)
became significant
in S

Z = (RC,0,1), (R,1,0), (R,1,1)

S = (0,0), (0,1), (1,0), (1,1),

(0,2), (0,3), (1,2), (1,3)

Z = (R,1,0), (R,1,1)
Z’ = (RC,0,1)

52

53

SPIHT Coding Example: Pass 1,
Significance Pass (3)

0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7

SPIHT Coding Example: Pass 1,
Significance Pass (4)

S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3)
Z = (R,1,0), (R,1,1)
Z’ = (RC,0,1)


0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7

(R,1,0) is significant
output 1

became significant
in S

S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1)
output 1100 for signs of these
Z = (RC,1,0), (R,1,1)
Z’ = (RC,0,1)

S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1)
Z = (RC,1,0), (R,1,1)
Z’ = (RC,0,1)
(RC,1,0) is significant
output 1


became significant
in S

S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1)
Z = (R,2,0), (R,2,1), (R,3,0),
(R,3,1), (R,1,1)
Z’ = (RC,0,1)

54

55

9
CuuDuongThanCong.com

/>

SPIHT Coding Example: Pass 1,
Significance Pass (5)

0 1 2 3 4 5 6 7
0
1
2
3
4
5

6
7

became significant
in S

SPIHT Coding Example: Pass 1,
Significance Pass (6)

S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1)
Z = (R,2,0), (R,2,1), (R,3,0),
(R,3,1) (R,1,1)
Z’ = (RC,0,1)

0 1 2 3 4 5 6 7

(R,2,0) is not significant
output 0
S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1)
Z = (R,2,1), (R,3,0), (R,3,1), (R,1,1)
Z’ = (R,2,0),(RC,0,1)

0
1
2
3

4
5
6
7

became significant
in S

S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1)
Z = (R,2,1), (R,3,0), (R,3,1), (R,1,1)
Z’ = (R,2,0),(RC,0,1)
(R,2,1) is significant
output 1
S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1),
(4,2), (4,3), (5,2), (5,3)
output 1010 for signs of these
Z = (R,3,0), (R,3,1), (R,1,1)
Z’ = (R,2,0),(RC,0,1)

56

57

SPIHT Coding Example: Pass 1,
Significance Pass (7)


0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7

became significant
in S

SPIHT Coding Example: Pass 1,
Significance Pass (8)

S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1),
(4,2), (4,3), (5,2), (5,3)
Z = (R,3,0), (R,3,1), (R,1,1)
Z’ = (R,2,0),(RC,0,1)

0 1 2 3 4 5 6 7
0
1
2
3
4
5

6
7

(R,3,0) is insignificant
output 0
S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1),
(4,2), (4,3), (5,2), (5,3)
Z = (R,3,1), (R,1,1)
Z’ = (R,3,0), (R,2,0),(RC,0,1)

became significant
in S

S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1),
(4,2), (4,3), (5,2), (5,3)
Z = (R,3,1), (R,1,1)
Z’ = (R,3,0), (R,2,0),(RC,0,1)
(R,3,1) is insignificant
output 0
S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1),
(4,2), (4,3), (5,2), (5,3)
Z = (R,1,1)
Z’ = (R,3,1), (R,3,0), (R,2,0),(RC,0,1)


58

59

SPIHT Coding Example: Pass 1,
Significance Pass (9)

0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7

became significant
in S

SPIHT Coding Example: Pass 1,
Refinement Step

S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1),
(4,2), (4,3), (5,2), (5,3)
Z = (R,1,1)
Z’ = (R,3,1), (R,3,0), (R,2,0),(RC,0,1)
(R,1,1) is insignificant

output 0
S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1),
(4,2), (4,3), (5,2), (5,3)
Z=
Z’ = (R,1,1), (R,3,1), (R,3,0),
(R,2,0),(RC,0,1)

0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7

S = (0,0), (0,1), (1,0), (1,1),
(0,2), (0,3), (1,2), (1,3),
(2,0), (2,1), (3,0), (3,1),
(4,2), (4,3), (5,2), (5,3)
Z = (R,1,1), (R,3,1), (R,3,0),
(R,2,0),(RC,0,1)
output 1011000100000010
one bit for each member of S.

in S


37 total bits in pass 1 were output.
Initialization was 4 bits.
Total of 41 bits to send 64 bits plus
16 sign bits.

60

61

10
CuuDuongThanCong.com

/>

SPIHT Decoding

SPIHT Decoder

• The decoder emulates the encoder.
– The decoder maintains exactly the same data
structures as the encoder.
– When the decoder has popped the Z stack to
examine a zero tree it receives a bit telling it
whether the tree is significant. The decoder can
then do the right thing.
• If it is significant then it does the decomposition.
• If it is not significant then it deduces a number of
zeros in the current bit plane.

k-th iteration

We have list S of significant values and a stack Z of
zero trees from the previous pass or the initialization.
Significance Pass.
while Z is not empty do
T := pop(Z);
input := read;
if input = 1 then decompose(T);
else push T on Z’
Z := Z’; {At this point all indices in zero trees in Z are insignificant}
Refinement Pass.
for each (i,j) in S do C[i,j,k] := read.
In decompose the signs of coefficients are input

62

Notes on SPIHT

63

SPIHT-AC

• SPIHT was very influential
– People really came to believe that wavelet
compression can really be practical (fast and
effective).

• To yield the best compression an arithmetic
coding step is added to SPIHT
– The improvement is about .5 DB


• Paved the way for EBCOT which became the
basis of JPEG2000.
64

65

11
CuuDuongThanCong.com

/>


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×