Transform Coding Techniques Explained
Transform Coding Techniques Explained
Last Lecture
Transform reduces linear dependencies (correlation) between samples before scalar quantization
For correlated sources: Scalar quantization in transform domain is more efficient
encoder decoder
u0 q0 q0 u00
α0 β0
forward entropy entropy inverse
s u1 q1 b q1 u10 s0
transform α1 coding decoding β1 transform
.. ..
A . γ γ −1 . 0
A−1
uN−1 qN−1 qN−1 uN−1
αN−1 βN−1
Transform matrix has property: A−1 = AT (special case of unitary matrix: A−1 = (A∗ )T )
b0
b1
A = b2
A −1 T
b 0 b 1 b 2 · · · b N−1
= A =
..
.
b N−1
High-Rate Approximation
High-rate distortion rate function for transform coding with optimal bit allocation
Y N1 Y N1
D(R) = ε̃2 · σ̃ 2 · 2−2R with ε̃2 = ε2k , σ̃ 2 = σk2
k k
σ02
0 ··· 0
0 σ12 ··· 0
CUU = A · CSS · AT = CSS · b k = σk2 · b k
.. .. .. .. =⇒
.
. . .
2
0 0 ··· σN−1
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 5 / 50
Last Lecture
For N → ∞, gap to fundamental lower bound reduces to space-filling gain (1.53 dB)
On Optimality of KLT
KLT yields uncorrelated transform coefficients and maximizes energy compaction GEC
KLT is the optimal transform for stationary Gaussian sources
Other sources: Optimal transform is hard to find (iterative algorithm)
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 6 / 50
Signal-Independent Unitary Transforms
Signal-Independent Transforms
Choose transform that provides good performance for variety of signals
Not optimal, but often close to optimal for typical signal
Most often used design in practice
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 7 / 50
Signal-Independent Unitary Transforms / Walsh-Hadamard Transform
Walsh-Hadamard Transform
Very simple orthogonal transform (only additions, subtractions, and final scaling)
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 8 / 50
Signal-Independent Unitary Transforms / Walsh-Hadamard Transform
b0 b4
b1 b5
b2 b6
b3 b7
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 9 / 50
Signal-Independent Unitary Transforms / Fourier Transform
n o Z ∞
Convolution: F h(t) ∗ g (t) = F g (τ ) h(t − τ ) dτ = H(f ) · G (f )
−∞
n o
Multiplication: F h(t) · g (t) = H(f ) ∗ G (f )
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 11 / 50
Signal-Independent Unitary Transforms / Fourier Transform
Important Properties Z ∞
Sifting: h(t) δ(t − t0 ) dt = h(t0 )
−∞
Z ∞
Convolution: h(t) ∗ δ(t − t0 ) = h(τ ) δ(t − t0 − τ ) dτ = h(t − t0 )
−∞
∞ ∞
!
Z ∞ X X
Sampling: h(t) δ(t − k · t0 ) dt = h(k · t0 )
−∞ k=−∞ k=−∞
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 12 / 50
Signal-Independent Unitary Transforms / Fourier Transform
t f
x(t) = δ(t − T ) X (f ) = e −2πifT = cos(2πfT ) + i sin(2πfT )
∞ t ∞ f
X X
шT (t) = δ(t − kT ) ШT (f ) = δ(f − k/T )
k=−∞ k=−∞
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 13 / 50
Signal-Independent Unitary Transforms / Fourier Transform
T
2
T
t f
1 : |t| ≤ T /2
1
rectT (t) = F rectT (f ) = sin(πfT ) = T sinc(fT )
0 : |t| > T /2 πf
t f
−π·t 2 1 2
g (t) = e with σt2 = G (f ) = e −π·f = g (f )
2π
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 14 / 50
Signal-Independent Unitary Transforms / Discrete Fourier Transform
t f
× (multiplication) ∗ (convolution)
t f
= =
sampled signal s(t) ш0 (t) Fourier transform S(f )∗Ш0 (f )
t f
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 15 / 50
Signal-Independent Unitary Transforms / Discrete Fourier Transform
t f
× (multiplication) ∗ (convolution)
t f
= =
finite sampled signal s(t) ш0 (t) r (t) Fourier transform S(f )∗Ш0 (f )∗R(f )
t f
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 16 / 50
Signal-Independent Unitary Transforms / Discrete Fourier Transform
t f
∗ (convolution) × (multiplication)
t f
= =
periodic sampled signal s(t) ш0 (t) r (t) ∗ ш1 (t)
Fourier transform [S(f )∗Ш0 (f )∗R(f )] Ш1 (f )
t f
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 17 / 50
Signal-Independent Unitary Transforms / Discrete Fourier Transform
t f
=(b0) = 0 =(b4) = 0
r0 i0 r4 i4
b5 = b3∗
r1 i1 r5 i5
b6 = b2∗
r2 i2 r6 i6
b7 = b1∗
r3 i3 r7 i7
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 19 / 50
Signal-Independent Unitary Transforms / Discrete Fourier Transform
r2 i2
N real samples are mapped to
N real coefficients
r3 i3 Fast algorithm:
Fast Fourier transform (FFT)
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 20 / 50
Signal-Independent Unitary Transforms / Discrete Fourier Transform
t f
N samples N coefficients
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 21 / 50
Signal-Independent Unitary Transforms / Discrete Trigonometric Transforms
DFT:
DCT: DFT
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 24 / 50
Signal-Independent Unitary Transforms / Discrete Trigonometric Transforms
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 25 / 50
Signal-Independent Unitary Transforms / Discrete Cosine Transform of Type II
DFT
(2N)−1
1 2πkn s + only known at half-sample
s + [n] · e −i (2N)
X
DFT of size 2N : u + [k] = p
(2N) n=0 positions → use m = n − 1/2
2N−1
1 X + 1 1
· e −i N (m+ 2 )
πk
= √ s m+
2N m=0 2
N−1 2N−1
!
1 X
−i πk 1
N (n+ 2 )
X 1
N (m+ 2 )
−i πk
= √ s[n] · e + s[2N − m − 1] · e
2N n=0 m=N
yn=2N−m−1
N−1 N−1
!
1 X
−i πk ( n+ 12 )+
X
−i πk 2N−n− 21
( )
= √ s[n] · e N s[n] · e N
2N n=0 n=0
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 27 / 50
Signal-Independent Unitary Transforms / Discrete Cosine Transform of Type II
Continue derivation
N−1 N−1
!
+ 1 X
−i πk 1
N (n+ 2 )
X
−i πk 1
N (2N−n− 2 )
u [k] = √ s[n] · e + s[n] · e
2N n=0 n=0
N−1 N−1
!
1 X
−i πk 1
N (n+ 2 )
X
−i2πk i πk 1
N (n+ 2 )
= √ s[n] · e + s[n] · |e {z } · e
2N n=0 n=0 1
N−1
1 X πk 1 1
s[n] · e −i N (n+ 2 ) + e i N (n+ 2 )
πk
= √
2N n=0 | {z }
1
2 cos( πk
N (n+ 2 ))
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 28 / 50
Signal-Independent Unitary Transforms / Discrete Cosine Transform of Type II
DFT of extended signal (2N real samples) has 2N real transform coefficients
r N−1
+ 2 X π 1
k = 0, . . . , 2N − 1 : u [k] = · s[n] · cos k n+
N n=0 N 2
2 Basis functions of derived transform are orthogonal to each other, but don’t have the same norm
Introduce factors αk so that transform matrix becomes orthogonal
N−1
X π 1
k = 0, . . . , N − 1 : u[k] = αk · s[n] · cos k n+
n=0
N 2
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 29 / 50
Signal-Independent Unitary Transforms / Discrete Cosine Transform of Type II
N−1 N−1
X π 1 X π 1
u[k] = αk s[n] · cos k n+ and s[n] = αk · u[k] · cos k n+
n=0
N 2 N 2
k=0
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 30 / 50
Signal-Independent Unitary Transforms / Discrete Cosine Transform of Type II
r0 r4 b0 b1
r1 i1 b2 b3
r2 i2 b4 b5
r3 i3 b6 b7
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 31 / 50
Signal-Independent Unitary Transforms / Discrete Cosine Transform of Type II
Separable Transforms
Successive 1D transforms of rows and columns of image block
Separable forward and inverse transforms
u = A · s · BT and s = AT · u · B
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 33 / 50
Signal-Independent Unitary Transforms / Discrete Cosine Transform of Type II
horizontal vertical
DCT DCT
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 34 / 50
Signal-Independent Unitary Transforms / Discrete Cosine Transform of Type II
Scalar Quantization
Uniform reconstruction quantizers (or very similar designs)
Bit allocation by using same quantization step size for all coefficients
Usage of advanced quantization algorithms in encoder
May use quantization weighting matrices for perceptual optimization
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 38 / 50
Transform Coding in Practice / Color Transformation
most common
format in
image coding
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 39 / 50
Transform Coding in Practice / Image Compression Example: JPEG
Y Cb Cr
sequence
of bits
reconstructed 2D inverse decoder entropy
block transform mapping decoding
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 40 / 50
Transform Coding in Practice / Image Compression Example: JPEG
horizontal vertical
DCT DCT
horizontal vertical
IDCT IDCT
JPEG: Quantization
u−4 u−3 u−2 u−1 u0 u1 u2 u3 u4 u5
0 0 0 0 0
s−5 s−4 s−3 s−2 s−1 s00 s10 s20 s30 s40 s50
∆ ∆
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 43 / 50
Transform Coding in Practice / Image Compression Example: JPEG
Original
Lossy Compressed:
Image (960×720
JPEG image
(Quality
points,
94)RGB: 2 MByte)
66)
27)
6) 18.60
3.88 %
1.85
0.49 %
25.8
54.0
204
5.4 : 1
100 %
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 45 / 50
Transform Coding in Practice / Image Compression Example: JPEG
Original
Lossy Compressed:
Image (960×720
JPEG image
(Quality
points,
94)RGB: 2 MByte)
66)
27)
6) 18.60
3.88 %
1.85
0.49 %
25.8
54.0
204
5.4 : 1
100 %
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 45 / 50
Transform Coding in Practice / Image Compression Example: JPEG
Original
Lossy Compressed:
Image (960×720
JPEG image
(Quality
points,
94)RGB: 2 MByte)
66)
27)
6) 18.60
3.88 %
1.85
0.49 %
25.8
54.0
204
5.4 : 1
100 %
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 45 / 50
Transform Coding in Practice / Image Compression Example: JPEG
Original
Lossy Compressed:
Image (960×720
JPEG image
(Quality
points,
94)RGB: 2 MByte)
66)
27)
6) 18.60
3.88 %
1.85
0.49 %
25.8
54.0
204
5.4 : 1
100 %
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 45 / 50
Transform Coding in Practice / Image Compression Example: JPEG
Original
Lossy Compressed:
Image (960×720
JPEG image
(Quality
points,
94)RGB: 2 MByte)
66)
27)
6) 18.60
3.88 %
1.85
0.49 %
25.8
54.0
204
5.4 : 1
100 %
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 45 / 50
Transform Coding in Practice / Audio Compression Example: AAC
Linear Transform
Audio signal is coded based on overlapping blocks of samples
Transform: Modified discrete cosine transform (MDCT)
Perfect Reconstruction
Neighboring blocks of samples s[n] overlap by 50% (at each side)
Perfect reconstruction of s[n] is achieved by adding the inverse transformed blocks x[n]
Property of time-domain aliasing cancellation
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 47 / 50
Summary
Summary of Lecture
Signal-Independent Transforms
Walsh-Hadamard Transform (WHT): Perceptual disturbing artefacts
Discrete Fourier Transform (DFT): Problem due to implicit periodic signal extension
Discrete Trigonometric Transforms: Family of Sine and Cosine transforms
Given is a zero-mean AR(1) sources with a variance σ 2 and a correlation coefficient % = 0.9
Is it worth to exploit the correlations between the transform coefficients of neighboring block
(e.g., for typical correlation factors of % ≈ 0.9) ?
Heiko Schwarz (Freie Universität Berlin) — Data Compression: Transform Coding in Practice 49 / 50
Exercises