視頻編碼必要性
視頻是由一幀幀的圖片組成. 以一個時長 1小時,幀率為30fps, 分辨率為1080P的視頻舉例, 一幀未壓縮的圖片(yuv420)大小為
視頻總大小為
可見未壓縮編碼的視頻是非常大的
為何能進行壓縮
44.png
45.png
視頻是連續(xù)的圖像序列乏盐,由連續(xù)的幀構(gòu)成妇多,一幀即為一幅圖像沙廉。由于人眼的視覺暫留效應(yīng)椎例,當幀序列以一定的速率播放時,我們看到的就是動作連續(xù)的視頻突想≈酚觯可見視頻壓縮編碼可以分成幀間壓縮和幀內(nèi)壓縮.
- 幀內(nèi)預(yù)測壓縮吩屹,解決的是空域數(shù)據(jù)冗余問題。
- 幀間預(yù)測壓縮(運動估計與補償)章姓,解決的是時域數(shù)據(jù)冗徐問題佳遣。
視頻之所能被壓縮,也是因為有冗余信息. 冗余信息具體分為:
- 空間冗余:圖像相鄰像素之間有較強的相關(guān)性
- 時間冗余:視頻序列的相鄰圖像之間內(nèi)容相似
- 編碼冗余:不同像素值出現(xiàn)的概率不同
- 視覺冗余:人的視覺系統(tǒng)對某些細節(jié)不敏感
- 知識冗余:規(guī)律性的結(jié)構(gòu)可由先驗知識和背景知識得到
冗余
(具體原理比這個下面介紹的復(fù)雜多, 這里只是簡單介紹,幫助理解概念)
- 空間冗余
我們常見到的jpeg圖片, 就是一種對靜態(tài)數(shù)據(jù)的壓縮,可以理解為視頻的幀內(nèi)壓縮. 一幅圖像相鄰像素間往往存在著空間連貫性.如下圖
空間冗余.png
對于圖片背景,相鄰像素有很多是相同的.
- 時間冗余
視頻一般由時間軸區(qū)間內(nèi)一組連續(xù)畫面組成,其中的相鄰幀往往包含相同的背景和移動物體啤覆,只不過移動物體所在的空間位置略有不同苍日,所以后一幀的數(shù)據(jù)與前一幀的數(shù)據(jù)有許多共同的地方,這就稱為時間冗余
如下圖窗声,背景部分有很多的相同像素相恃,有些像素只是坐標發(fā)生了變化,可以通過運動矢量笨觅,只記錄兩幀間的差異拦耐。
74.jpg
- 編碼冗余
首先介紹一下等長編碼和變長編碼:可以簡單地理解為不同像素占用的空間都是一樣的為等長編碼,不同像素占用的空間不一樣的為變成編碼见剩∩迸矗可能聽到比較多的變長編碼就是哈夫曼編碼
一幅圖像中不同像素出現(xiàn)的概率是不同的。對出現(xiàn)次數(shù)比較多的像素苍苞,用少的位數(shù)來編碼固翰。對出現(xiàn)次數(shù)比較少的像素,用多的位數(shù)來編碼羹呵,能夠減少編碼的大小骂际。 - 視覺冗余
利用人的視覺系統(tǒng)對某些細節(jié)不敏感。壓縮視覺冗余度就是去掉那些相對人眼而言是看不到的或可有可無的圖象數(shù)據(jù) - 知識冗余
有許多圖像的理解與某些基礎(chǔ)知識有相當大的相關(guān)性冈欢。例如歉铝,人臉的圖像有固定的結(jié)構(gòu),嘴的上方有鼻子凑耻,鼻子的上方有眼睛太示,鼻子位于正面圖像的中線上等等。這類規(guī)律性的結(jié)構(gòu)可由先驗知識和背景知識得到香浩,我們稱此類冗余為知識冗余类缤。根據(jù)已有知識,對某些圖像中所包含的物體弃衍,可以構(gòu)造其基本模型呀非,并創(chuàng)建對應(yīng)各種特征的圖像庫,進而圖像的存儲只需要保存一些特征參數(shù),從而可以大大減少數(shù)據(jù)量岸裙。
參考:
https://zhuanlan.zhihu.com/p/214376735
https://blog.csdn.net/xiechan2834/article/details/96328249