VVC之SCC(一):IBC

VVC之SCC(一):IBC

Intra block copy(IBC)是屏幕內容編碼(Screen Content Coding,SCC)的主要技術之一。IBC是塊級的編碼模式,在編碼端會使用塊匹配(Block Matching,BM)技術爲每個CU尋找最優匹配塊,並計算塊向量(block vector)。塊向量表明當前塊和最優匹配塊的位置關係。

當CU使用IBC模式編碼,其亮度分量的塊向量使用整數精度表示,色度分量的塊向量四捨五入到整數精度。當結合AMVR技術時,塊向量可以在1像素精度和4像素精度間切換。

IBC模式只用於亮度分量的寬和高都小於等於64的CU。

在編碼端,可以對IBC模式使用基於哈希的運動估計技術。編碼器會爲寬或高不大於16的塊進行RD檢查。對於non-merge模式,首先使用基於哈希的搜索進行塊向量搜索,如果哈希搜索沒有返回有效的候選項則使用基於局部搜索的BM。

在基於哈希的搜索中,當前塊和參考塊間的哈希鍵值匹配(32-bit CRC)操作對所有允許尺寸的塊進行。對當前圖像所有位置的哈希鍵值計算都是基於4x4子塊進行的。對於較大的當前塊,只有其所有4x4子塊的哈希鍵值與參考塊對應位置哈希鍵值都匹配時,纔將其作爲匹配塊。如果多個塊的哈希鍵值都和當前塊匹配,則選擇塊向量代價最小的一個。

在BM搜索中,搜索範圍包括前面的CTU和當前CTU。

在CU級上有一個IBC標誌位表示IBC AMVP模式或IBC skip/merge模式:

  • IBC skip/merge模式:一個merge候選項索引用於表示使用哪個相鄰IBC塊的塊向量作爲預測值。merge列表由空域、HMVP和pairwise候選項構成。

  • IBC AMVP模式:BVD(block vector difference)和MVD(motion vector difference)編碼方式一樣。塊向量有兩個候選預測值分別來自左側和上側IBC塊。當兩個候選項都不可用時,使用一個默認塊向量作爲預測值。需要傳輸一個標誌位表示使用的塊向量預測值的索引。

IBC參考區域

爲了減少內存需求和解碼複雜度,VTM5中僅允許在當前CTU和左側CTU的部分重建區域使用IBC。下圖表示IBC模式允許的參考區域,每個塊都爲64x64。

 

根據當前CU在CTU中的位置可分爲下面4種情況:

  • 如果當前CU是CTU左上角的64x64的塊,除了當前CTU已重建部分,CPR模式下左側CTU的右下角64x64的塊、左下角64x64的塊、右上角64x64的塊也可以作爲參考。

  • 如果當前CU是CTU右上角的64x64的塊,除了當前CTU已重建部分,如果相對於當前CTU的(0,64)位置還未重建,當前塊也能參考CPR模式下左側CTU的右下角64x64的塊、左下角64x64的塊;否則當前塊也能參考左側CTU的右下角64x64的塊。

  • 如果當前CU是CTU左下角的64x64的塊,除了當前CTU已重建部分,如果相對於當前CTU的(0,64)位置還未重建,當前塊也能參考CPR模式下左側CTU的右上角64x64的塊、右下角64x64的塊;否則當前塊也能參考CPR模式下左側CTU的右下角64x64的塊。

  • 如果當前CU是CTU右下角的64x64的塊,它只能參考CPR模式下當前CTU已重建部分。

感興趣的請關注微信公衆號Video Coding

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章