幀內預測:根據經過反量化和反變換(沒有進行去塊效應)之后的同一條帶內的塊進行預測。
A、4x4亮度塊預測:
用到的像素和預測方向如圖:
a~f是4x4塊中要預測的像素值,A~Q是臨塊中解碼后的參考值。0~8是4x4的亮度塊的9個預測方向(模式)。當E~H不可得時,用D代替。
A~Q在下面情況下不可用:
》不在當前圖像或條帶;在該4x4塊之前還沒有被編碼;位於幀間編碼宏塊,且constrained_intra_pred為1;
對於9個預測模式,簡述如下:
》模式0:垂直模式,條件:A~D可用。
》模式1:水平模式,條件:I~L可用。
》模式2:DC模式,條件:A~D或I~L可用。
》模式3~8:方向模式,條件和預測值參考書籍。
其中模式0~5的預測值計算方法如下圖:
B、16x16的亮度塊預測:
參考像素為左邊16個、上邊16個和左上1個共33個像素,分別記為p(-1,y)、p(x,-1)、p(-1,-1)。參考像素在下面情況下不可用:
》不位於當前圖像或條帶;位於幀間宏塊,且constrained_intra_pred為1;
預測模式有4種:
》模式0:垂直預測,條件:p(x,-1)可用;
》模式1:水平預測,條件:p(-1,y)可用;
》模式2:DC預測,條件:p(x,-1)或p(-1,y)可用;
》模式3:平面(plane)預測。
C、8x8的色度塊預測:
色度塊類似16x16的亮度塊,參考像素為17個,共垂直、水平、DC和平面1中預測模式。
D、幀內預測模式的選擇:
亮度和色度的幀內預測,都有多種預測策略,因此實際應用中要選擇最優的幀內預測策略。
對於色度塊預測,只能采用8x8的分塊大小,只需要比較4中模式的代價(用RDO模型),選擇代價最小的模式即可。
對於亮度塊預測,可以采用16x16和4x4的塊大小,所以需要先后計算出9中4x4預測模式的最小代價(RDO模型)和4中16x16預測模式的最小代價(SATD公式),然后從中選擇較小的預測模式。
E、4x4亮度塊的預測模式編碼:
由於4x4塊有9種預測模式,如果完全編碼需要4bits,所以根據該塊周圍(上和左)邊的4x4塊的預測方式來推斷當前塊的預測模式。如果推斷的預測模式一直,則只需要傳輸1bit(pred_intra4x4_pred_mode_flags=0),否則傳輸需要4(rem_intra4x4_pred_mode為4x4亮度塊預測模式的編碼值)+1(pred_intra4x4_pred_mode_flags=1)=5bits。