可以通過各種方法在一個(gè)圖像幀內(nèi)或者在一系列幀之間減少視頻數(shù)據(jù)量。
在某個(gè)圖像幀內(nèi),只需要?jiǎng)h除不必要的信息就可以減少數(shù)據(jù)量,但這樣做會(huì)導(dǎo)致圖像的分辨率下降。
在一系列的幀內(nèi),可以通過差分編碼這樣的方法來減少視頻數(shù)據(jù)量,包括H.264在內(nèi)的大多數(shù)視頻壓縮標(biāo)準(zhǔn)都采用這種方法。在差分編碼中,會(huì)將一個(gè)幀與參考幀(即前面的I幀或P幀)進(jìn)行對(duì)比,然后只對(duì)那些相對(duì)于參考幀來說發(fā)生了變化的像素進(jìn)行編碼。通過這種方法,可以降低需要進(jìn)行編碼和發(fā)送的像素值。
圖3.對(duì)M-JPEG格式來說,上述序列中的三個(gè)圖像分別作為獨(dú)立的圖像(I幀)進(jìn)行編碼和發(fā)送,彼此之間互不依賴。
圖4.對(duì)差分編碼(包括H.264在內(nèi)的大多數(shù)視頻壓縮標(biāo)準(zhǔn)都采用這種方法)來說,只有第一個(gè)圖像(I幀)是將全幀圖像信息進(jìn)行編碼。
如果是根據(jù)像素塊(宏塊)而不是單個(gè)的像素來檢測(cè)差別并進(jìn)行差分編碼,還可以進(jìn)一步減少需要編碼的信息量;因此,可以對(duì)更大的區(qū)域進(jìn)行對(duì)比,而只需對(duì)那些存在重大差別的塊進(jìn)行編碼。此外,對(duì)發(fā)生更改的區(qū)域位置進(jìn)行標(biāo)記的相關(guān)開銷也將大大降低。
然而,如果視頻中存在大量物體運(yùn)動(dòng)的話,差分編碼將無法顯著減少數(shù)據(jù)量。這時(shí),可以采用基于塊的運(yùn)動(dòng)補(bǔ)償技術(shù);趬K的運(yùn)動(dòng)補(bǔ)償考慮到視頻序列中構(gòu)成新幀的大量信息都可以在前面的幀中找到,但可能會(huì)在不同的位置上。所以,這種技術(shù)將一個(gè)幀分為一系列的宏塊。然后,通過在參考幀中查找匹配塊的方式,逐塊地構(gòu)建或者“預(yù)測(cè)”一個(gè)新幀(例如P幀)。如果發(fā)現(xiàn)匹配的塊,編碼器只需要對(duì)參考幀中發(fā)現(xiàn)匹配塊的位置進(jìn)行編碼。與對(duì)塊的實(shí)際內(nèi)容進(jìn)行編碼相比,只對(duì)運(yùn)動(dòng)矢量進(jìn)行編碼可以減少所占用的數(shù)據(jù)位。
圖5.基于塊的運(yùn)動(dòng)補(bǔ)償圖示
上圖文字:
Search window | 搜索窗口 |
Matching block | 匹配塊 |
Motion vector | 運(yùn)動(dòng)矢量 |
Target block | 目標(biāo)塊 |
Earlier reference frame | 前面的參考幀 |
P-frame | P幀 |