53
Spring 2020 Venu: Haag 313 ECE 5578 Multimedia Communication Lec 03 - Entropy & Lossless Coding II Zhu Li Dept of CSEE, UMKC Office: FH560E, Email: [email protected], Ph: x 2346. http://l.web.umkc.edu/lizhu Z. Li, ECE 5588 Multimedia Communication, 2020 p.1 slides created with WPS Office Linux and EqualX equation editor

RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Spring 2020 Venu: Haag 313

ECE 5578 Multimedia Communication Lec 03 - Entropy & Lossless Coding II

Zhu Li

Dept of CSEE, UMKC

Office: FH560E, Email: [email protected], Ph: x 2346.

http://l.web.umkc.edu/lizhu

Z. Li, ECE 5588 Multimedia Communication, 2020 p.1

slides created with WPS Office Linux and EqualX equation editor

Page 2: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Outline

Lecture 02 ReCap Info Theory - Entropy Huffman Coding Golomb Coding - Residual signal coding

JPEG Image Coding Framework VLC in H264 Introduction to Arithmetic Coding

Z. Li, ECE 5588 Multimedia Communication, 2020 p.2

Page 3: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Entropy Self Info of an event

��� = ��� =−log �Pr �� = ���� =− log����� Entropy of a source

���� = ����log��1���

Conditional Entropy, Mutual Information�������� = ����,��� −���������,��� = ����� +����� −  ����,���

Z. Li, ECE 5588 Multimedia Communication, 2020 p.3

H(X) H(Y)

I(X; Y)H(X | Y) H(Y | X)

Total area: H(X, Y)

a b c b c a bc b a b c b a

Main application: Context Modeling

Relative Entropy

������� =���� log �

���� �

Page 4: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

A bit of history

Shanon Info Theory

Kolmogorov Complexity Theory the KC of a string, is the program length of printing the string:

Z. Li, ECE 5588 Multimedia Communication, 2020 p.4

Let K(x) denote the Kolmogorov complexity of string x.To compute K(x), we must execute every program, select those that halt and compute x, and select the one with the smallest size.e.g. 1111111111, a simple string, 1010101010, also simple, how about 110001101010000111 ?

Page 5: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Context Reduces Entropy Example

Z. Li, ECE 5588 Multimedia Communication, 2020 p.5

x1 x2 x3

x4 x5

H(x5) > H(x5|x4,x3, x2,x1)

H(x5) > H(x5|f(x4,x3, x2,x1))

Condition reduces entropy:

Context function:f(x4,x3, x2,x1)= sum(x4,x3, x2,x1)

getEntropy.m, lossless_coding.m

H(x5 | f(x4,x3, x2,x1)==100)

H(x5 | f(x4,x3, x2,x1)<100)

Context:

lenna.png

Page 6: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Hoffmann Coding Hoffman Coding: iterative sort and merge to create a binary tree, assigning the

bit value along the way, reverse for codeExample

Source alphabet A = {a1, a2, a3, a4, a5}, Probability distribution: {0.2, 0.4, 0.2, 0.1, 0.1}

a2 (0.4)

a1(0.2)

a3(0.2)

a4(0.1)

a5(0.1)

Sort

0.2

merge Sort

0.4

0.2

0.2

0.2

0.4

merge Sort

0.4

0.2

0.40.6

merge

0.6

0.4

Sort

1

merge

Assign code

0

1

1

00

01

1

000

001

01

1

000

01

0010

0011

1

000

01

0010

0011

Z. Li, ECE 5588 Multimedia Communication, 2020 p.6

Page 7: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Canonical Huffman

Properties: The first code is a series of 0 Codes of same length

are consecutive: 100, 101, 110 If we pad zeros to the right side such that all

codewords have the same length, shorter codes would have lower value than longer codes:0000 < 0100 < 1000 < 1010 < 1100 < 1110 < 1111

00 01110100 101

1110 1111

If from length n to n + 2 directly: e.g., 1, 3, 3, 3, 4, 4

C(n+2, 1) = 4( C(n, last) + 1)

0

110100 101

1110 1111

First code of length n+1

Last code of length n

Coding from length level n to level n+1: C(n+1, 1) = 2 ( C(n, last) + 1): append a 0 to the next available level-n code

Z. Li, ECE 5588 Multimedia Communication, 2020 p.7

