I 幀編碼的基本流程為:
(1) 進(jìn)行幀內(nèi)預(yù)測,決定所采用的幀內(nèi)預(yù)測模式。
(2) 像素值減去預(yù)測值,得到殘差。
(3) 對殘差進(jìn)行變換和量化。
(4) 變長編碼和算術(shù)編碼。
(5) 重構(gòu)圖像并濾波,得到的圖像作為其它幀的參考幀。
P 幀和 B 幀編碼的基本流程為:
(1) 進(jìn)行運動估計,計算采用幀間編碼流程編碼模式的率失真函數(shù)(節(jié))值。P 幀
只參考前面的幀,B 幀可參考后面的幀。
*(2) 進(jìn)行幀內(nèi)預(yù)測,選取率失真函數(shù)值最小的幀內(nèi)模式與幀間模式比較,確定
采用哪種編碼模式。
(3) 計算實際值和預(yù)測值的差值。
(4) 對殘差進(jìn)行變換和量化。
(5) 熵編碼,如果是幀間編碼模式,編碼運動矢量
2、MPEG壓縮中的 I、B、P幀
首先,MPEG-1壓縮的基本思想:幀內(nèi)壓縮和幀間壓縮。
其次,時間相關(guān)性的統(tǒng)計分析:統(tǒng)計的結(jié)果表明,在間隔1~2幀的圖像中,各像素只有10%以下的點,其亮度差值變化超過2%,而色度差值的變化只有1%以下。
采用的壓縮方法: 分組:把幾幀圖像分為一組(GOP),為防止運動變化,幀數(shù)不宜取多。
1.定義幀:將每組內(nèi)各幀圖像定義為三種類型,即I幀、B幀和P幀;
2.預(yù)測幀:以I幀做為基礎(chǔ)幀,以I幀預(yù)測P幀,再由I幀和P幀預(yù)測B幀;
3.數(shù)據(jù)傳輸:最后將I幀數(shù)據(jù)與預(yù)測的差值信息進(jìn)行存儲和傳輸。
I幀:幀內(nèi)編碼幀
I幀特點:
1.它是一個全幀壓縮編碼幀。它將全幀圖像信息進(jìn)行JPEG壓縮編碼及傳輸;
2.解碼時僅用I幀的數(shù)據(jù)就可重構(gòu)完整圖像;
3.I幀描述了圖像背景和運動主體的詳情;
4.I幀不需要參考其他畫面而生成;
5.I幀是P幀和B幀的參考幀(其質(zhì)量直接影響到同組中以后各幀的質(zhì)量);
6.I幀是幀組GOP的基礎(chǔ)幀(第一幀),在一組中只有一個I幀;
7.I幀不需要考慮運動矢量;
8.I幀所占數(shù)據(jù)的信息量比較大。
P幀:前向預(yù)測編碼幀。
P幀的預(yù)測與重構(gòu):P幀是以I幀為參考幀,在I幀中找出P幀“某點”的預(yù)測值和運動矢量,取預(yù)測差值和運動矢量一起傳送。在接收端根據(jù)運動矢量從I幀中找出P幀“某點”的預(yù)測值并與差值相加以得到P幀“某點”樣值,從而可得到完整的P幀。
P幀特點:
1.P幀是I幀后面相隔1~2幀的編碼幀;
2.P幀采用運動補償?shù)姆椒▊魉退c前面的I或P幀的差值及運動矢量(預(yù)測誤差);
3.解碼時必須將I幀中的預(yù)測值與預(yù)測誤差求和后才能重構(gòu)完整的P幀圖像;
4.P幀屬于前向預(yù)測的幀間編碼。它只參考前面最靠近它的I幀或P幀;
5.P幀可以是其后面P幀的參考幀,也可以是其前后的B幀的參考幀;
6.由于P幀是參考幀,它可能造成解碼錯誤的擴(kuò)散;
7.由于是差值傳送,P幀的壓縮比較高。
B幀:雙向預(yù)測內(nèi)插編碼幀。
B幀的預(yù)測與重構(gòu)
B幀以前面的I或P幀和后面的P幀為參考幀,“找出”B幀“某點”的預(yù)測值和兩個運動矢量,并取預(yù)測差值和運動矢量傳送。接收端根據(jù)運動矢量在兩個參考幀中“找出(算出)”預(yù)測值并與差值求和,得到B幀“某點”樣值,從而可得到完整的B幀。
B幀特點
1.B幀是由前面的I或P幀和后面的P幀來進(jìn)行預(yù)測的;
2.B幀傳送的是它與前面的I或P幀和后面的P幀之間的預(yù)測誤差及運動矢量;
3.B幀是雙向預(yù)測編碼幀;
4.B幀壓縮比最高,因為它只反映丙參考幀間運動主體的變化情況,預(yù)測比較準(zhǔn)確;
5.B幀不是參考幀,不會造成解碼錯誤的擴(kuò)散。
注:I、B、P各幀是根據(jù)壓縮算法的需要,是人為定義的,它們都是實實在在的物理幀,至于圖像中的哪一幀是I幀,是隨機(jī)的,一但確定了I幀,以后的各幀就嚴(yán)格按規(guī)定順序排列。