Professional Documents
Culture Documents
Tong Quan Ve Chuan Nen h264
Tong Quan Ve Chuan Nen h264
, ,
T cng thc bin i DCT trn, php nhn ma trn trn c th c t
tha s chung. Lc ny, cng thc (2.4) tr thnh :
[ ]
1 1 1 d 1 1 1 1
1 d -d -1 1 d -1 -1 T
Y=(CXC ) E=
1 -1 -1 1 1 -d -1 1
d -1 1 -d 1 -1 1 -d
2
ab b ab
X
1 1
1 1
1 1
1 1
1 1
] ]
2 2
a ab b ab
2 2
ab b ab b
(2.5)
2 2
a ab b ab
2
b
1
1
1
1
1
1
1
]
Vi CXC
T
: Phn chnh ca bin i.
E : ma trn cc h s t l
: ch nh rng mi gi tr ca CXC
T
c nhn vi 1 gi tr
cng v tr ca ma trn E (nhn v hng)
d = c/b = 0.414.
n gin cho vic trin khai bin i, cc h s a, b, d s c xp x ng
vi cc gi tr sau :
1 2 1
, b = , c =
2 5 2
a
Cng thc bin i (2.5) lc ny tr thnh:
[ ]
1 1 1 1 1 2 1 1
T 2 1 -1 -2 1 1 -1 -2
Y=(C XC ) E =
1 -1 -1 1 1 -1 -1 2
1 -2 2 -1 1 -2 1 -1
2
2 4
X
j j j
ab b a
1 1
1 1
1 1
1 1
1 1
] ]
2 2
a a
2
2
2 2
2 4 2 4
(2.6)
2 2
a a
2
2
2
2 4
ab
ab
ab b ab b
ab
ab
b b
1
1
1
1
1
1
1
1
1
1
1
1
]
31
Cng thc (2.6) tng ng vi cng thc (2.4) nhng v c nhng s thay
i ca cc h s b, d nn kt qu ca bin i cc block khc bit 4x4 trong H.264
khng tng ng so vi bin i DCT 4x4 ban u.
Qu trnh bin i ngc (IDCT): H.264 nh ngha qu trnh bin i ny
mt cch tng minh vi mt chui cc php ton s hc sau:
[ ]
1
1 1 1
2
2 2
a ab a
1
1 -1 -1
2 2
ab b ab b 2
X=C (Y E )C = (
1 2 2
a ab a ab
1 -1 1
2
2 2
ab b ab b
1
1 -1 1
2
T
X
i i i
1
1
1
1
1
1
1
1
1
1
1
]
1 1 1 1
ab
1 1
1 -1
2 2
) (2.7)
1 -1 -1 1
1 1
-1 1
2 2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
] 1
]
Cc h s 1/2 trong cc ma trn C
i
v C
i
T
c th c thay th bng php
Shift phi.
V kha cnh lng t ha, H.264 s dng php lng t ha v hng. C
ch ca lng t thun v lng t ngc trong chun nn video H.264 phc tp
hn bi yu cu trnh cc php chia, php x l trn s thc v x l cc php tnh
cho cc ma trn E
i
v E
f
c gi t qu trnh bin i. Cng thc lng t xui c
bn:
Z
ij
= round (Y
ij
/ Q
step
) (2.8)
Vi Y
ij
: Cc h s bin i
Q
step
: bc lng t
Z
ij
: cc h s c lng t
Trong H.264, bc lng t Q
step
c tt c 52 gi tr, c nh ch mc
bi mt bin lng t QP (Quantisation Parameter). Khi QP tng ln 6 n v th
gi tr Qstep s c tng gp i.
QP 0 1 2 3 4 5 6 7 8 9 10 11 12 .
Qstep 0.625 0.6875 0.8125 0.875 1 1.125 1.25 1.375 1.625 1.75 2 2.25 2.5 .
QP 18 24 30 36 . 42 48 51
Qstep 5 10 20 40 80 160 224
Bng 2. 3: Cc kch thc bc lng t trong H.264/AVC Codec
32
Min gi tr rng ln ca bc lng t gip cho b nn iu chnh s tng
quan thay i gia t l bit/s v cht lng thch hp nhm t cht lng th hin
tt nht. Trong mt macroblock, gi tr QP c th khc nhau i vi thnh phn
luma v chroma. Cc h s a
2
, ab/2 v b
2
/4 trong cng thc (2.6) c tch hp tnh
ton trong qu trnh lng t thun.
Vi lng t thun, u tin block X c bin i to thnh block gm
cc h s bin i theo cng thc:
W = CXC
T
(2.9)
Sau mi h s W
ij
c lng t vi cng thc:
Z
ij
= round (W
ij
*PF / Q
step
) (2.10)
Ty thuc vo v tr ca i, j m PF s c cc gi tr sau:
V tr PF
(0,0), (2,0), (0,2) hoc (2,2)
(1,1), (1,3), (3,1) hoc (3,3)
Cc v tr khc
a
2
b
2
ab/4
trnh s dng php chia nhm lm n gin thut ton, h s (PF/Qstep)
s c trin khai dng mt php nhn vi h s PF v mt php dch bit phi nh
sau:
Z
ij
= round (W
ij
* MF / 2
qbits
) (2.11)
Vi MF / 2
qbits
= PF / Q
step
qbits = 15 + floor (QP / 6)
Theo php tnh s nguyn, c th c trin khai nh sau:
|Z
ij
| = (|W
ij
|*MF + f) >> qbits (2.12)
sign (Z
ij
) = sign (W
ij
)
vi php >> l php dch phi bit nh phn.
Gi tr f = 2
qbits
/3 i vi cc block c m ha Intra v f = 2
qbits
/6 i vi
cc block c m ha Inter.
QP V tr V tr Gi tr
33
(0,0), (2,0), (0,2), (2,2) (1,1), (1,3), (3,1), (3,3)
0
1
2
3
4
5
13107
11916
10082
9362
8192
7282
5243
4660
4194
3647
3355
2893
8066
7490
6554
5825
5243
4559
Bng 2. 4: H s nhn MF
Trong bng 2.4, 6 gi tr u ca h s nhn MF (Mutiplication Factor) c
dng bi H.264 c hin th. Ct th 2 v th 3 ng vi cc h s b
2
/4 v ab/2.
Khi QP > 5 th gi tr MF cn li khng thay i nhng s chia tng theo h s 2
khi QP tng ln 6 n v. Chng hn, qbits = 16 vi 6<= QP <= 11, qbits = 17 vi
12<= QP <=17,
Cn lng t ngc (rescaled) c cng thc:
W
ij
= Z
ij
Q
step
* PF * 64 (2.13)
W
ij
l cc h s c rescaled. Tuy nhin, H.264 khng s dng mt cch
tng minh cc h s Q
step
v PF trong cng thc ny. Thay vo , mt h s V =
PF.Qstep.64 s c thay th vi 0 QP 5 v cho mi v tr h s.
V th cng thc lng t ngc tr thnh:
W
ij
= Z
ij
* V
ij
*2
floor (QP/6)
(2.14)
Gi tr V c nh ngha trong chun H.264 vi 0 QP 5 c m t
trong bng 4.5. H s 2
floor(QP/6)
lm cc h s c lng t tng ln 2 ln ng vi
gi tr QP tng ln 6 n v.
QP V tr
(0,0), (2,0), (0,2), (2,2)
V tr
(1,1), (1,3), (3,1), (3,3)
V tr khc
0
1
2
10
11
13
16
18
20
13
14
16
34
3
4
5
14
16
18
23
25
29
18
20
23
Bng 2. 5: H s scaling V
Bin i v lng t cc block 4x4 luma gm cc h s DC
Nu macroblock c nn theo kiu d bo Intra (v d ton b thnh phn
luma 16x16 c d on t nhng im nh ln cn) th mi block 4x4 c bin
i trc. Sau , cc h s DC ca mi block 4x4 s c bin i dng bin i
Hadamard 4x4.
1 1 1 1 1 1 1 1
1 1 -1 -1 1 1 -1 -1
Y = W /2 (2.15)
1 -1 -1 1 1 -1 -1 1
1 -1 1 -1 1 -1 1 -1
D D
1 1
1 1
1
1 1
1
1 1
]
1 1
] ]
Trong W
D
chnh l block gm 4x4 cc h s DC c nh du l -1
trong hnh 2.21, Y
D
l block sau khi bin i gm cc h s bin i. Cc h s bin
i ny s c lng t to thnh block gm cc h s bin i DC c
lng t theo cng thc sau:
|Z
D(i,j)
| = (|Y
D(i,j)
| MF
(0,0)
+ 2f) >> (qbits + 1) (2.16)
sign (Z
D(i,j)
) = sign (Y
D(i,j)
)
Trong , MF
(0,0)
l h s nhn cho v tr (0,0), cc h s f, qbits c
nh ngha trc.
Ti b gii nn, mt bin i Hadamard ngc c thc hin :
W =
1 1 1 1 1 1 1 1
1 1 -1 -1 1 1 -1 -1
(2.17)
1 -1 -1 1 1 -1 -1 1
1 -1 1 -1 1 -1 1 -1
QD
Z
D
1 1
1 1
1
1 1
1
] 1 1
1 1
] ]
Qu trnh lng t ngc (Rescaled):
W
D(i,j)
= W
QD(i,j)
V
(0,0)
2
floor(QP/6) - 2
(QP 12) (2.18)
35
W
D(i,j)
= [W
QD(i,j)
V
(0,0)
+ 2
1-floor(QP/6) 2
] >> (2-floor(QP/6)) (QP<12)
Trong , V
(0,0)
ng vi v tr (0,0) c cho bi bng sau:
QP V tr
(0,0), (2,0), (0,2), (2,2)
V tr
(1,1), (1,3), (3,1), (3,3)
V tr khc
0
1
2
3
4
5
10
11
13
14
16
18
16
18
20
23
25
29
13
14
16
18
20
23
Bng 2. 6: Gi tr ca h s V ng vi cc v tr khc nhau
Cc h s DC c lng t ngc W
D
s c chn vo cc block 4x4
tng ng.
Bin i v lng t cc block 2x2 chroma gm cc h s DC
Mi block 4x4 ca thnh phn chroma c bin i DCT. Cc h s DC
ca mi block ny c nhm li thnh block 2x2 (W
D
). Block ny s c bin
i trc khi lng t ha.
1 1 1 1
W = W (2.19)
QD
1 -1 1 -1
D
1 1
1
1 1
1
]
] ]
Lng t ha ca block Y
D
2x2 sau khi bin i c biu din nh sau:
|Z
D(i,j)
| = (|Y
D(i,j)
|. MF
(0,0)
+ 2f) >> (qbits + 1) (2.20)
sign (Z
D(i,j)
) = sign (Y
D(i,j)
)
Trong , MF
(0,0)
l h s nhn ti v tr (0,0) v cc h s f, qbits c
nh ngha trn.
Trong qu trnh gii nn, bin i ngc c thc hin trc :
1 1 1 1
W = (2.21)
QD
1 -1 1 -1
D
Z
1 1
1
1 1
1
]
] ]
Tip , qu trnh lng t ngc s c thc hin cho block W
QD
:
36
W
D(i,j)
= W
QD(i,j)
. V
(0,0)
. 2
floor (QP/6) 1
(QP 6) (2.22)
W
D(i,j)
= [W
QD(i,j).
V
(0,0)
] >> 1 (QP < 6)
Cc h s sau khi thc hin qu trnh lng t ngc s c thay th ti cc
v tr tng ng ca chng trong cc block 4x4 trc khi c bin i trong qu
trnh nn.
2.3.1.3 Ti sp xp
Trong b nn, mi block 4x4 ca cc h s bin i c lng t s c
nh x thnh mt mng gm 16 phn t theo th t zig-zag.
Hnh 2. 23: Qut Zig-Zag i vi block 4x4 luma
Hnh 2. 24: M hnh bin i block 4x4 thnh mng sau khi ti sp xp
2.3.1.4 M ha lung bit nn hay m ha Entropy
Trong qu trnh nn video, mt s gi tr phi c m ha to thnh
lung bit nn lu tr hoc truyn dn nhm phc v cho b gii nn. Cc gi tr
ny bao gm:
Cc h s sau khi bin i v lng t.
Cc thng tin lin quan nhm gip cho b gii nn ti to li block d
on.
Thng tin v cu trc ca d liu nn.
Thng tin v chui video hon chnh.
37
Thng tin v mode d on trong cc maroblock trong d on Intra.
Gi tr bin lng t (QP).
Cc gi tr ny v mt s thnh phn khc s c m ha thnh lung bit
nh phn bng cch dng cc thut ton m ha di thay i CAVLC v/hoc m
ha s hc CABAC. Lung bit nh phn ny s thay th cho thng tin video ban u
vi kch thc nh nn hiu qu hn trong vic lu tr hoc truyn dn.
C 3 loi m ha entropy c s dng trong H.264 l m ha Exp-
Golomb, m ha CAVLC, v m ha CABAC.
M ha Entropy Exp-Golomb
M ha Exp-Golomb c dng nn hu nh cc thnh phn d liu ca
lung video cn m ha ngoi tr phn d liu ca block khc bit.
Cc m Exp-Golomb (Exponential Golomb Codes) l cc m vi chiu di
thay i. Cc m ny c xy dng trn cng mt nguyn tc.
Bng 2. 7: Cc t m Exp-Golomb
Trong bng 2.7, vi mt vi t m (codeword) u tin c th bit c cc
t m ny c xy dng theo cch logic nh sau:
[M zeros] [1] [INFO] (2.23)
Trong , INFO l mt trng gm c M bit mang thng tin cho gi tr
code_num cn thay th. Chiu di ca mi t m Exp-Golomb l (2.M +1) bit. Mi
t m c th c b nn xy dng da trn ch s code-num ca n
M = floor (log
2
[code_num + 1]) (2.24)
38
INFO = code_num + 1 2
M
Mt t m c th c gii m to thnh s m n thay th trong b gii
nn nh sau:
c tng s zero trong M zeros ng trc 1
Tnh gi tr ca M bit INFO sau 1.
Gi tr code_num = 2
M
+ INFO - 1
Tuy nhin, m Exp-Golomb c dng m ha cc thnh phn d liu
khc nhau trong H.264, nhng khng phi tt c chng l cc s nguyn dng. V
vy, i vi mt s thnh phn d liu, mt bng ph c thm vo thay th
cho cc gi tr ny.
Bng 2. 8: nh x cc codeNum cho cc syntax elements c du
i vi cc bng nh x ny, c gi tr thng dng hn ca cc thnh phn
m ha c nh x ti cc codeNum nh, v th vic m ha s t hiu qu nn
cao hn.
M ha chiu di thay i ng ng cnh CAVLC
CAVLC (Context-based Adaptive Variable Length Coding): m ha chiu
di thay i ng ng cnh. y l mt dng m ha entropy m bng t m
(codeword table) p dng cho block hin ti cn m ha s c chiu di thay i
39
da vo cc phn d liu c m ha trc (cc block ln cn c m
ha). CAVLC l phng php m ha entropy ca profile c bn ca H.264. N
c dng m ha cc block khc bit 4x4 hoc 2x2 gm cc h s lng t
sau khi block c ti sp xp. M ha CAVLC da trn cc c im sau ca mt
block sau qu trnh lng t:
Sau cc qu trnh d on, bin i v lng t, cc block thng mang
tnh cht tha (cha hu ht cc h s mang gi tr 0). CAVLC dng m
ha ng chy th thay th chui cc 0 lm cho hiu qu nn tt hn.
Tng s cc h s khc zero trong cc block k nhau l tng ng vi
nhau. Cc h s c nn da trn mt bng tm kim (look-up table) v
s la chn ca bng ny ph thuc vo s cc h s khc zero trong cc
block ln cn ca block cn m ha.
Sau qu trnh ti sp xp, gi tr level ( ln) ca cc h s khc zero
thng c khuynh hng ln ti cc v tr bt u ca mng (gn cc h
s DC) v gim dn khi i v pha cui mng. CAVLC li dng im ny
bng cch la chn bng tm kim (look-up table) ph thuc vo ln
cc level c m ha gn nht cho level hin ti cn m ha.
Trong CAVLC, vic m ha mt block gm cc h s bin i c thc
hin theo th t sau [24] :
coeff_token: m ha cc h s khc 0 (TotalCoeff) v cc Trailing Ones
(cc h s vi gi tr tuyt i bng 1).
trailing_one_sign_flag: du ca cc gi tr Trailing One.
level_prefix: phn u ca m cc h s khc 0 (mt gi tr cho mt h
s).
level_suffix: phn th 2 ca m cc h s khc 0 (mt gi tr cho mt h
s).
total_zeros: tng s zero tnh t u mng cho n h s khc zero cui
cng.
40
run_before: s cc zero trc mi h s khc 0. Vic m ha cc
run_before c thc hin theo th t ngc t cui mng.
M ha nh phn s hc ng ng cnh CABAC
CABAC (Context-based Adaptive Binary Arithmetic Coding): m ha nh
phn s hc ng ng cnh. Ging nh CAVLC, CABAC s m ha phn d liu
hin ti da trn phn d liu trc c m ha trong cc block ln cn.
CABAC t c t l nn tt da vo vic la chn m hnh thch hp cho mi d
liu cn m ha theo ng cnh ca n v s c lng hp l da trn cc thng k
cc b v dng m ha s hc (arithmetic coding) thay cho m ha chiu di thay
i (variable-length coding) nh trong CAVLC. CABAC dng m ha s hc c
ngha l ch c 2 gi tr nh phn (0 v 1) c m ha. Nu mt gi tr khng phi
l nh phn (chng hn cc h s bin i, cc vector chuyn ng) th s c nh
phn ha chuyn thnh dng nh phn trc khi dng m ha s hc. M ha
CABAC c dng trong profile chnh.
2.3.1.5 Lc tch khi
Lc c thc hin vi mi macroblock sau khi c gii nn lm m i
nhng cnh gia cc block v cung cp kh nng hin th hnh nh sau khi gii nn
tt hn. y l mt ci tin ca H.264 so vi cc chun nn video trc.
Ti b nn, lc tch khi c thc hin cho cc macroblock trc qu trnh
lu tr macroblock lm tham chiu cho cc d on sau ny. Cc maroblock sau
khi lc c th c s dng cho vic d don b chuyn ng cho cc nh tng
lai. Ti b gii nn, lc c thc hin trc khi macroblock c ti xy dng v
hin th.
Qu trnh lc tch khi c p dng cho cc cnh theo chiu ngang v
thng ng ca cc block 4x4 trong mt macroblock (ngoi tr cc cnh ng thi
l ng bin ca slice) theo th t sau:
41
Hnh 2. 25: Th t lc cc cnh ca thnh phn luma v chroma trong 1 macroblock
Lc 4 ng bin thng ng ca thnh phn luma (theo th t a, b, c, d).
Lc 4 ng bin ngang ca thnh phn luma (theo th t e, f, g, h).
Lc 2 ng bin thng ng ca mi thnh phn chroma (i, j).
Lc 2 ng bin ngang ca mi thnh phn chroma (k, l).
2.3.2 Quy trnh gii nn
Hnh 2. 26: Quy trnh gii nn vide ca chun H.264/AVC
B gii nn nhn lung bit nn c truyn dn bi b nn, thc hin gii
nn entropy v ti sp xp cc thnh phn d liu to tp cc h s bin i
lng t X. Sau , tp h s X ny s c lng t ngc v bin i ngc
to block khc bit D
n
.
X
+
D
n
F
n-1
, ....
(Frames
tham chiu)
Qu trnh
b chuyn
ng
D on
Intra
F
n
(Frame
tham chiu)
Lc
Ti cu
trc
M ha
Entropy
NAL
T
-1
(Bin i
ngc)
Q
-1
(lng t
ha ngc)
P
Inter
Intra
+
uF
n
42
B gii nn dng cc thng tin c c t vic gii nn lung bit to mt
block d on P bng mt trong hai phng php d on (Inter hoc Intra), block
ny s ging vi block d on c to ra trong b nn. Block P s cng vi block
khc bit Dn to thnh block uFn. Block uFn s c lc tch khi to
thnh block Fn lc c th c dng cho vic hin th.
2.3.2.1 Gii m lung bit nn
B gii nn s nhn lung bit nn H.264, tin hnh gii nn cc thnh phn
d liu, ti to li cc thng tin c nn bi b nn nh cc h s bin i c
lng t, thng tin d on,... Sau thng tin ny c c dng thc hin li
qu trnh bin i v lng t ngc nhm ti xy dng li chui gm cc nh
video.
2.3.2.2 Rescaling v bin i ngc
Cc h s bin i lng t s c re-scaled. (mi h s c nhn vi
mt gi tr nguyn phc hi li gi tr ban u ca n).
2.3.2.3 Ti xy dng
Vi mi macroblock, b gii nn to mt block P ging vi block c to
bi b nn. B gii nn s cng block ny vi phn block khc bit c to thnh
trong qu trnh gii nn ti xy dng block. Sau , cc block ny c lc v c
th c dng hin th nh mt phn ca nh video.