Page 8: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Pixel Prediction - Geometric DistributionExample 2: GD is a also good model for Prediction error

e(n) = x(n) – pred(x(1), …, x(n-1)).Most e(n)’s have smaller values around 0: can be modeled by geometric distribution.

n

p(n)

.10 ,11)( || <<+-

= rrrr nnp

Z. Li, ECE 5588 Multimedia Communication, 2020 p.8

x1 x2 x3

x4 x5

0.2 0.3 0.2

0.2 0 0

0 0 0

Page 9: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Golomb Code

rmmnrqmn +úûú

êëê=+=

q: Quotient, used unary code

q Codeword0 01 102 1103 11104 111105 1111106 1111110… …

r: remainder, “fixed-length” code

K bits if m = 2^k m=8: 000, 001, ……, 111

If m ≠ 2^k: (not desired) bits for smaller r bits for larger r

ë ûm2logé ùm2logm = 5: 00, 01, 10, 110, 111

Z. Li, ECE 5588 Multimedia Communication, 2020 p.9

Page 10: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Golomb is Optimal for Geometric Distribution

Geometric distribution with parameter ρ: P(X=n) = ρn (1 - ρ)

Unary code is optimal prefix code when ρ ≤ 1/2. Also optimal among all entropy coding for ρ = 1/2.

How to design the optimal code when ρ > 1/2 ?

x

P(x)

1 1

0 0

1( ) ( ) (1 ) (1 ) (1 )1q

mm mqm r qm mq m

X Xr r

P q P qm r rr r r r r rr

- -+

= =

-= + = - = - = -

-å å xq has geometric dist with parameter ρm.Unary code is optimal for xq if ρm ≤ 1/2

r2log1

-³m integer. possible minimal theis log

1

2úú

ùêê

é-=

rm

rq xmxx +=

Transform into GD with ρ ≤ 1/2 (as close as possible)How? By grouping m events together!

Each x can be written as

x

P(x)

Z. Li, ECE 5588 Multimedia Communication, 2020 p.10

Page 11: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

HW-1

Compute Entropy, Conditional Entropy and Relative Entropy

Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb coding

Z. Li, ECE 5588 Multimedia Communication, 2020 p.11

Page 12: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Outline

Lecture 02 ReCap Info Theory - Entropy Huffman Coding Golomb Coding - Residual signal coding

JPEG Image Coding Framework VLC in H264 Introduction to Arithmetic Coding

Z. Li, ECE 5588 Multimedia Communication, 2020 p.12

Page 13: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Overall Structure of JPEG

Color converter: RGB to YUVLevel offset: subtract 2^(N-1). N: bits / pixel.Quantization: Different step size for different coeffsDC: Predict from DC of previous blockAC: Zigzag scan to get 1-D data Run-level: joint coding of non-zero coefficients and number of

zeros before it.

ColorConverter

LevelOffset

8x8DCT

UniformQuant.

DCPred.

DCVLC

ZigzagScan

Run-Level

ACVLC

DC

AC

Z. Li, ECE 5588 Multimedia Communication, 2020 p.13

Page 14: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

JPEG DCT and Quantization Examples

DCT – Discrete Cosine Transform (Ref: ECE 484 Lec 6 and 7)

o Matlab: coef = dct2(im);

Quantization in JPEG

Z. Li, ECE 5588 Multimedia Communication, 2020 p.14

Quant Tabel DCT Basis

QP*

QP=2

QP=8QP=6

QP=4

Page 15: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

2-D 8-point DCT Example

89 78 76 75 70 82 81 82122 95 86 80 80 76 74 81184 153 126 106 85 76 71 75221 205 180 146 97 71 68 67225 222 217 194 144 95 78 82228 225 227 220 193 146 110 108223 224 225 224 220 197 156 120217 219 219 224 230 220 197 151

Original Data:

2-D DCT Coefficients (after rounding to integers):1155 259 -23 6 11 7 3 0-377 -50 85 -10 10 4 7 -3 -4 -158 -24 42 -15 1 0 1 -2 3 -34 -19 9 -5 4 -1 1 9 6 -15 -10 6 -5 -1 3 13 3 6 -9 2 0 -3 8 -2 4 -1 3 -1 0 -2 2 0 -3 2 -2 0 0 -1Most energy is in the upper-

left corner

Z. Li, ECE 5588 Multimedia Communication, 2020 p.15

Page 16: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of AC CoefficientsMost non-zero coefficients are in the upper-left cornerZigzag scanning:

Example: after quantization

8 24 -2 0 0 0 0 0 -31 -4 6 -1 0 0 0 0 0 -12 -1 2 0 0 0 0 0 0 -2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Zigzag scanning result (DC is coded separately):24 -31 0 -4 -2 0 6 -12 0 0 0 -1 -1 0 0 0 2 -2 0 0 0 0 0 -1 EOB

EOB: End of block symbol. The remaining coeffs are all 0.

Z. Li, ECE 5588 Multimedia Communication, 2020 p.16

Page 17: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coefficient Category – ExpGolomb Like

Divide DCT coefficients into categories of exponentially increased sizes Use Hoffman code to encode category ID (unary in Golomb) Use fixed length code within each category/group Similar to Exponential Golomb code

Ranges Range Size DC Cat. ID AC Cat. ID0 1 0 N/A

-1, 1 2 1 1-3, -2, 2, 3 4 2 2

-7, -6, -5, -4, 4, 5, 6, 7 8 3 3-15, …, -8, 8, …, 15 16 4 4

-31, …, -16, 16, …, 31 32 5 5-63, …, -32, 32, …, 63 64 6 6

… … … …[-32767, -16384], [16384, 32767] 32768 15 15

Z. Li, ECE 5588 Multimedia Communication, 2020 p.17

Page 18: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of DC Coefficients

Prediction coding: e(n) = DC(n) – DC(n-1)

8x8 8x8 8x8

DC Cat. Prediction Errors Base Codeword0 0 0101 -1, 1 011 2 -3, -2, 2, 3 100 3 -7, -6, -5, -4, 4, 5, 6, 7 00 4 -15, …, -8, 8, …, 15 101 5 -31, …, -16, 16, …, 31 110 6 -63, …, -32, 32, …, 63 1110 … … …

Our example: DC: 8. Assume last DC: 5 e = 8 – 5 = 3. Cat.: 2, index 3 Bitstream: 10011

Codeword010011 x 100 x x00 x x x101 x x x x110 x x x x x1110 x x x x x x…

Z. Li, ECE 5588 Multimedia Communication, 2020 p.18

Page 19: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of AC CoefficientsMany AC coefficients are zeros:

Huffman coding is not efficient for symbol with prob. > 1/2

Example: zigzag scanning result24 -31 0 -4 -2 0 6 -12 0 0 0 -1 -1 0 0 0 2 -2 0 0 0 0 0 -1 EOB

(Run, level) representation: (0, 24), (0, -31), (1, -4), (0, -2), (1, 6), (0, -12), (3, -1), (0, -1),

(3, 2), (0, -2), (5, -1), EOB

Run-level coding: Jointly encode a non-zero coefficient and the number of zeros before it (run of zeros): (run, level) event

Disadvantage: Symbol set is enlarged: #Run x #Level Tradeoff: Run: encode up to 15 zeros. Apply escape coding for greater values. Level: Divide level into 16 categories, as in DC. Apply Huffman coding to the joint Run / Category event: Max symbol set size: 16 x 16 = 256.

Followed by fixed length code to signal the level index within each category

Z. Li, ECE 5588 Multimedia Communication, 2020 p.19

Page 20: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of JPEG AC Coefficients

Run / Catg.

Base codeword

Run / Catg.

BaseCodeword

… Run / Cat.

Base codeword

EOB 1010 - - … ZRL 1111 1111 0010/1 00 1/1 1100 … 15/1 1111 1111 1111 01010/2 01 1/2 11011 … 15/2 1111 1111 1111 01100/3 100 1/3 1111001 … 15/3 1111 1111 1111 01110/4 1011 1/4 111110110 … 15/4 1111 1111 1111 10000/5 11010 1/5 11111110110 … 15/5 1111 1111 1111 1001… … … … … … …

(Run, Level) sequence: (0, 24), (0, -31), (1, -4), …… Run/Cat. Sequence: 0/5, 0/5, 1/3, …according to table in pp14.24 is the 24-th entry in Category 5 (0, 24): 11010 11000 -4 is the 3-th entry in Category 3 (1, -4): 1111001 011

ZRL: represent 16 zeros when number of zeros exceeds 15. Example: 20 zeros followed by -1: (ZRL), (4, -1).

Z. Li, ECE 5588 Multimedia Communication, 2020 p.20

Page 21: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

A complete Example (Sayood pp. 392)

124 125 122 120 122 119 117 118 121 121 120 119 119 120 120 118 126 124 123 122 121 121 120 120 124 124 125 125 126 125 124 124 127 127 128 129 130 128 127 125 143 142 143 142 140 139 139 139 150 148 152 152 152 152 150 151 156 159 158 155 158 158 157 156

39.8 6.5 -2.2 1.2 -0.3 -1.0 0.7 1.1 -102.4 4.5 2.2 1.1 0.3 -0.6 -1.0 -0.4 37.7 1.3 1.7 0.2 -1.5 -2.2 -0.1 0.2 -5.6 2.2 -1.3 -0.8 1.4 0.2 -0.1 0.1 -3.3 -0.7 -1.7 0.7 -0.6 -2.6 -1.3 0.7 5.9 -0.1 -0.4 -0.7 1.9 -0.2 1.4 0.0 3.9 5.5 2.3 -0.5 -0.1 -0.8 -0.5 -0.1 -3.4 0.5 -1.0 0.8 0.9 0.0 0.3 0.0

2 1 0 0 0 0 0 0 -9 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Original data: 2-D DCT

Quantized by basic table: Zigzag scanning:

2 1 -9 3 EOB

Z. Li, ECE 5588 Multimedia Communication, 2020 p.21

Page 22: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Zigzag scanning:2 1 -9 3 EOB

DC: 2 (assume last DC = -1)e = 3: Category 2, base code 100, index 11 10011

(Run, Level) sequence of AC:(0, 1), (0, -9), (0, 3), EOB

Run/Cat. sequence:0/1, 0/4, 0/2, EOB

All bit stream (24 bits):10011 001 10110110 0111 1010

A complete Example (Sayood pp. 392)

Z. Li, ECE 5588 Multimedia Communication, 2020 p.22

124 125 122 120 122 119 117 118 121 121 120 119 119 120 120 118 126 124 123 122 121 121 120 120 124 124 125 125 126 125 124 124 127 127 128 129 130 128 127 125 143 142 143 142 140 139 139 139 150 148 152 152 152 152 150 151 156 159 158 155 158 158 157 156

Raw: 8x8x8 = 512 bits !

Page 23: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Outline

Lecture 02 ReCap Info Theory - Entropy Huffman Coding Golomb Coding - Residual signal coding

JPEG Image Coding Framework VLC in H264 Introduction to Arithmetic Coding

Z. Li, ECE 5588 Multimedia Communication, 2020 p.23

Page 24: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

H264 Context-Adaptive VLC (CAVLC)Entropy coding methods in H.264: CAVLC, CABAC(arithmetic)

Differences of H.264 from JPEG: Use 4-point DCT instead of 8-point DCT CAVLC codes levels and runs separately:

o VLC table size reduced. o Important contribution: also used in CABAC and HEVC

Switch VLC tables according to context information DC: Several cases. Code together with AC in this lecture.

HEVC: CAVLC not supported, Arithmetic coding instead.

Observations: Trailing ones (T1): The last few non-zero coefficients are usually 1 or -1 Many blocks only have 1 or -1 after quantization. Larger absolute values near DC and smaller values towards high freq.Encode non-zero coefficients in reverse order facilitates adaptivity.Another important contribution, also adopted by CABAC and HEVC.

0 3 -1 0 0 -1 1 0 1 0 0 0 0 0 0 0

Example: After zigzag scan: 0 3 0 1 -1 -1 0 1 0 … 0

Z. Li, ECE 5588 Multimedia Communication, 2020 p.24

Page 25: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Main Steps

Five Steps: CoeffToken SignTrail Levels TotalZeros Runs 1. CoeffToken: Jointly encode the total number of non-zero coeffs (TC) and the

number of trailing ones (T1s) (up to three): (TC, T1s) = (5, 3)

2. Encode the signs of trailing ones in reverse order, if any (0 for positive, 1 for negative) 0, 1, 1

3. Encode the remaining non-zero coeffs in reverse order: 1, 3

4. Encode total zeros from the beginning to the last non-zero coeff: 3 : 0 3 0 1 -1 -1 0 1 0 … 0

5. Encode the number of zeros before each non-zero coeff in reverse order, except before the first non-zero coeff: 1, 0, 0, 1: 0 3 0 1 . -1 . -1 0 1 0 … 0

Adaptive VLC table switching is used in most steps.

0 3 -1 0 0 -1 1 0 1 0 0 0 0 0 0 0 After zigzag scan: 0 3 0 1 -1 -1 0 1 0 … 0

Z. Li, ECE 5588 Multimedia Communication, 2020 p.25

Page 26: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Step 1: CoeffToken: Number of non-zero coeffs and trailing ones

Huffman coding for the joint event (TC, T1s) TC: 0 to 16. T1s: 0 to 3.(up to 3) Table size: 17 x 4.

TC\T1s 0 1 2 30 1 - - -

1 000011 01 - -2 00000111 0001001 001 -3 000001001 00000110 0001000 00011 4 000001000 000001011 000000101 000010

5 0000000111 000001010 000000100 0001011

… … … … …

16 00000000000000000

000000000000001001

0000000000000010001

0000000000000010000

If TC = 0, no further info is coded for this block.

CoeffToken VLC 0

Z. Li, ECE 5588 Multimedia Communication, 2020 p.26

Page 27: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Adaptive coding of NumTrailSelect from three Huffman tables and a VLC for CoeffToken: Depending on the average TC of the top and left blocks: N = (N1 +

N2) / 2. Reason: TC of neighboring blocks have strong correlation. 0 ≤ N < 2: Use VLC Table 0 (favors small TC) 2 ≤ N < 4: Use VLC Table 1 (favors middle TC) 5 ≤ N < 8: Use VLC Table 2 (favors large TC) N ≥ 8: Use fixed-length code xxxxyy

o xxxx: TCo yy: T1s.

N1

N2

Prediction:N = (N1 + N2) / 2

Z. Li, ECE 5588 Multimedia Communication, 2020 p.27

Page 28: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

More NumTrail Huffman Tables

TC=5, T1=3, This one favors larger TCs

T1sTC

0 1 2 3

0 0011 - - -1 0000011 0010 - -2 0000010 101110 1101 -3 000011 101001 010110 1100 4 000010 101000 010001 1111 5 101101 101011 010000 1110

… … … … …15 0000000010 00000000011 00000000010 00000000001 16 0000000000001 000000000001 00000000000001 00000000000000

CoeffToken VLC 2: for 5 ≤ N < 8

Z. Li, ECE 5588 Multimedia Communication, 2020 p.28

Page 29: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Step 2, 3: Coding of Level Information

Send signs of trailing ones first (up to three T1s), 0 for positive, 1 for negative: 0, 1, 1

Encode the remaining levels in reverse order: Observations: Absolute values of non-zero coeffs are generally lower at

high frequencies, and become higher near DC. If coded forwardly, it’s difficult to predict the first few big coeffs, and to

decide the best VLC table. Reverse coding:

o Recently-coded level is used to decide which Huffman table to use for the next level:

• Start from VLC 0.• Switch to the next VLC if previous level is greater than a threshold.• Use Golomb-Rice(N) code with larger N after each switching:

• Larger levels are coded more efficiently.

After zigzag scan: 0 3 0 1 -1 -1 0 1 0 … 0

Z. Li, ECE 5588 Multimedia Communication, 2020 p.29

Page 30: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of Level Information- Adaptive VLC tablesLevel VLC 0 Level VLC 1

(Unary code) (Golomb-Rice(2) Code)

Level Code 1 1-1 01 2 001-2 0001 3 00001-3 000001.. ..-7 00000000000001 8 to 15 000000000000001xxxx 16 -> 000000000000001xxxxxxx

xxxxx

Level Code 1 10-1 11 2 010-2 011 3 0010-3 0011.. ..14 000000000000010-14 000000000000011 15 to 22

000000000000001xxxx

23 -> 000000000000001xxxxxxxxxxxx

Z. Li, ECE 5588 Multimedia Communication, 2020 p.30

Page 31: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of Level InformationLevel VLC 2 (Golomb-Rice(4) Code)

Level Code 1 100-1 101 2 110-2 111 3 0100-3 0101 4 0110-4 0111 5 00100.. .. 37 -> 000000000000001xxxxxxxxxxxx

Z. Li, ECE 5588 Multimedia Communication, 2020 p.31

Page 32: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of Level Information

A special case: If number of trailing ones is less than 3, the next non-zero coeff must

be > 1 or < -1. Shift the next level to reduce the codeword length:

o If the next level > 0: it is coded as Level – 1.o If the next level < 0: it is coded as Level + 1.

Example: -2 4 3 -3 0 0 -1 0 … 0 T1 = 1. -3 will be coded as -2

o -3 in VLC_0: 000001o -2 in VLC_0: 0001o 2 bits are saved

Z. Li, ECE 5588 Multimedia Communication, 2020 p.32

Page 33: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Step 4: Coding of Total Zeros

Maximal total zeros is 16 – TC: 0 0 … 0 X X X

Two trivial cases: If TC = 16, TotalZeros must be 0. If TC = 0, no further info is needed.

15 non-trivial cases: for TC = 1 to 15.Each has a Huffman table for TotalZeros: Huffman table size: (16 – TC) + 1.

After zigzag scan: 0 3 0 1 -1 -1 0 1 0 … 0

Zeros non zeros

Z. Li, ECE 5588 Multimedia Communication, 2020 p.33

Page 34: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of Total Zeros

TCTotalZeros

1 2 3 4 5 6 70 1 111 0010 111101 01000 101100 1110001 011 101 1101 1110 01010 101101 1110012 010 011 000 0110 01011 1010 111013 0011 001 010 1010 1110 001 10014 0010 000 1011 000 011 010 11115 00011 1000 1111 100 100 000 006 00010 0101 011 110 1111 110 017 000011 1001 100 1011 110 111 1018 000010 1100 0011 010 101 100 1109 0000011 01000 1110 001 001 011 10010 0000010 11011 1010 0111 000 10111 -11 00000001 11010 11000 1111 01001 - -12 00000000 010010 110011 111100 - - -13 00000011 0100111 110010 - - - -14 000000101 0100110 - - - - -15 000000100 - - - - - -

Different Huffman tables

Z. Li, ECE 5588 Multimedia Communication, 2020 p.34

Page 35: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of Total Zeros

TCTotalZeros

8 9 10 11 12 13 14 15

0 101000 111000 10000 11000 1000 100 00 01 101001 111001 10001 11001 1001 101 01 12 10101 11101 1001 1101 101 11 1 -3 1011 1111 101 111 0 0 - -4 110 00 01 0 11 - - -5 00 01 11 10 - - -6 111 10 00 - - - - -7 01 110 - - - - - -8 100 - - - - - - -9 - - - - - - - -10 - - - - - - - -11 - - - - - - - -12 - - - - - - - -13 - - - - - - - -14 - - - - - - - -15 - - - - - - - -

Z. Li, ECE 5588 Multimedia Communication, 2020 p.35

Page 36: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Step 5: Coding of Runs Signal the positions of zeros:

A typical example: 3 -2 1 0 1 0 0 0 -1 0 … 0

JPEG (run, level) approach (excluding DC):(0, -2), (0, 1), (1, 1), (3, -1)Many runs are 0 at the beginning of the sequence.

Observation: Most of the run of zeros are near the end of the sequence.

CAVLC: Send runs before each non-zero coeff in reverse order.

What we have known so far: TC – total non zero coefficients All levels: e.g, {3 -2 } Total Zeros

To reconstruct the sequence, only need to know the positions of all zeros before the last non-zero coefficient.

Z. Li, ECE 5588 Multimedia Communication, 2020 p.36

Page 37: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of zero Runs (position)

Sequence: 3 -2 1 0 1 0 0 0 -1 0 … 0

TotalZeros: 4 ZerosLeft (ZL): Number of zeros that have not been coded. Step 1: ZerosLeft = TotalZeros = 4, RunsBefore = 3.

Possible zeros before the non-zero coefficient: 0, 1, 2, 3, 4Need a Huffman table with 5 symbols, for example: 01, 00, 11, 101, 100.Code 101 (3 | 4).Update ZerosLeft: ZerosLeft = 4 – 3 = 1.

Step 2: ZerosLeft = 1, RunsBefore = 1.Possible zeros before the non-zero coefficient: 0, 1.Need a Huffman table with 2 symbols: 1, 0Code 0 (1 | 1).Update ZerosLeft: ZerosLeft = 1 – 1 = 0. Stop if ZerosLeft = 0 (The positions of all zeros have been coded).

Z. Li, ECE 5588 Multimedia Communication, 2020 p.37

Page 38: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Coding of Runs

Special case: Runs before the first non-zero coeff does not need to be coded:

Example: 0 0 2 0 0 0 -1 0 … 0 TotalZeros = 5, TC = 2 Step 1: ZerosLeft = TotalZeros = 5, RunsBefore = 3

o Coding (3 | 5)o ZerosLeft = 5 – 3 = 2.o But there is only one non-zero coeff left:

There must be 2 zeros before the next non-zero coeff.

Z. Li, ECE 5588 Multimedia Communication, 2020 p.38

Page 39: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Z. Li, ECE 5588 Multimedia Communication, 2020

VLC Table for Coding of Runs

Zeros LeftRun Before

1 2 3 4 5 6 >6

0 1 1 01 01 01 01 0001 0 01 00 00 00 00 0102 - 00 11 11 11 101 1013 - - 10 101 101 100 1004 - - - 100 1001 111 1115 - - - - 1000 1101 1106 - - - - - 1100 00117 - - - - - - 00108 - - - - - 000119 - - - - - - 0001010 - - - - - - 0000111 - - - - - - 000001112 - - - - - - 000001013 - - - - - - 000000114 - - - - - - 00000001

p.39

Page 40: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Outline

Lecture 02 ReCap Info Theory - Entropy Huffman Coding Golomb Coding - Residual signal coding

JPEG Image Coding Framework VLC in H264 Introduction to Arithmetic Coding

Z. Li, ECE 5588 Multimedia Communication, 2020 p.40

Page 41: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Arithmetic Coding – The SciFi Story

When I was in my 5th grade….

Z. Li, ECE 5588 Multimedia Communication, 2020 p.41

Aliens visit earth….

0.3825653302...

can we use this fraction number to represent all possible info ?

Page 42: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Huffman Coding

Replacing an input symbol with a codewordNeed a probability distributionHard to adapt to changing statisticsNeed to store the codeword tableMinimum codeword length is 1 bit

Replace the entire input with a single floating-point number

Does not need the probability distribution Adaptive coding is very easy No need to keep and send codeword table Fractional codeword length

Arithmetic Coding

Z. Li, ECE 5588 Multimedia Communication, 2020 p.42

Page 43: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Introduction

000 010 011 100

1

00

010 011

Recall table look-up decoding of Huffman code N: alphabet size L: Max code word length Divide [0, 2^L] into N intervals One interval for one symbol Interval size is roughly

proportional to symbol prob.

Arithmetic coding applies this idea recursively Normalizes the range [0, 2L] to [0, 1]. Map an input sequence (multiple symbols) to a unique tag in

[0, 1).

0 1

abcd…..

dcba…..Z. Li, ECE 5588 Multimedia Communication, 2020 p.43

Page 44: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Arithmetic Coding

Disjoint and complete partition of the range [0, 1) [0, 0.8), [0.8, 0.82), [0.82, 1)Each interval corresponds to one symbolInterval size is proportional to symbol probability

Observation: once the tag falls into an interval, it never gets out of it

0 1 The first symbol restricts the tag

position to be in one of the intervals The reduced interval is partitioned

recursively as more symbols are processed.

0 1

0 1

0 1

a b c

Z. Li, ECE 5588 Multimedia Communication, 2020 p.44

Symbol set and prob: a (0.8), b(0.02), c(0.18)

Page 45: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Some Questions to think about:

Why compression is achieved this way?How to implement it efficiently?How to decode the sequence?Why is it better than Huffman code?

Z. Li, ECE 5588 Multimedia Communication, 2020 p.45

Page 46: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Example:

Symbol Prob.

1 0.82 0.023 0.18

• Disjoint but complete partition: • 1: [0, 0.8): 0, 0.799999…9• 2: [0.8, 0.82): 0.8, 0.819999…9• 3: [0.82, 1): 0.82, 0.999999…9

1 2 3

0 0.8 0.82 1.0

Map to real line range [0, 1) Order does not matter Decoder needs to use the same order

Z. Li, ECE 5588 Multimedia Communication, 2020 p.46

Page 47: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Range 0.002881 2 3

0.7712 0.773504 0.7735616 0.77408

Range 0.1441 2 3

0.656 0.7712 0.77408 0.8

Concept of the encoding (not practical) Input sequence: “1321”

Range 1

Termination: Encode the lower end or midpoint to signal the end.

1 2 3

0 0.8 0.82 1.0

Range 0.81 2 3

0 0.64 0.656 0.8

Difficulties: 1. Shrinking of interval requires very high precision for long sequence. 2. No output is generated until the entire sequence has been processed.

Z. Li, ECE 5588 Multimedia Communication, 2020 p.47

Page 48: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Encoder Pseudo Code

ò¥-

=£=x

X dxxpxXPxF )()()(

X

CDF

1 2 3 4

0.20.4

0.81.0

Probability Mass Function

X1 2 3 4

0.2 0.2

0.4

0.2

Cumulative Density Function (CDF) For continuous distribution:

Properties: Non-decreasing Piece-wise constant Each segment is closed at the lower end.

å-¥=

==£=i

kX kXPiXPiF )()()(

For discrete distribution:

).1()()( --== iFiFiXP XX

Z. Li, ECE 5588 Multimedia Communication, 2020 p.48

Page 49: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

LOW=0.0, HIGH=1.0; while (not EOF) {

n = ReadSymbol();RANGE = HIGH - LOW;HIGH = LOW + RANGE * CDF(n);LOW = LOW + RANGE * CDF(n-1);

}output LOW;

Input HIGH LOW RANGE

Initial 1.0 0.0 1.0

1 0.0+1.0*0.8=0.8 0.0+1.0*0 = 0.0 0.8

3 0.0 + 0.8*1=0.8 0.0 + 0.8*0.82=0.656 0.144

2 0.656+0.144*0.82=0.77408 0.656+0.144*0.8=0.7712 0.00288

1 0.7712+0.00288*0=0.7712 0.7712+0.00288*0.8=0.773504 0.002304

Keep track of LOW, HIGH, RANGE Any two are

sufficient, e.g., LOW and RANGE.

Encoder Pseudo Code

Z. Li, ECE 5588 Multimedia Communication, 2020 p.49

Page 50: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Decode 11 2 3

0.7712 0.773504 0.7735616 0.77408

Decode 21 2 3

0.656 0.7712 0.77408 0.8

Concept of the Decoding Arithmetic Decoding (conceptual)

Decode 11 2 3

0 0.8 0.82 1.0

Decode 31 2 3

0 0.64 0.656 0.8

Suppose encoder encodes the lower end: 0.7712

Drawback: need to recalculate all thresholds each time.

ZoomIn by * CDF

* CDF

* CDF

Z. Li, ECE 5588 Multimedia Communication, 2020 p.50

Page 51: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

1 2 3

0 0.8 0.82 1.0

1 2 3

0 0.8 0.82 1.0

1 2 3

0 0.8 0.82 1.0

1 2 3

0 0.8 0.82 1.0

Receive 0.7712Decode 1

x =(0.7712-0) / 0.8= 0.964Decode 3

rangelowxx -

¬ Normalize RANGE to [0, 1) each time No need to recalculate the thresholds.

x =(0.964-0.82) / 0.18= 0.8Decode 2x =(0.8-0.8) / 0.02= 0Decode 1.Stop.

Simplified Decoding (Floating Pt Ops)

Z. Li, ECE 5588 Multimedia Communication, 2020 p.51

Page 52: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Decoder Pseudo CodeLow = 0; high = 1;x = GetEncodedNumber();While (x ≠ low) {

n = DecodeOneSymbol(x); output symbol n;x = (x - CDF(n-1)) / (CDF(n) - CDF(n-1));

};

But this method still needs high-precision floating point operations.It also needs to read all input at the beginning of the decoding.

000 010 011 100

1

00

010 011

Z. Li, ECE 5588 Multimedia Communication, 2020 p.52

Page 53: RVVOHVV & RGLQJ · Compute Entropy, Conditional Entropy and Relative Entropy Image pixel prediction from a neigborhood and Golomb coding prediction filtering optimize m for Golomb

Summary

VLC is the real world image coding solution Elements of Hoffman and Golomb coding schemes are

incorporated JPEG: introduced DC prediction , AC zigzag scan, run-level

VLC H264: introduced reverse order coding. A taste of AC principle, the actually solution will be covered

next.

Z. Li, ECE 5588 Multimedia Communication, 2020 p.53