H264編碼原理之幀間預(yù)測與幀內(nèi)預(yù)測

H264基本概念

視頻的本質(zhì)就是很多幀圖片,在視頻采集過程中其實就是圖片采集笛臣,而h264編碼就是對這些圖片進行壓縮葵袭,以便于存儲和傳輸廉白。針對一幀幀的圖片个初,引申出以下的概念:

· I幀:關(guān)鍵幀,采用幀內(nèi)壓縮技術(shù)

舉個例子,如果你用攝像頭對著一棵樹來拍攝蒙秒,1秒之內(nèi),實際你發(fā)生的變化是非常少的勃黍。1秒鐘之內(nèi)實際很少有大幅度的變化.攝像機一般一秒鐘會抓取幾十幀的數(shù)據(jù)。動畫一般都是15幀/s晕讲,平時我們的視頻文件一般也就是30幀/s覆获,對于一些要求比較高的,對動作的精細度有要求瓢省,想要捕捉到完整的動作的,高級的攝像機一般是60幀/s弄息。I幀一般都是一組幀的第一幀,I幀需要完整的保存下來勤婚,如果沒有這個關(guān)鍵幀后面解碼數(shù)據(jù),是完成不了的.所以I幀特別關(guān)鍵.摹量。

· P幀:向前參考幀.壓縮時只參考前一個幀.屬于幀間壓縮技術(shù)

視頻的第一幀會被作為關(guān)鍵幀完整保存下來.而后面的幀會向前依賴.也就是第二幀依賴于第一個幀.后面所有的幀只存儲于前一幀的差異.這樣就能將數(shù)據(jù)大大的減少.從而達到一個高壓縮率的效果.

· B幀:雙向參考幀,壓縮時即參考前一幀也參考后一幀.幀間壓縮技術(shù).

B幀,即參考前一幀,也參考后一幀.這樣就使得它的壓縮率更高.存儲的數(shù)據(jù)量更小.如果B幀的數(shù)量越多,你的壓縮率就越高.這是B幀的優(yōu)點,但是B幀最大的缺點是,如果是實時互動的直播,那時與B幀就要參考后面的幀才能解碼,那在網(wǎng)絡(luò)中就要等待后面的幀傳輸過來.這就與網(wǎng)絡(luò)有關(guān)了.如果網(wǎng)絡(luò)狀態(tài)很好的話,解碼會比較快,如果網(wǎng)絡(luò)不好時解碼會稍微慢一些.丟包時還需要重傳.對實時互動的直播,一般不會使用B幀。(如果我們對實時性的要求不高的話,就可以使用B幀缨称,單對于一些實時性要求比較高的直播來說凝果,B幀可以完全不用的)

GOF(Group of Frame)一組幀

如果在一秒鐘內(nèi),有30幀.這30幀可以畫成一組.如果攝像機或者鏡頭它一分鐘之內(nèi)它都沒有發(fā)生大的變化.那也可以把這一分鐘內(nèi)所有的幀畫做一組.

一組幀:

一個I幀到下一個I幀.這一組的數(shù)據(jù).包括B幀/P幀.我們稱為GOF(如下圖)

補充:

簡單分析一下我們在平時看視頻時候會發(fā)現(xiàn)花屏或者卡頓的現(xiàn)象睦尽,主要是一組幀(GOF)里面的P幀缺失或者受損讓解碼時候發(fā)生錯誤導(dǎo)致的器净。為了避免花屏的發(fā)生,一般會不顯示發(fā)生P幀或者I幀丟失的那一組幀当凡,等到下一個I幀到來時才顯示下一組幀山害,然而這樣子治標不治本,長時間顯示上一組幀沿量,會導(dǎo)致卡頓現(xiàn)象的發(fā)生浪慌。

幀內(nèi)預(yù)測壓縮

幀內(nèi)預(yù)測壓縮,解決的是空域數(shù)據(jù)冗余問題,一幅圖里數(shù)據(jù)在寬高空間內(nèi)包含了很多顏色,光亮.人的肉眼很難察覺的數(shù)據(jù). 對于這些數(shù)據(jù),我們可以認作冗余.直接壓縮掉的朴则。

幀間預(yù)測壓縮

解決的是時域數(shù)據(jù)冗余問題权纤,攝像頭在一段時間內(nèi)所捕捉的數(shù)據(jù)沒有較大的變化,我們針對這一時間內(nèi)的相同的數(shù)據(jù)壓縮掉.這叫時域數(shù)據(jù)壓縮。

