Discrete Cosine Transform (DCT) - 國立臺灣大學itct/slide/2017/ITCT Lecture... ·...
Transcript of Discrete Cosine Transform (DCT) - 國立臺灣大學itct/slide/2017/ITCT Lecture... ·...
1
ITCT Lecture 10.2:Discrete Cosine Transform (DCT)
Cited from Internet!
Good for self-learner!
2
DCT is a Fourier-related transform similar to DFT, but using only real numbers. It is equivalent to a DFT roughly twice the transform length, operating on real data with “Even symmetry” (since Fourier transform of
a real and even function is real and even). The most common variant of DCT is the type-II DCT and its inverse is the type-III DCT.
3
Two related transform are the discrete sine transform (DST), which is equivalent to a DFT of “Real and odd” functions, and the modified DCT (MDCT), which is based on a DCT of overlapping data.
The other interesting transform is the discrete Hartley transform (DHT) in which
Even part of DHT = Real part of DFT
Odd part of DHT = Imaginary part of DFT
4
DCT is often used in signal and image processing, especially for lossy data compression, because it has a strong “Energy Compaction” property: most of the signal information tends to be concentrated in a few low-frequency components of the DCT, approaching the KLT for signals based on certain limits of Markov processes.
DCT is used in JPEG image compression, MJPEG , MPEG, H.264, and HEVC video compression.
MDCT is used in MP3, AAC, etc. audio compression.
5
Formulation:
DCT is a linear and invertible function
F: Rn →Rn (where R denotes the set of real
numbers.), or equivalently on nxn matrix.
DCT-I:
2
1
10 ]1
cos[))1((2
1 n
k
kn
j
j jkn
xxxf
6
A DCT-I of n=5 real numbers abcde is exactly equivalent to a DFT of 8 real numbers abcdedcb (even symmetry), here divided by 2. (In contrast, DCT-II ~ IV involve a half-sample shift in the equivalent DFT.)
Note that DCT-I is not defined for n less than 2. (All other DCT types are defined for any positive n.)
7
DCT-II:
Some authors further multiply the fo term by
(see below for the corresponding change in DCT-III) . This makes the DCT-II matrix orthogonal (up to a scale factor), but breaks the direct correspondence with a real-even DFT of half-shifted input.
1
0
)]2
1(cos[
n
k
kj kjn
xf
2/1
8
DCT-III:
Some authors further multiply the x0 term by , this makes the DCT-III matrix orthogonal (up to a scale factor), but breaks the direct correspondence with a real even DFT of half-shifted output.
1
1
0 ])2
1(cos[
2
1 n
k
kj kjn
xxf
2/1
9
DCT-IV:
DCT-IV matrix is orthogonal (up to a scale factor).
MDCT is based on DCT-IV with overlapped data.
1
0
)]2
1)(
2
1(cos[
n
k
kj kjn
xf
10
DCT V-VIII:
DCT types I-IV are equivalent to real-even DFTs of even order; therefore, there are 4 additional types of DCT corresponding to real-even DFTs of logically odd order, which have factors of (n + 1/2) in the denominators of the cosine arguments. These variants seem to be rarely used in practice.
11
Inverse Transforms:
IDCT-I is DCT-I multiplied by 2/(n-1).
IDCT-IV is DCT-IV multiplied by 2/n.
IDCT-II is DCT-III multiplied by 2/n (and versa).
12
Computation
Direct application of the above formulas would require O(n2) operations, as in the FFT it is possible to compute the same thing with only O(nlogn) complexity by factorizing the computation. (One can also compute DCTs via FFTs combined with O(n)) pre- and post-processing steps.)
13
References: 1. Rao and Yip, Discrete Cosine Transform:
Algorithms, Advantages, Applications; Academic Press, Boston, 1990.
2. Arai, Agui, Nakajima, A Fast DCT-SQ scheme for Images, Trans. On IEICE-E, 71(11), 1095, Nov. 1998.
3. Tseng and Millen, On Computing the DCT, IEEE Trans. On Computers, pp. 966-968, Oct. 1978.
4. Frigo and Johnson, The Design and Implementation of FFTW3, IEEE Proceedings, vol. 93, no. 2, pp. 216-231, 2005.
14
The implementation of the 2D-IDCT
Let the 8-point 1-D DCT of input data f(x) be:
First the 1-D DCT is applied to all the rows of the 2-D input f(y,x):
7
0
816
)12(cos)(
2)(
x
u uxxf
CuS
7
0
816
)12(cos),(
2),(
x
ur
uxxyf
CuyS
(1)
(2)
15
Then the 1-D DCT is applied to the columns of the results of (2):
By substitution we get the formulation of the 2-D DCT:
7
0
816
)12(cos),(
2),(
y
ru vy
uySC
uvS
7
0
7
0 16
)12(cos
16
)12(cos),(
22),(
y x
uv vyuxxyf
CCuvS
(3)
(4)
16
Fast 1-D DCT Algorithms
Define
Eqn. (1) can be written as:
Since
. and,16
,16
2
H
uux
7
0
7
0
8 )cos()(216
)12(cos)(
2)(
x
u
x
u xfCux
xfC
uS
16
)15(2cos
16
2coscos)cos(2coscos2
)(
uxuxH
HW
17
If we constitute a sequence of elements f(k), k = 0, 1, …, 15 with
7
0
8 ]16
)15(2cos
16
2)[cos()(
16cos
4
xu
uxuxxfuS
u
C
8),15(
8 ),()(
kkf
kkfkf
(5)
18
We can re-write (5) as
When
Because the 16-point DFT is defined by
15
0
15
0
16
2
8 })(Re{16
2cos)()(
16cos
4
k k
ukj
u
ekfuk
kfuSu
C
1j
15
0
16
2
16 )()(k
ukj
ekfuF
19
We have the following DCT v.s. DFT relationship
Instead of performing an IDCT an IDFT of twice the length is performed. IDFT can be implemented by IFFT with complexity O(NlogN)!
)}(Re{)(16
cos4
168 uFuSu
Cu
: only the first 8 values
are needed.
20
The multiplication by seems not so efficient. However, bear in mind that the last operation before the IDCT is the “Quantization”. That means every value is to be multiplied with a certain constant (1/Quantization factor) depending on its position in DCT matrix. So we can merge the multiplications by and the multiplication by Quantizer dependent constant together. As a result, the Quantization and DCT-DFT transform can be performed in one step.
16cos
4 u
Cu
16cos
4 u
Cu
21
Let XM = (f(0), f(1), f(2), f(3), f(4), f(5), f(6),
f(7)): original data
FM = ( F(0), F(1), F(2), F(3), F(4),
F(5), F(6), F(7)): scaled transformed data
Define P(a,b) =
We can establish a matrix TM:
16
1
8
18
1
8
1
8
1
8
1
8
1
8
1
16
2cos
16
2cos
ba
22
)56,49()63,42()70,35()77,28()84,21()91,14()98,7()105,0(
)48,42()54,36()60,30()66,24()72,18()78,12()84,6()90,0(
)40,35()45,30()50,25()55,20()60,15()65,10()70,5()75,0(
)32,28()36,24()40,20()44,16()48,12()52,8()56,4()60,0(
)24,21()27,18()30,15()33,12()36,9()39,6()42,3()045(
)16,14()18,12()20,10()22,8()24,6()26,4()28,2()30,0(
)8,7()9,6()10,5()11,4()12,3()13,2()14,1()15,0(2
)0,0(
2
)0,0(
2
)0,0(
2
)0,0(
2
)0,0(
2
)0,0(
2
)0,0(
2
)0,0(
PPPPPPPP
PPPPPPPP
PPPPPPPP
PPPPPPPP
PPPPPPPP
PPPPPPPP
PPPPPPPP
PPPPPPPP
TM
23
FM = XM x (1/8)TM
Because
Define
cosa = cos(-a); -cosa = cos(p -a) = cos(p +a)
cos(2pn+a) = cosa;
8sin
8
3cos;
2
2
4cos
8
2cos;
8cos 642
kkk
24
11
1111
11
11111111
11
1111
11
11111111
224466664422
44444444
664422224466
664422224466
44444444
224466664422
kkkkkkkkkkkk
kkkkkkkk
kkkkkkkkkkkk
kkkkkkkkkkkk
kkkkkkkk
kkkkkkkkkkkk
TM
25
XM = FM x (8TM-1) = FM x L; (L = 8TM
-1)
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
224246246422
4444
664642642466
664642642466
4444
224246246422
CCCCCCCCCCCC
CCCC
CCCCCCCCCCCC
CCCCCCCCCCCC
CCCC
CCCCCCCCCCCC
L
26
Where
The matrix L can be factored as:
L = B1 x M x A1 x A2 x A3
with:
8sin2
8
3cos2
28
2cos2;
8cos2
6
42
C
CC
27
11100000
00001100
10110000
00000010
10110000
00001100
11100000
00000001
1B
10000000
000000
0000000
000000
00001000
0000000
00000010
00000001
26
4
62
4
CC
C
CC
C
M
28
1
0
0
0
0
0
0
0
00100001
00100001
00000001
01000000
10000100
00000100
00011010
00011010
1A
00000001
01010000
10000000
00000100
01010000
00101000
00101000
10000010
2A
29
So the IDFT can be performed by 5 steps:
00011000
00011000
00100100
10000001
01000010
01000010
00100100
10000001
3A
30
21
)7(8
1)1(
8
1
21
)5(8
1)3(
8
12
)7(8
1)1(
8
11
)3(8
1)5(
8
1
)6(8
1)2(
8
1
)6(8
1)2(
8
1
)4(8
1
)0(16
1
:1
7
6
5
4
3
2
1
0
temptempa
FFa
temptempa
FFtemp
FFtemp
FFa
FFa
FFa
Fa
Fa
B
77
26646
455
66244
33
422
11
00
)(
)(:
ab
CaCab
Cab
CaCab
ab
cab
ab
ab
M
31
77
36
45
4
103
322
101
50
76
3
3
3
:1
bn
bn
bn
tempn
bbn
bbn
bbn
btempn
bbtemp
A
057
636
215
634
213
42
01
70
:2
nnm
nnm
nnm
nnm
nnm
nm
nm
nm
A
04
23
15
76
76
15
23
04
)7(
)6(
)5(
)4(
)3(
)2(
)1(
)0(
:3
mmf
mmf
mmf
mmf
mmf
mmf
mmf
mmf
A
32
In part M, a simplification can be made:
So define
)()(
)()(
)(
626646
6666266426642
624646
6464662466244
CCaaaC
CaCaCaCaCaCab
CCaaaC
CaCaCaCaCaCab
4
4
)(4
and
66
44
646
6262
tempRab
tempQab
aaCtemp
CCRCCQ
33
If you count the operations you will get 29 additions and 5 multiplications.
Because an 8x8 2-D DCT can be computed by applying 8-point 1-D DCT to each row and each column of the 2D data. Therefore, 2x8x29 = 464 additions and 2x8x5 = 80 multiplications are required in total.
A more efficient DCT algorithm has been proposed by Feig and Winograd in IEEE Trans. on ASSP, pp. 2174-2193, 1992.