羅瑜
(陜西中醫藥大學 基礎學院,陜西咸陽 712046)
隨著通信技術的發展,人們對視頻和圖像的要求也越來越高。目前圖像的分辨率已從FHD 慢慢過渡到8K,幀率也從30 f/s 發展成目前主流的60 f/s。高分辨率和高幀率大大提升了視覺體驗,但同時也給信息的傳輸帶來了很大的技術挑戰,即如何快速完成大量數據的傳輸。為解決該問題,新的視頻編碼技術不斷被提出,比如H.265、AVS2 和VP9 等編碼標準。目前,國際上最先進的視頻編碼標準為開放媒體聯盟(Alliance for Open Media,AOM)提出的AV1標準,該編碼標準主要針對8K 碼流,與H.265、AVS2以及VP9 相比,它用近2 倍的壓縮復雜度換來約30%壓縮率的提升[1-2],大大降低了視頻的傳輸帶寬。
解碼是編碼的逆過程,根據AV1 的編碼標準可以知道,AV1 的解碼流程主要包含8 個模塊,如圖1所示[3-5]。
圖1 中,每個模塊的作用說明如下:
1)熵解碼模塊主要完成語法元素(Syntactic Element,SE)的解析。
2)反變換量化:本模塊根據熵解碼解析出的SE,計算出每個殘差系數的值。

圖1 AV1解碼流程
3)計算MV:本模塊根據熵解碼解析出的SE,計算出每個殘差系數對應的運動矢量(Motion Vector,MV)[6-7]。
4)像素重建:本模塊主要根據殘差系數和其對應的MV,計算出每個像素值[8]。
5)Loop Filter:本濾波模塊主要減弱或者消除變換量化帶來的塊效應[9-10]。
6)CDEF:本濾波模塊主要減弱變換量化帶來的振鈴效應[11]。
7)Up Scaling:本模塊在水平方向進行上采樣,以恢復圖像的真實水平分辨率[12]。
8)Loop Restoration:本模塊為有效的通用去噪濾波器,可消除DCT 噪聲。
經過大城市的熏陶,丁柔的言談舉止都非常得體,與我閑聊了她這幾年在北京的奮斗史,大多是一些比較心酸的往事。只是她的分貝卻揚得有些高,大抵是故意想讓周橋聽見。
在進行Loop Restoration 處理前,AV1 在概念上首先把一幀圖像在垂直方向上分為N個stripe,每個stripe 對 應 一 套 參 數,即stripeNum、stripeStartY 和startEndY,這些參數決定著濾波器在進行濾波時,是取CDEF 濾波后的數據還是取CDEF 濾波前的數據進行濾波[5,12]。這套參數說明如下:
1)stripeNum 為每個stripe 的索引號。當stripe Num 為0 時,stripe 的高度為56pixels;stripeNum 為N-1 時,stripe 的高度為(frame_height-56)%64;對于其它的stripeNum,stripe 的高度為64pixels,如圖2 中的長條所示。
2)stripeStartY 為每個stripe 的起始行對應的Y坐標。
3)stripeY 為每個stripe 的結束行對應的Y坐標。
其次AV1 標準又把一幀圖像在水平和垂直方向上分為若干個矩形方塊,即restoration unit,如圖2 中的虛線方塊所示。每個restoration unit 的大小由熵解碼模塊解析得到,且都有其對應的坐標(unitRow,unitCol),根據此坐標可計算得到濾波過程用到的各個參數。

圖2 stripe 和restoration unit示意圖
Loop Restoration 濾波器的處理如圖3 所示,它主要包含兩種濾波器,即Winner濾波器和SelfGuided濾波器,其中Winner 濾波器采用兩個一維的對稱濾波器進行實現,SelfGuided 濾波器則采用兩個重建信號的線性組合來模擬接近真實數據。通過AV1標準可知,通過rType 參數(通過unitRow 和unitCol計算得到)決定選擇Winner 濾波器還是SelfGuided 濾波器[5,13]。

圖3 Loop Restoration處理流程
Winner 濾波器采用兩個一維濾波器級聯來實現濾波功能,即先進行7 階水平對稱濾波,然后再進行7 階垂直對稱濾波。7 階水平濾波如圖4 所示,由于后面有垂直7 階濾波,因此在進行水平濾波時需要向上和下各擴展3 行,其中黑色部分表示當前要濾波的4×4 塊,深灰色塊表示當前正在濾波的位置,深灰色塊左右各3 個數據表示濾波時需要用到的鄰域數據。在獲取鄰域數據時,若正在進行水平濾波的位置和黑色4×4 塊屬于不同stripe(如圖4(a)的上半部分所示),則采用CDEF 濾波前的數據進行水平一維濾波;若正在進行水平濾波的位置和黑色4×4 塊屬于同一個stripe(如圖4(a)的下半部分所示),則采用CDEF 濾波后的數據進行水平一維濾波。