(除以上之外還有CABAC無損壓縮與整數(shù)離散余弦變換(DCT)

在分析幀內(nèi)預(yù)測與幀間預(yù)測之前我們還需知道宏塊劃分與分組

H264宏塊劃分:

將一個圖片左上角用宏塊描述,就是宏塊是8*8的元素.取出的顏色,像右邊的去描述.描述顏色.將一個圖片全部用宏塊描述就如下圖佛掖。

基本上宏塊劃分就完成了妖碉,那么宏塊還可以在細分嗎?當然是可以的芥被,宏塊可以進行子塊的劃分,如下圖:

在這個大的宏塊里,可以再細化. 我們可以看到在這個大的宏塊里,我們更加細化了. 比如我們中間這個全部都是藍色的這個宏塊,就可以用一個色塊,更加簡單描述就行了坐榆。

由上圖可以看出拴魄,MPEG2和H.264.就會發(fā)現(xiàn)MPEG2存儲時還算比較完整.占用的空間相對于比較多.而H.264還是減少了很多空間.像重復(fù)的顏色他們就用非常簡單的色塊描述了。

幀間預(yù)測壓縮分析

現(xiàn)在我們有一組幀(如下圖)席镀,記錄的是桌球在桌球臺上的運動匹中,好明顯這一組幀的背景就是桌球臺,這是不變的豪诲,改變的就是桌球的位置顶捷,這就是幀分組

然后進行組內(nèi)宏塊的查找(如下圖)屎篱,臺球從一角滾到另外一角.相鄰的2幅圖做組內(nèi)的宏塊查找服赎。將圖逐行掃描,掃描到第三行.發(fā)現(xiàn)了臺球. 然后圍繞它的周圍查找.發(fā)現(xiàn)了有類似的圖塊。

以上操作找到了對應(yīng)的宏塊交播,然后就會進行運動估算重虑。然后把他們放在同一張圖上面(如下圖),而在兩個位置之間就會存在著一個運動矢量秦士。矢量會包含運動的方向和距離缺厉。以此類推,我們將所有的圖進行兩兩比較的話,就會得出第一張圖+很多幀的運動矢量提针,數(shù)據(jù)就達到了很大的減少命爬。

你以為這樣子就結(jié)束了嘛?其不然辐脖!雖然說每張圖的背景都一樣的饲宛,其實還是存在著一些差別的。好明顯就是臺球的數(shù)據(jù)揖曾,有些我們?nèi)庋劭床磺宓臄?shù)據(jù)落萎,例如光線的影響。所以幀間預(yù)測過程中還會對每幀圖進行殘差數(shù)據(jù)的計算炭剪,實際經(jīng)過我們一運算后.它留下的就只是運動矢量數(shù)據(jù)+殘差值的數(shù)據(jù)练链。經(jīng)過這樣的一個計算.幀間壓縮數(shù)據(jù)我們就可以看到實際我們只需要存儲一點點數(shù)據(jù).而不像以前要將幾十幀的所有圖片數(shù)據(jù)保存下來.這就達到了壓縮的效果奴拦,這個過程就叫做幀間壓縮技術(shù)的原理媒鼓。

幀內(nèi)預(yù)測壓縮分析

幀內(nèi)預(yù)測壓縮在平時開發(fā)中使用較多,幀內(nèi)壓縮是針對于I幀的错妖。因為它解決的是空間的數(shù)據(jù)冗余绿鸣,而幀間壓縮是解決的時間數(shù)據(jù)冗余。我們剛剛說明的是幀間壓縮技術(shù)暂氯,將大量在時間軌跡上相同的數(shù)據(jù)壓縮掉潮模,只留下運算估量和殘差值。

而幀內(nèi)壓縮用到了完全不同的技術(shù)手段痴施,我們首先計算出每個宏塊的宏塊模式擎厢,一共9種。如圖所示:


參考文獻:

幀內(nèi)預(yù)測9種模式原理介紹(1)

幀內(nèi)預(yù)測9種模式原理介紹(2)

經(jīng)過計算最后得到的數(shù)據(jù)是每個宏塊預(yù)測得出宏塊的模式數(shù)據(jù)辣吃,如圖所示:

在每個宏塊模式確定之后呢动遭,就可以形成一張“預(yù)測圖”,左邊是預(yù)測圖,右邊是源圖神得。

得到的“預(yù)測圖”與原圖比較起來還是顯得比較粗糙的厘惦,然后兩者進行殘差數(shù)據(jù)的計算,得到殘差值哩簿。如圖:

低下的就是源于宵蕉,灰色圖就是殘差值。

預(yù)測模式與殘差值壓縮:

拿到殘差值之后,我們就進行壓縮. 壓縮時保存,殘差數(shù)據(jù)和每個宏塊選擇的模式信息數(shù)據(jù). 那么有了這2個數(shù)據(jù)之后.當我們解碼時,首先通過宏塊的模式信息計算出預(yù)測圖.然后將預(yù)測圖與我們的殘差值進行累積.就能還原成原圖像. 那這個過程就是"幀內(nèi)壓縮技術(shù)"的原理過程卡骂。

文章圖片來源于網(wǎng)絡(luò),如未能核實來源或轉(zhuǎn)發(fā)內(nèi)容圖片有瑕疵,請及時私信本人進行修改或者刪除国裳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市全跨,隨后出現(xiàn)的幾起案子缝左,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渺杉,死亡現(xiàn)場離奇詭異蛇数,居然都是意外死亡,警方通過查閱死者的電腦和手機是越,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門耳舅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人倚评,你說我怎么就攤上這事浦徊。” “怎么了天梧?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵盔性,是天一觀的道長。 經(jīng)常有香客問我呢岗,道長冕香,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任后豫,我火速辦了婚禮悉尾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挫酿。我一直安慰自己构眯,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布早龟。 她就那樣靜靜地躺著鸵赖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拄衰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天饵骨,我揣著相機與錄音翘悉,去河邊找鬼。 笑死居触,一個胖子當著我的面吹牛妖混,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播轮洋,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼制市,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弊予?” 一聲冷哼從身側(cè)響起祥楣,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后误褪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體责鳍,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年兽间,在試婚紗的時候發(fā)現(xiàn)自己被綠了历葛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡嘀略,死狀恐怖恤溶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情帜羊,我是刑警寧澤咒程,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站逮壁,受9級特大地震影響孵坚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜窥淆,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一卖宠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忧饭,春花似錦扛伍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽希停。三九已至睬隶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間欢顷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留因俐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓周偎,卻偏偏與公主長得像抹剩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蓉坎,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359