HEVC幀內預測學習(二) 35種預測模式的計算

幸運學者發表於2020-11-01

1.planar模式

該模式可分為水平與垂直預測,然後將其水平與垂直預測值求平均。適用於畫素值變化緩慢的情況。
在這裡插入圖片描述
即預測該位置的畫素時,需要知道PU單元的左下角第一個參考畫素即R(0,N+1)和右上角第一個參考畫素即R(N+1,0),以及該畫素對應左側和上方的參考畫素R(0,y),R(x,0)。
在這裡插入圖片描述

2.DC模式

該模式適用於大面積平坦區域,
第一步就是求出該預測單元左側及上方的畫素的平均值
在這裡插入圖片描述

對於每個座標的參考畫素的確定需要分情況:
疑問:色度與亮度在一幀影像中的變化規律有什麼區別嗎
1.對於色度分量和大於16x16的亮度分量,則其預測畫素值便是dcValue。
2.對於pu小於16x16的亮度分量
疑問:為什麼每次都要保持有四個參考畫素?能不能有八個?
① 左上角位置
在這裡插入圖片描述

將該位置上方與左側參考畫素與dcValue求平均
② 第一行位置
在這裡插入圖片描述

用該位置上方參考畫素與dcValue求平均
③ 第一列位置
在這裡插入圖片描述

與第一行類似
④ 其他位置
在這裡插入圖片描述

3.角度預測模式

3.1書本講解

在這裡插入圖片描述
上圖中分析的模式23的θ角就是下圖所示。在這裡插入圖片描述
而2~34號預測模式的偏移值分別為,剛好對應上圖的座標在這裡插入圖片描述
(29號模式偏移值為9,不是7,這裡修改一下)
角度預測模式是按照先判斷是否投影,然後再預測的方式進行的。
其中217號為水平類模式,10號為水平模式,1834為垂直類模式,26號為垂直模式。

3.2預測方法

3.2.1投影(對參考畫素二次整理)

2~10號
在這段預測模式中,屬於水平類模式,其偏移值是大於零的,因此不需要進行投影,參考畫素便是塊左側的2n+1個參考畫素,計算公式如下圖:在這裡插入圖片描述
11~17號
在這段預測模式中,同樣屬於水平類模式,但其偏移值是小於0的,因此需要進行投影,方法為:
在左上角參考畫素上方位置處向上延伸,延伸出的參考畫素為上方參考畫素按照模式角度方向的投影,具體方法例程參考18~26號預測模式。
18~26號
這段預測模式中,屬於垂直類模式,其偏移值小於0,因此需要投影,將左側參考畫素按照模式規定的角度方向進行投影,如下圖方法。在這裡插入圖片描述
其中參考畫素的計算公式如下圖。Round為四捨五入。在這裡插入圖片描述

具體計算例子:在這裡插入圖片描述
比如20號預測模式,其參考畫素上方與左上方不變,其參考畫素
Ref[-1]=R(0,y(-1))
而y(-1)=32*(-1)/(-21)=2
所以Ref[-1] = R(0,2)

(為什麼上述例子只計算到第8行,也就是投影只需要左側8個參考畫素,而不是所有16個:
根據上面式子,對比下面預測部分計算參考畫素位置的公式,投影所需要的的左側參考畫素數剛好是N個,而不是所有左側參考畫素2N個,因為我們只需要預測到第N行的所有畫素,而預測第N行的第一個畫素所需要的參考畫素就是其正對著的左側參考畫素投影過去的,其左下方參考畫素的投影根本用不到。所以在實際設計中,我們只提取出左側N+1個參考畫素即可完成投影的任務,進而實現預測畫素值。)
而即使偏移值小於0,也有可能因為偏移角太小而無法進行投影,書中的判斷方法如下圖。在這裡插入圖片描述
invAngle引數如下。應該是根據上面公式倒推過來的在這裡插入圖片描述
27~34號
在這段預測模式中,屬於垂直類模式,其偏移值是大於零的,因此不需要進行投影,參考畫素便是塊左側的2n+1個參考畫素,計算公式如下圖:在這裡插入圖片描述

3.2.2 預測

以下公式與理解是在垂直類模式下,水平類模式與之類似。
1.計算當前畫素中所在參考畫素位置,書中記作pos,公式如下
在這裡插入圖片描述

y是當前畫素的行,offset[M]是該模式的偏移值。其代表的物理意義就是根據行的位置,按照模式規定的角度方向指向上方參考畫素位置。
從這個公式對比在這裡插入圖片描述
可以看出,如果只看數學表示式的話,預測一行的第一個畫素時,所需要的參考畫素剛好是該行正左側參考畫素的投影。
2.計算對應參考畫素的加權因子w在這裡插入圖片描述

&是按位與。取低五位。(意義參考下面紅色字型分析)
當模式2、10、18、26、34時,w=0。則根據下面預測公式,只需要保留n個參考畫素即可,而其他模式需要保留n+1個參考畫素。
3.計算當前畫素預測值
P(x,y=1:nTbS)=((32-w)Ref[pos+y-1]+wRef[pos+1+y-1]+16)>>5
在這裡插入圖片描述

注:在MATLAB程式碼中,除了10、26以外所有畫素預測都是用這個方式進行
(意義:可以將w與pos聯合進行理解,pos作為高位,w作為低位。實際上pos是取y*offset[M]除以32的整數部分,而其實際的投影位置一般是處於pos與pos+1的地方,當小數部分越小,對應的參考畫素就越接近pos對應的位置,反之就越接近pos+1的位置的參考畫素,而將w除以32的話就相當於小數點的部分,因此將w作為權值。現在參考下面預測計算公式,這就相當於pos位置的參考畫素佔了,而pos+1位置的參考畫素佔了)
對於26垂直模式,以及10水平模式,我們需要對邊界畫素進行濾波計算得到預測值。
26模式時,只對每個預測塊的第一列畫素用濾波公式計算,剩餘的畫素使用上面公式計算。
10模式時,只對每個預測塊的第一行的畫素使用濾波公式進行濾波,剩餘的畫素使用上面公式計算。
濾波公式:在這裡插入圖片描述
右邊括號部分是為了預測垂直方向畫素變化規律。

相關文章