即時通訊音視訊開發(四):視訊編解碼之預測技術介紹
前言
即時通訊應用中的實時音視訊技術,幾乎是IM開發中的最後一道高牆。原因在於:實時音視訊技術 = 音視訊處理技術 + 網路傳輸技術 的橫向技術應用集合體,而公共網際網路不是為了實時通訊設計的。
系列文章
1. 預測技術的作用
目的是去除空間冗餘和時間冗餘。因為視訊存在大量的空間冗餘和時間冗餘,包括空間冗餘、時間冗餘,預測後得到去除大部分空間或時間冗餘的殘差。
2. 空間冗餘
影象空間相鄰畫素具有很強的相關性,幀內預測技術去除空間冗餘。
3. 亮度預測模式
4. 色度預測模式
5. 時間冗餘
視訊影象在時間上有較強的相關性,即存在時間冗餘。去除時間冗餘的編碼技術有:運動估計(Motion Estimation,ME)、運動補償(Motion Compensation,MC)。
6. 運動模型
7. 匹配準則
8. 運動估計
目的是去除視訊影象的時間冗餘。運動估計在搜尋範圍內為當前塊尋找匹配最好的預測塊,全搜尋方式的運動估計計算複雜度高。
9. 快速運動估計演算法種類
在保持預測精度的同時減少運動估計的搜尋次數,典型演算法有:
- 三步搜尋(Three Step Search,TSS)
- 二維Log搜尋(2D Logarithmic Search,2DLOG)
- 正交搜尋(Orthogonal Search Algorithm,OSA)
- 十字搜尋(Cross Search Algorithm,CSA)
- 新三步搜尋(New Three Step Search,NTSS)
- 四步搜尋(Four Step Search,FSS)
- 共軛方向搜尋(Conjugate Direction Search,CDS)
- 梯度下降搜尋(Gradient Descent Search,GDS)
- 層次塊搜尋(Hierarchical Block Matching Algorithm,HBMA)
10. 搜尋演算法複雜度比較
11. 分畫素運動估計與運動補償
時域運動位置更可能在整象素之間,即分畫素上。利用相鄰的整象素可以估計出分象素的值:常用線性或雙線性插值得到分象素的值。分象素運動估計有更高的預測精度,但複雜度也更高:1/2分象素運動估計,影象儲存空間增加4倍,運動向量需要放大2倍,1/4分象素運動估計,影象儲存空間增加16倍,運動向量需要放大4倍,計算複雜度也成倍增加。
12. 分畫素插值
13. 多參考幀預測
有更多的候選影象,搜尋更精確的預測塊。
14. 影象分塊編碼
視訊內容的運動非常複雜,影象分塊編碼可以更好的提高運動預測精度,提高壓縮效率。要在編碼塊大小和附資訊(MV,Mode)編碼位元數之間權衡,小的編碼塊大小會有更好的預測但有更多的附資訊位元數。
15. 雙向預測編碼
16. B幀有更好的編碼效率
新出現的物件參考將來的幀有更好的預測效果,前後兩個預測的平均值可以減少預測方差。
17. 全域性運動估計
基於全域性仿射運動模型。預測精度不如基於塊的運動估計。MV數目少,適合簡單運動場景的運動估計。
網易雲信,你身邊的即時通訊和音視訊技術專家,瞭解我們,請戳網易雲信官網
想要閱讀更多行業洞察和技術乾貨,請關注網易雲信部落格
本文轉載自52im,作者:JackJiang