1.0 引言 高效視頻編碼(HEVC)是H.264/MPEG-4 AVC(高級視頻編碼)的一種升級版視頻壓縮標準(即ISO/IEC 23008-2 MPEG-H第2部分和ITU-T H.265)是由ISO/IEC動態圖像專家組(MPEG)和ITU-T視頻編碼專家組(VCEG)共同編寫的。與業界標準H.264相比,HEVC能夠以幾乎同樣的視頻質量實現半比特速率,并且有望在視頻應用中得到廣泛運用,其中包括:手機、廣播、機頂盒、視頻會議、視頻監控、車載等。 下圖顯示了帶有環路濾波的HEVC視頻解碼器結構圖,突出顯示的即為環路濾波。如圖所示,它是一個可去除視頻編碼過程中塊效應的兩個級組成的級聯,即去塊效應濾波(DBLK)和采樣自適應偏移(SAO)濾波。接下來的兩部分內容將詳細描述這個級。 圖1 HEVC視頻解碼器結構圖 2.0 去塊效應濾波(DBLK) 本部分將闡述去塊效應濾波,如HEVC視頻標準[1]所述。去塊效應濾濾器運行可大體可分為兩部分: 1. 濾波器邊緣上的邊界濾波強度(aka BS)計算 2. 濾波器的實際運行 縱觀整個去塊效應濾波器運行,本文獻采用了以下慣例:Q像素位于“縱向”濾波器的右側,P像素位于“縱向”濾波器左側。同樣,Q屬于“橫向”濾波器邊緣下方的像素,P屬于“橫向”濾波器邊緣上方的像素。 圖2 環內去塊效應濾波中稱為慣例的相鄰像素 2.1 濾波器邊緣強度(aka BS) 邊界濾波強度[hor/ver][xpos][ypos]計算是在一個8x8網格上完成的,取值0、1、2,如下圖所示: 雖然在8x8網格的每個像素邊緣上都有濾波器(8x8結構包括4像素邊緣),但就一個4像素段的所有像素而言,邊界濾波強度計算的屬性可以被組合。就強度計算而言,我們假設每個4像素段作為一個級。請注意,邊界濾波強度計算取決于當前、左側和頂部LCU LCUinfo。 圖3 邊界濾波強度(BS)結構圖,在8x8網格中顯示了邊緣及其編號 2.1.1 邊界濾波強度功能概述 邊界濾波強度計算是在一個8x8網格上完成的,設置圖片為0,且分片邊界(slice boundarie) (if loop_filter_across_slice_enabled_flag = 0),Tile邊界(loop_filter_across_tile_enabled_flag = 0). 只有8x8像素邊界經過濾波,即預測單元(PU)和/或轉換單元(TU)邊界,濾波過程如下。 圖4 PU和TU部分的邊界濾波強度(BS)與邊緣調諧 邊界濾波強度推導規則: 感興趣的讀者可參見HEVC規范,了解以下內容: 1. 邊界濾波強度的TU邊界濾波強度推導:8.7.2.1章節 2. 邊界濾波強度的PU邊界濾波強度推導:8.7.2.2章節 3. 邊界濾波強度推導:8.7.2.3章節 2.1.2 色度邊界濾波強度推導 只有8x8色度像素網格上的PU和/或TU邊界得到濾波。色度邊界濾波強度值源自亮度邊界濾波強度值。就色度濾波器4:2:0 (q0, p0)采樣而言,從相應的(2q0, 2p0)亮度采樣(即BS{Hor/ver}[xpos/2][ypos/2]圖中的2因素下行采樣)獲取邊界濾波強度。 圖5 色度邊界濾波強度映射:匹配到8x8網格然后除以2 2.2 濾波器運行 該部分將闡述去除HEVC視頻標準中特定塊效應的實際濾波。 2.2.1 濾波器的階數 就HEVC而言,規定的濾波器階數為幀級(不是LCU級),如下所示: 1. 在整個幀處理過程中,對所有塊的豎向邊緣都進行了H濾波。 2. 在整個幀處理過程中,對所有塊的橫向邊緣都進行了V濾波。 濾波是完全獨立的8x8濾波段,如圖6所示: 圖6 8x8塊級獨立濾波 是否需要亮度/色度(開啟/關閉判定)濾波、濾波級別(弱濾波/強濾波)以及最終的實際濾波運行將在下面章節闡述。 2.2.2 亮度濾波器開啟/關閉以及弱/強濾波的判定 濾波器開/關判定和亮度強/弱判定是根據上圖所示的四個行列段進行的。 如果邊界濾波強度等于0,則按順序進行以下步驟: qPL= ((QPP+QPQ+1)>>1), QPP 和 QPQ 為亮度 QPs β = BETA_TABLE[Clip3(0,51,qPL+(beta_offset_div2>2)) && ( |p3,0- p0,0| + |q3,0- q0,0| >3)) && ( | p0,0- q0,0| >1))) dSam0 = 1 If ( (2*dpq3 >2)) && ( |p3,3- p0,3| + |q3,3- q0,3| >3)) && ( | p0,3- q0,3| >1))) dSam3 = 1 如果 (dSam0 ==1 && dSam3 ==1) dE = 2 (strong filter); 其他 dE = 1 (弱濾波); 如果 (dp >1))>>3) ) dEp = 1 //對濾波采樣的數量進行弱濾波 If (dq >1))>>3) ) dEq = 1 //對濾波采樣的數量進行弱濾波 圖7 去塊效應濾波中濾波開/關以及濾波強度判定中的像素使用 表1 qp、tc和β(BETA_TABLE和TC_TABLE)之間的關系 2.2.3 亮度強濾波以及弱濾波 2.2.3.1 亮度強濾波機制 4像素部分共享同一個判定(dE, dEp, dEq) 如果(dE == 2),則進行強濾波以修改每端的三個像素 p0' = Clip3( p0?2*tc, p0+2*tc, ( p2 + 2*p1 + 2*p0 + 2*q0 + q1 + 4 ) >> 3 ) p1' = Clip3( p1?2*tc, p1+2*tc, ( p2 + p1 + p0 + q0 + 2 ) >> 2 ) p2' = Clip3( p2?2*tc, p2+2*tc, ( 2*p3 + 3*p2 + p1 + p0 + q0 + 4 ) >> 3 ) q0' = Clip3( q0?2*tc, q0+2*tc, ( p1 + 2*p0 + 2*q0 + 2*q1 + q2 + 4 ) >> 3 ) q1' = Clip3( q1?2*tc, q1+2*tc, ( p0 + q0 + q1 + q2 + 2 ) >> 2 ) q2' = Clip3( q2?2*tc, q2+2*tc, ( p0 + q0 + q1 + 3*q2 + 2*q3 + 4 ) >> 3 ) 圖8 亮度DBLK濾波和邊緣周圍像素點的使用 2.2.3.2 亮度弱濾波機制 4像素部分共享同一個判定(dE, dEp, dEq) 如果(dE == 1),則進行弱濾波以修改每端的一個或二個像素 D = (9*(q0– p0)-3*(q1–p1)+8)>>4 如果 (aBS(Δ) >1),tc>>1,(((p2+p0+1)>>1)–p1+Δ)>>1) p1’ = Clip1Y(p1+Δp) if dEq等于1,則濾波采樣值q1’規定如下: Δq = Clip3(-(tc>>1),tc>>1,(((q2+q0+1)>>1)–q1–Δ)>>1) q1’ = Clip1Y(q1+Δq)) 2.2.4 色度濾波 只有8x8色度像素網格上的PU和/或TU邊界得到濾波 邊界濾波強度源自亮度(對每個方向進行2因素下行采樣)(請參見色度邊界濾波強度推導小節) qPI = ( (( QPQ + QPP + 1 ) >> 1) + cqp_offset ), 其中此處的cqp_offset分別代表組件Cb/U和Cr/V的pic_cb_qp_offset和pic_cr_qp_offset。 下表的qPI包括了qPC 圖9 色度DBLK濾波和邊緣周圍像素點的使用 表2 QPc向qPi轉換 tc = TC_TABLE[Clip3(0,53,qPC+2*(BS-1)+(tc_offset_div2 1時,則Chroma濾波器將被開啟 Δ = Clip3(-tC,tC,((((q0–p0)>3)) p0’ = Clip1C(p0+Δ) q0’ = Clip1C(q0-Δ) 3.1.3 邊界條件處理 需要條件處理的有三種條件: 1. 圖像邊界(上、下、左、右) 2. 分片邊界以及slice_loop_filter_across_slices_enabled_flag = 0?畿S分片濾波適用于給定分片邊界的左側和上側邊緣(并非所有方向) 3. 瓦片邊界和loop_filter_across_tiles_enabled_flag = 0 在上述情況中,分片邊界沿線的像素未被處理,具體取決于SAO類型。 就BO而言,所有像素都將被處理。 就EO而言,像素有效性將根據SAO類型進行,如果在邊界條件下像素無效,其將跳過進行處理(即0漂移)。 下圖對邊界條件處理進行了描述。 圖14 SAO解碼器的邊界處理實例 3.1.4 條件處理 在下列條件時,SAO濾波將關閉。 SAO類型idx = OFF CU類型 = PCM且環路濾波器被描述為PCM類型 CU類型 = TQBypss(無損耗) 限幅電平SAO = OFF 參考文獻 [1] HEVC 標準 FDIS (HM10.0): http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip [2] JCT-VC文件管理系統:http://phenix.int-evry.fr/jct/ [3] HEVC參考軟件:http://hevc.info/ 本文作者在此特別感謝Minhua Zhou、Osamoto Akira以及Woo-Shik Kim對本文提出的建議和意見。 |