HEVC幀內/幀間預測:Cross-Component Prediction (CCP)
Cross-Component Prediction (CCP)跨元件預測是通過消除顏色元件的相關性,在保證顏色高保真度的同時,實現對視訊內容的高效壓縮,被HEVC RExt採納。其核心思想是使用亮度元件來預測色度元件,進一步消除亮度和色度元件之間的相關性,提高編碼效率。在CCP中,亮度殘差沒有任何變化,只對色度殘差進行了處理。
一、線性預測模型:
令原始亮度元件為x,原始色度訊號為y,在幀內/幀間預測後,會生成兩者的殘差訊號表示為△x和△y。
線性迴歸對△y進行預測:
α和β的計算如下:
其中μ△x和μ△y是△x和△y的平均值。
當幀內/幀間預測的參考訊號平均值和當前訊號的平均值相同時,就會產生零均值殘差訊號即μ△x和μ△y為0,這就是α可以簡化為:
而此時β就會變為0。
在實際中,已經證明了β非零時,對β的編碼處理時間的增加,額外的編碼處理不能帶來效率的提升,因此在實際中並不使用β,只需要關注α即可。
二、CCP實際應用過程:
1、編碼器端
圖(a)是使用CCP的編碼器結構(圖中完整表示了使用重構亮度殘差訊號生成預測器訊號的編碼器結構,如果使用原始亮度殘差訊號則不需要進行下側反量化/變換及其以後的處理)。
(1)生成殘差訊號:輸入的視訊在幀內/幀間預測之後會生成各顏色元件的殘差訊號△x和△y。
(2)執行CCP預測:用亮度的殘差訊號△x'(有兩種選擇:原始亮度殘差或重構亮度殘差)生成一個預測器訊號α△x',將原始色度殘差△y減去預測器訊號α△x'得到被預測色度殘差訊號△²y
其中△x'是生成預測器使用的亮度殘差訊號,有兩種選擇:原始亮度殘差或重構亮度殘差。
(3)對△²y和△x'進行變換、量化、編碼。
其中預測器訊號生成方式會影響處理的速度:
(1)使用重構亮度殘差訊號生成。如圖(a),亮度殘差需要完成重構後才能進行預測器生成,這也就極大的限制了整個CCP的處理速度。色度殘差需要等待預測器生成後才能進行下一步處理,無法與亮度殘差進行並行編碼處理。
(2)使用原始亮度殘差訊號生成。此時,在幀內/幀間預測完成後,即可生成預測器,因此可以立刻進行CCP預測,亮度和色度殘差可以進行並行編碼處理,這樣就能夠極大的提高處理速度。
兩者的延遲分析如下圖,可見使用原始亮度殘差訊號生成預測器,可以實現並行處理從而極大地提高編碼效率。
2、解碼器端
圖(b)是使用CCP的解碼器結構。
(1)對收到的視訊流進行解碼、反變換/量化之後得到重構色度殘差訊號△²y'。
(2)將重構色度殘差訊號△²y'與預測器訊號α△x'相加,得到重構的被預測色度殘差訊號△y':
其中預測器訊號α△x'使用與編碼器端相同的方法生成。
(3)通過幀內/幀間預測補償、環濾波器後得到重構色度訊號。
三、係數α
α是基於亮度殘差和色度殘差的相關性計算得到的,在預測色度殘差之前必須先要計算α。
1、α的計算
如果使用重構亮度殘差訊號生成預測器時,α需要基於重構亮度殘差與原始色度殘差進行計算,需要等待亮度殘差重構(如第二部分編碼器中的延遲分析a圖所示)。而基於原始亮度殘差進行預測,則在幀內/幀間預測之後可以直接計算α,這樣在CCP處理之前即可完成α的計算,無需等待重構,極大的降低了CCP的演算法複雜度,提高運算速度(第二部分編碼器中的延遲分析b圖)。
當基於原始亮度殘差進行預測時,α的計算可以直接在CCP處理之前完成。
令x表示原始亮度訊號,表示原始色度訊號,用x線性迴歸對進行預測:
根據平穩性的假設,幀內/幀間預測的參考訊號關係可以使用相同的α'和β'表示:
兩式相減得到殘差訊號為:
可見當β設定為零時,這裡的α'近似等於在第一部分中分析的α。
α'使用原始訊號進行計算:
其中N表示塊中的畫素數量。這樣使用原始亮度和色度訊號來計算α,實現了在CCP處理之前完成α的計算。
2、α的二進位制化取值
在實際使用中,為了提高編碼效率,對α的取值進行了限制,範圍限定在[-1,1],取值設定定為{0,±0125,±0.25,±0.5,±1}。為了方便計算機的計算,並避免浮點運算,將所有值乘8取值變為{0,±1,±2,±4,±8},然後通過右移三位來補償即。
在HEVC RExt解碼器中,CCP可以靈活適應並處理不同深度的亮度和色度取樣:
其中的b chroma和b luma分別表示的是色度取樣和亮度取樣的位元深度。
使用CABAC高效編碼,首先檢測是否為零:如果為零,則CCP就不會被應用;如果不為零,則取,得到的二進位制取值。
另外在幀內預測中,只有當亮度和色度使用相同的預測模式時才會啟用CCP。
3、率失真優化
通過率失真優化,計算CCP on/off情況下的率失真代價:如果CCP off即不使用CCP的率失真代價小,則將置為0,即可關閉CCP;而如果CCP on即使用CCP的率失真代價小,則使用計算得到的,啟用CCP。
而如果當計算得到的為0時,不需要進行率失真優化。
參考文獻:
Kim W S, Pu W, Khairat A, et al. Cross-Component Prediction in HEVC[J]. IEEE Transactions on Circuits & Systems for Video Technology, 2015:1-1.