第四章 視頻編碼基礎(chǔ)
1. 壓縮碼流
語義:每個(gè)語法元素所表達(dá)的意義。
2. 編碼層次
- 序列(Sequence)
- 圖像組(Group of Pictures,,GOP)
- 圖像(Picture)
- 條帶(Slice)
- 宏塊(Macroblock,,MB)
- 塊(Block)
3. 碼流結(jié)構(gòu)
3. PB幀編碼
4. 序列編碼對象
(1)IBBP序列
- 序列:一段連續(xù)編碼的并具有相同參數(shù)的視頻圖像。
-
序列起始碼:專有的一段比特串,,標(biāo)識一個(gè)序列的壓縮數(shù)據(jù)的開始
- MPEG-2的序列起始碼為十六進(jìn)制數(shù)000001(B3),。
-
序列頭:記錄序列信息
- 檔次(Profile),級別(Level),,寬度,,高度,是否是逐行序列,,幀率等,。
-
序列結(jié)束碼:專有的一段比特串,標(biāo)識該序列的壓縮數(shù)據(jù)的結(jié)束
- MPEG-2的序列結(jié)束碼為十六進(jìn)制數(shù)000001(B7),。
5. 圖像組編碼對象
6. 圖像編碼結(jié)構(gòu)
7. 圖像分塊編碼
8. 條帶編碼結(jié)構(gòu)
9. 條帶編碼對象
10. 宏塊編碼結(jié)構(gòu)
- 宏塊:16x16的像素塊(對亮度而言),。
- 宏塊內(nèi)容:宏塊編碼類型,編碼模式,參考幀索引,,運(yùn)動矢量信息,,宏塊編碼系數(shù)等。
11. 宏塊編碼對象
12. 塊編碼結(jié)構(gòu)
13. 視頻編解碼關(guān)鍵技術(shù)
- 預(yù)測:通過幀內(nèi)預(yù)測和幀間預(yù)測降低視頻圖像的空間冗余和時(shí)間冗余,。
- 變換:通過從時(shí)域到頻域的變換,去除相鄰數(shù)據(jù)之間的相關(guān)性,,即去除空間冗余,。
- 量化:通過用更粗糙的數(shù)據(jù)表示精細(xì)的數(shù)據(jù)來降低編碼的數(shù)據(jù)量,或者通過去除人眼不敏感的信息來降低編碼數(shù)據(jù)量,。
- 掃描:將二維變換量化數(shù)據(jù)重新組織成一維的數(shù)據(jù)序列,。
- 熵編碼:根據(jù)待編碼數(shù)據(jù)的概率特性減少編碼冗余。
14. 預(yù)測
時(shí)間預(yù)測:利用時(shí)間上相鄰圖像的相關(guān)性來預(yù)測的方法,。
- 幀間預(yù)測:運(yùn)動估計(jì)(Motion Estimation,ME),,運(yùn)動補(bǔ)償(Motion Compensation,,MC)
- Inter圖像編碼:前向預(yù)測編碼圖像(P幀),雙向預(yù)測編碼圖像(B幀)
15. 幀內(nèi)預(yù)測
- I幀圖像的每個(gè)宏塊都采用幀內(nèi)(Intra)預(yù)測編碼模式,。
- 宏塊分成8x8或者4x4塊,,對每個(gè)塊采用幀內(nèi)預(yù)測編碼,稱作Intra8x8或者Intra4x4,。
- 幀內(nèi)預(yù)測有多個(gè)預(yù)測方向:水平,,垂直,左下,,右上,。
- 幀內(nèi)預(yù)測還有直流(DC)預(yù)測。
-
色度塊預(yù)測還有平面預(yù)測,。
16. 幀間預(yù)測
幀間預(yù)測流程:
運(yùn)動補(bǔ)償:給定MV和參考幀,,為待解碼塊從參考幀上獲取預(yù)測塊,。
運(yùn)動矢量編碼
- MV預(yù)測:用當(dāng)前塊的周圍可得到鄰塊的運(yùn)動矢量來預(yù)測當(dāng)前塊的運(yùn)動矢量
- 運(yùn)動矢量差(MV difference,MVD):實(shí)際運(yùn)動矢量與預(yù)測運(yùn)動矢量的差,,即:
-
運(yùn)動矢量差采用變長編碼,。
17. 預(yù)測殘差
18. 變換編碼
- 變換編碼:通過變換將空域信號轉(zhuǎn)換為頻域信號來去除空間信號的冗余信息,減少編碼數(shù)據(jù),。
-
二維離散余弦變換
例:
- 變換系數(shù):直流(DC)系數(shù),交流(AC)系數(shù)
19. 量化
- 量化原理:將含有大量的數(shù)據(jù)集合映射到含有少量的數(shù)據(jù)集合中,。
- 一般情況下量化后高頻部分包含大量的零系數(shù)
20. 掃描
- 掃描:將二維數(shù)據(jù)轉(zhuǎn)換為一維的數(shù)據(jù)序列,。
21. 熵編碼
- 熵編碼:根據(jù)符號出現(xiàn)的概率,對經(jīng)常出現(xiàn)的符號分配較短的碼字,,對不常出現(xiàn)的符號分配較長的碼字,。
- Level-Run編碼:用數(shù)據(jù)中非零值和其前面非零值之間出現(xiàn)零值的個(gè)數(shù)重新描述量化系數(shù)序列為(Level,Run)二元組序列
-
變長編碼
- 將Level-Run編碼后的(level,,run)變長編碼成最終的比特串,。
22. 碼率控制
碼率控制考慮的問題
- 防止碼流有較大的波動,,導(dǎo)致緩沖區(qū)發(fā)生溢出,,
- 同時(shí)保持緩沖區(qū)盡可能的充滿,讓圖像質(zhì)量盡可能的好而且穩(wěn)定
CBR(Constant Bit Rate)
- 比特率穩(wěn)定,,但圖像質(zhì)量變化大
VBR(Variable Bit Rate)
- 比特率波動大,,但圖像質(zhì)量穩(wěn)定
碼率控制算法
碼率控制屬于非標(biāo)準(zhǔn)技術(shù)
第5章 預(yù)測
1. 預(yù)測技術(shù)
- 目的:去除空間冗余和時(shí)間冗余,。
-
視頻存在大量的空間冗余和時(shí)間冗余
-
空間冗余:用幀內(nèi)預(yù)測編碼去除
-
時(shí)間冗余:用幀間預(yù)測編碼去除
- 基于塊匹配(Block Matching)的幀間預(yù)測
預(yù)測后得到去除大部分空間或時(shí)間冗余的殘差
2. 空間冗余
- 圖像空間相鄰像素具有很強(qiáng)的相關(guān)性,。
- 幀內(nèi)預(yù)測技術(shù)去除空間冗余
3. 亮度預(yù)測模式
4. 色度預(yù)測模式
5. 時(shí)間冗余
- 視頻圖像在時(shí)間上有較強(qiáng)的相關(guān)性,即存在時(shí)間冗余
-
去除時(shí)間冗余的編碼技術(shù)
運(yùn)動補(bǔ)償(Motion Compensation,MC)
- 根據(jù)運(yùn)動矢量獲取預(yù)測塊
- 根據(jù)預(yù)測殘差計(jì)算重構(gòu)塊:
6. 運(yùn)動模型
(1)平移
7. 匹配準(zhǔn)則
8. 匹配準(zhǔn)則簡化
-
簡化技術(shù)方法
- 分別計(jì)算當(dāng)前塊和預(yù)測塊的象素值和
- 根據(jù)簡化形式,比較當(dāng)前塊和預(yù)測塊
- 如果用簡化準(zhǔn)則對預(yù)測塊和當(dāng)前塊比較的結(jié)果比以前最好的結(jié)果差,,可以確定預(yù)測效果不好,,不必對預(yù)測塊再進(jìn)行比較。
9. 運(yùn)動估計(jì)
- 去除視頻圖像的時(shí)間冗余
- 運(yùn)動估計(jì)在搜索范圍內(nèi)為當(dāng)前塊尋找匹配最好的預(yù)測塊
- 全搜索方式的運(yùn)動估計(jì)計(jì)算復(fù)雜度高
10. 全搜索復(fù)雜度分析
- 圖像大?。篗xM
- 預(yù)測塊大?。篘xN
- 搜索范圍:(-R,R)
- 每個(gè)搜索點(diǎn)象素比較個(gè)數(shù):N2
- 搜索點(diǎn)個(gè)數(shù)(2R+1)2
- 在搜索范圍內(nèi)的象素比較個(gè)數(shù)總和N2(2R+1)2
- 一幀圖像所有塊的全搜索象素比較個(gè)數(shù)總和N2(2R+1)2(M/N)2=(2R+1)2M2
-
例:M=512,,N=4,,R=8,幀率:30幀/秒
(2R+1)2M2
=172X5122
= 75759616次/幀
= 75759616x30次/秒
=2272788480次/秒
采用SSD匹配準(zhǔn)則:每次象素比較需1個(gè)減法,,1個(gè)乘法,,1個(gè)加法,則上述全搜索計(jì)算每秒需要2272788480x2次加減法和2272788480次乘法操作,。
11. 快速運(yùn)動估計(jì)
12. 三步搜索
- 由粗到精搜索最優(yōu)點(diǎn),,初始步長為R/2.
- 第一步:檢查起始點(diǎn)和其周圍步長為R/2的8個(gè)點(diǎn),,將最優(yōu)點(diǎn)作為第二步的起始點(diǎn);
- 第二步:以新的起始點(diǎn)為中心檢查其周圍步長為R/4的8個(gè)點(diǎn),,找到最優(yōu)點(diǎn)作為第三步的起始點(diǎn),;
- 第三步:以新的起始點(diǎn)為中心檢查其周圍步長為R/8的8個(gè)點(diǎn),找到最優(yōu)點(diǎn),,如果R/8=1則搜索終止,,最優(yōu)點(diǎn)位置的預(yù)測塊作為最優(yōu)的預(yù)測塊,否則重復(fù)該過程直到R/n2=1,;
- 三步搜索方法檢查點(diǎn)的個(gè)數(shù)為1+8log2(d+1),,當(dāng)d=8時(shí),檢查點(diǎn)個(gè)數(shù)為9+8+8=25
13. 二維Log搜索
- 每一步采用十字搜索模式
- 如果每一步的最優(yōu)點(diǎn)為中心點(diǎn)或者搜索窗的邊界點(diǎn),,搜索步長減半,,否則搜索步長不變
- 當(dāng)搜索步長為1時(shí),中心點(diǎn)周圍的8個(gè)點(diǎn)都要檢查
- 兩個(gè)搜索路徑一個(gè)需要5+3+3+8=19,另外一個(gè)需要5+3+2+3+2+8=23
14. 正交搜索
- 起始搜索步長R/2,,從起始點(diǎn)開始水平搜索三個(gè)點(diǎn),,得到最優(yōu)點(diǎn)并沿著最優(yōu)點(diǎn)垂直方向搜索相鄰的兩個(gè)點(diǎn),得到最優(yōu)點(diǎn),,以搜索步長為R/4再以同樣的方式先水平再垂直搜索,,當(dāng)步長為1時(shí)停止搜索
- 搜索方法檢查點(diǎn)的個(gè)數(shù)為1+4log2(d+1),當(dāng)d=8時(shí),,檢查點(diǎn)個(gè)數(shù)為3+2+2+2+2+2=13,。
15. 十字搜索
- 起始搜索步長R/2,從起始點(diǎn)開始以"X"形十字搜索,,當(dāng)搜索步長降為1時(shí),,如果上一步的最優(yōu)點(diǎn)為中心點(diǎn),左上點(diǎn)或右下點(diǎn),,則這一步搜索以"+"形狀十字搜索,,然后結(jié)束搜索,否則還是以"X"形十字搜索,,然后結(jié)束搜索,。
- 十字搜索方法檢查點(diǎn)的個(gè)數(shù)為1+4log22d,當(dāng)d=8時(shí),,檢查點(diǎn)個(gè)數(shù)為5+4+4+4=17
16. 新三步搜索
- 與三步搜索方法不同的是,,考慮到運(yùn)動矢量高的中心分布特點(diǎn),新三步搜索方法,,除了圍繞起始點(diǎn)為中心搜索步長為R/2的8個(gè)點(diǎn)之外,,在起始點(diǎn)周圍增加了步長為1的8個(gè)搜索點(diǎn),如果最優(yōu)點(diǎn)為步長為1的8個(gè)搜索點(diǎn)之一,,則在最優(yōu)點(diǎn)鄰近的三個(gè)點(diǎn)中搜索最優(yōu)點(diǎn),,然后結(jié)束搜索,否則,,和三步搜索方法過程一樣
- 其中一個(gè)搜索路徑需要檢查點(diǎn)個(gè)數(shù)為17+3=20,,另一個(gè)需要17+8+8=33。
17. 塊梯度下降搜索
- 該方法以起始點(diǎn)為中心搜索8個(gè)步長為1的相鄰點(diǎn),,確定最優(yōu)點(diǎn),,再以最優(yōu)點(diǎn)為中心搜索8個(gè)步長為1的相鄰點(diǎn),如此循環(huán)下去,,不限制搜索步驟,,但當(dāng)搜索得到的最優(yōu)點(diǎn)為中心點(diǎn)或者到搜索窗的邊界,搜索終止,。
18. 層次塊搜索
- 對編碼圖像和參考圖像下采樣,,分別得到編碼圖像和參考圖像的下采樣圖像,,未經(jīng)采樣處理的編碼圖像和參考圖像屬于第0層,一次下采樣的編碼圖像和參考圖像屬于第1層,,對第1層圖像再進(jìn)行下采樣得到的編碼圖像和參考圖像屬于第2層,,依次重復(fù)上述過程,得到第n層下采樣的編碼圖像和參考圖像,。
- 然后在n層下采樣參考圖像的搜索范圍中找到與下采樣編碼圖像塊最佳匹配塊的MV,,該MV作為n-1層的運(yùn)動估計(jì)搜索范圍的中心點(diǎn),依次重復(fù)上述過程,,直到n=0為止,,此時(shí)得到的最佳匹配塊就是編碼圖像的預(yù)測塊,其對應(yīng)的MV為最終的最優(yōu)MV,。
19. 搜索算法復(fù)雜度比較
20 . 分像素運(yùn)動估計(jì)與運(yùn)動補(bǔ)償
21. 分像素插值
22. 多參考幀預(yù)測
- 有更多的候選圖像,,搜索更精確的預(yù)測塊
- 需要更多的參考圖像存儲空間
- 碼流需要標(biāo)識參考幀索引的語法元素
23. 圖像分塊編碼
- 視頻內(nèi)容的運(yùn)動非常復(fù)雜,圖像分塊編碼可以更好的提高運(yùn)動預(yù)測精度,,提高壓縮效率,。
- 要在編碼塊大小和附信息(MV,,Mode)編碼比特?cái)?shù)之間權(quán)衡,,小的編碼塊大小會有更好的預(yù)測但有更多的附信息比特?cái)?shù)。
23. 雙向預(yù)測編碼
24. B幀有更好的編碼效率
-
B幀有更好的編碼效率
- 新出現(xiàn)的對象參考將來的幀有更好的預(yù)測效果
- 前后兩個(gè)預(yù)測的平均值可以減少預(yù)測方差
25. 全局運(yùn)動估計(jì)
- 基于全局仿射運(yùn)動模型
- 預(yù)測精度不如基于塊的運(yùn)動估計(jì)
- MV數(shù)目少,,適合簡單運(yùn)動場景的運(yùn)動估計(jì)
|