圖4 Winner濾波器濾波原理示意圖
在進行完水平濾波后,得到中間變量h_filter[10][4]的中間數據,然后對該數據進行7 階對稱的一維垂直濾波,從而得到最終的Winner 濾波結果,如圖4(b)所示。
對于Winner 濾波器的處理過程,其ASIC 的實現如圖5 所示,其中pixel_0 表示CDEF 濾波前的數據,pixel_1 表示CDEF 濾波后的數據,通過當前濾波行的坐標y和stripeStartY 的比較結果判斷選擇pixel_0還是pixel_1。interRound0 表示四舍五入的小數位數;hfilter[7]表示水平濾波的7 個抽頭系數,可直接根據unitRow 和unitCol 對熵解碼模塊解析出的濾波系數LrWinner 進行查表得到。

圖5 Winner濾波器中水平濾波器的ASIC實現
進行完水平濾波器后,需要對水平濾波的結果再進行垂直7 階濾波。垂直濾波器的實現和水平濾波器的實現很類似,只是濾波用到的抽頭系數vfilter[7]和四舍五入的位數interRound1 有所不同,因此其ASIC 的實現這里不再贅述。
根據AV1 標準可知,SelfGuided 濾波器首先采用兩個box濾波器,以得到兩個濾波結果flt0和flt1,然后再對flt0 和flt1 進行線性組合,從而得到SelfGuided濾波器的最終結果,處理流程如圖6 所示[13-15]。

圖6 selfGuided濾波器處理流程
每個box 濾波器是由兩個濾波器級聯而成。對于flt0 的box 濾波,第一級濾波首先把當前4×4 的數據塊擴展成5×5 的數據塊,以保證第二級的3×3 二維濾波器在對當前的4×4 塊進行濾波時能取到鄰區數據,如圖7(a)所示,其中黑色塊表示當前4×4 數據塊,淺灰色塊表示在4×4 數據塊周圍擴展的數據,最終和黑色塊一起形成了5×5 的數據塊;然后再對這5×5數據塊上的每個數據進行5×5 的二維濾波,得到中間結果A[6][6]和B[6][6],如圖7(b)所示,其中深灰色塊表示當前正在濾波的位置,其周圍的5×5 表示濾波用到的鄰域數據[16]。

圖7 box filter0內5×5二維濾波示意圖
在計算得到A[6][6]和B[6][6]后,需要分別對A[6][6]和B[6][6]在原始4×4 數據塊的位置上進行3×3 的二維濾波,得到數據a 和b,如圖8 所示;然后根據公式(1),利用a 和b 對4×4 塊上的數據進行線性縮放,從而得到box filter0 的最終濾波結果flt0[4][4]。式(1)中,curr_pixel 表示4×4 塊上的每個位置的像素值,i和j的取值范圍都是0~3。

對于flt1 的Box 濾波,其濾波過程和flt0 類似,不同的是把4×4 數據塊擴展成5×5 的數據塊后,然后對5×5 數據塊的每個數據進行3×3 的二維濾波,而不是5×5 的二維濾波,因此這里不再贅述。

圖8 A[6][6]和B[6][6]3×3二維濾波示意圖
通過box filter 后得到濾波結果flt0[4][4]和flt1[4][4]后,然后通過線性組合得到最終的selfGuided 濾波器的濾波結果,即selfGuided[4][4]。根據AV1 標準可知,其ASIC實現如圖9所示,其中的個參數說明如下:
1)LrSgrXqd 由前級的熵解碼模塊計算得到的一個數組數 據,w0 和w1 可通過unitRow 和unitCol 對LrSgrXqd 數組查表得到。
2)set 可 通 過unitRow 和unitCol 對LrSgrSet 數 組查表得到,且Sgr_Params 為各個元取值固定的一組數組,r0 和r1 可 通過參數set 對Sgr_Params 數組查表得到。

圖9 flt0[4][4]和flt1[4][4]線性組合ASIC實現框圖
AV1 是由AOM 組織提出的、目前國際上壓縮效率最高的視頻壓縮標準。文中詳細闡述和分析了Loop Restoration 濾波器中各個步驟的實現原理和物理意義,最終用加法器和移位操作代替乘法器,給出了Loop Restoration 濾波器的ASIC 最優實現,大大節省了ASIC 實現過程中的資源消耗,對工程實現有較大的參考意義,有較強的商業應用價值。