视频千倍压缩背后的技术原理之环路滤波
隨著5G的成熟和廣泛商用,帶寬越來越高,讓傳輸視頻變得更加容易。移動設(shè)備算力的提升、存儲容量的提升,也使得視頻技術(shù)的應(yīng)用越來越廣泛。視頻相關(guān)的技術(shù),特別是視頻壓縮技術(shù),因其專業(yè)性,深入開發(fā)的門檻較高,在實時通信場景中,視頻壓縮技術(shù)更面臨嚴峻的挑戰(zhàn)。因為在實時通信場景下,不僅對時延和設(shè)備適配的要求很高,對帶寬適應(yīng)的要求也非常高,因此開發(fā)一款滿足實時通信要求的編解碼器,難度很大。
此前,我們已經(jīng)在《深入淺出理解視頻編解碼技術(shù)》一文中簡要介紹了視頻編解碼基本框架,也在《揭秘視頻千倍壓縮背后的技術(shù)原理之預(yù)測技術(shù)》深入分析了該框架中的預(yù)測技術(shù),今天我們將繼續(xù)深入剖析其中的環(huán)路濾波模塊。
PART 01 什么是環(huán)路濾波?
基于塊的混合編碼框架一直是多種視頻編解碼標準的核心。在編碼視頻的時候,人為地將視頻分割成不同大小的塊,再進行預(yù)測和補償,然后再對預(yù)測殘差進行變換和量化,這一過程都是基于塊進行的,在重建視頻的時候,在不同的塊的邊界上就會出現(xiàn)不連續(xù)性,這樣的不連續(xù)性,也就是常說的“塊效應(yīng)”,如圖1-1。
▲ 圖1-1環(huán)路濾波前的重建圖像
通常人眼會對這樣的不連續(xù)性比較敏感,很容易感受到視頻的清晰度下降。塊效應(yīng)的產(chǎn)生,一方面是由于基于塊的變換和量化操作,量化誤差導(dǎo)致不同的塊的重建樣本產(chǎn)生了不同重建值,從而產(chǎn)生了邊界;另外,由于運動補償時,相鄰的編碼塊的預(yù)測值,并不一定來自同一幀的相鄰塊,也會引入虛假邊界;類似的,幀內(nèi)預(yù)測不同的預(yù)測模式,生成預(yù)測值的方式不同,也會引入虛假邊界。
為了減少視頻中塊的不連續(xù)性帶來的主觀質(zhì)量下降,可以對重建視頻進行濾波操作,如圖1-2,經(jīng)過濾波之后,視頻的主觀質(zhì)量有了明顯地改善,虛假的塊邊界平滑了,更為接近原始圖像。從圖中也可以發(fā)現(xiàn),平坦區(qū)域,塊效應(yīng)更加明顯,紋理豐富的區(qū)域(樹葉),有自然的圖像邊界,也有編碼引入的塊邊界,塊效應(yīng)相對不明顯,同時,環(huán)路濾波器的設(shè)計也需要考慮區(qū)分“真”、“假”邊界,防止對圖像本身已經(jīng)有的自然邊界進行平滑,導(dǎo)致失真。
▲ 圖1-2環(huán)路濾波后的重建圖像
在較早的編碼標準中,如MPEG-2,該操作都是在后處理階段進行的,即視頻流在解碼重建后,輸出之前進行濾波,以減少主觀上的不舒適性。從H.263附錄J開始,引入了“環(huán)路濾波”,之所以叫“環(huán)路”或者“In-loop”,是因為該濾波器在解碼的閉環(huán)當中,如圖紅色模塊所示,碼流中的語法元素解析后,進行反量化和反變換,并與預(yù)測值疊加,得到重建圖像,該重建圖像將先進行環(huán)路濾波,再輸出顯示,同時作為參考圖像,以便于后續(xù)的視頻幀進行運動補償。
由于環(huán)路濾波的引入,在提升視頻主觀質(zhì)量的同時,也提高了預(yù)測的準確性,也進一步提高了編碼效率。H.264的環(huán)路濾波只有去塊濾波一種;從HEVC/H.265開始,環(huán)路濾波模塊引入了多種類型的濾波器,例如HEVC中的SAO(Sample Adaptive Offset)[1]、AV1中的CDEF(Constrained Directional Enhancement Filter)[2]、LR(Loop Restoration)[3]、VVC中的LMCS(Luma Mapping With Chroma Scaling)、ALF(Adaptive Loop Filter)[4]等。本文將簡要介紹HEVC中的去塊濾波和AV1中的CDEF,以深入理解環(huán)路濾波的作用和效果。
▲ 圖2 混和編碼框架中的環(huán)路濾波
PART 02 HEVC中的去塊濾波器
環(huán)路濾波的主要功能是去除塊效應(yīng),設(shè)計去塊濾波器的主要難點在于對于某一個塊邊界,是否要進行濾波,以及濾波的強度應(yīng)該是多少。對塊邊界進行過度的平滑操作,會導(dǎo)致原有的圖像紋理丟失;然而較低強度的平滑,卻無法完全去除虛假邊界。
因此,去塊濾波器不但要考慮圖像本身的紋理特性,也要考慮編碼時采用的編碼參數(shù),如此才能將真正因為編碼引入的人為邊界去除。HEVC中,8x8的塊的水平和豎直的邊界是去塊濾波的濾波對象,去塊濾波器取邊界兩側(cè)各4個像素點進行濾波。如此一來,去塊濾波以8x8為基本單位,并且不同的8x8的樣本之間無重疊,可以進行并行處理,提高處理速度。但并非所有的8x8邊界都要進行處理,只有滿足一定的條件才會進行:
- 該邊界是預(yù)測單元或者變換單元的邊界;
- 塊邊界的強度非零;
- 邊界兩側(cè)樣本的局部特征滿足一定的統(tǒng)計特性。
邊界強度
邊界強度將決定是否濾波以及濾波器的強度。邊界強度可能的取值為0,1,2。取值為0,即不進行濾波操作。邊界強度取決到邊界兩側(cè)的編碼塊是否是Intra模式,是否有非零系數(shù),是否有不一致的運動方向,是否參考了不同的幀等。這里充分考慮了編碼失真才會引入虛假邊界這一事實,避免對自然的平坦區(qū)域進行不必要的濾波操作。
局部特征
當邊界強度非零,將進行一步檢查圖像的局部統(tǒng)計特征。基本的思路是,假設(shè)邊界兩側(cè)的樣本連續(xù)變化,這些樣本將在一條直線上,換言之,像素點的梯度是一個常量;反之,如果邊界兩側(cè)的梯度相差較大,則有虛假邊界引入,如圖3所示。當然,偏離程度與量化參數(shù)是相關(guān)的,標準給出了不同量化參數(shù)下的閾值。為了降低運算的復(fù)雜度,只計算第一行(列)和第四行(列)樣本偏離直線的程度。同時,該偏離程度也與濾波的強度有一定的聯(lián)系,它決定了濾波的兩種模式,即普通濾波和強濾波。
▲ 圖3 塊邊界兩側(cè)樣本的局部特性
去塊濾波器
普通濾波和強濾波兩種模式由邊界兩側(cè)像素點的梯度根據(jù)一定的規(guī)則進行決策。在普通濾波模式下,可能修改邊界兩側(cè)最近的各一個或者各兩個像素點,其中p0或者q0的濾波器的沖激響應(yīng)為(3 7 9 ?3)/16,p1或者q1的濾波器的沖激響應(yīng)為(8 19 ?1 9 ?3)/32。在強濾波模式下,邊界兩側(cè)各三個像素點會被修改,對p0、p1、p2的濾波器的沖激響應(yīng)分別為(1 2 2 2 1)/8、(1 1 1 1)/4、(2 3 1 1 1)/8。
HEVC中的去塊濾波與H.264相比,復(fù)雜度大大降低了。一方面HEVC的去塊濾波是以8x8的塊為基本單位,而264是4x4為基本單位;另一方面,HEVC的變換核尺寸和預(yù)測單元的尺寸都變大了。除此之外,HEVC的去塊濾波的并行度也有了改進,8x8的塊的邊界兩側(cè)各取4個點進行濾波操作,多條邊界使用到的像素點互不重疊,可以并行處理;豎直邊界和水平邊界以幀為單位進行,比H.264以宏塊為單位進行更能進一步提高并行度。
PART 03 AV1中的CDEF
CDEF濾波器的基本作用是在保持視頻圖像細節(jié)的前提下,使用非線性的空域濾波器來消除編碼中出現(xiàn)的失真。視頻中的各種紋理細節(jié),方向多種多樣,CDEF首先檢測紋理的方向,然后沿紋理的方向進行自適應(yīng)濾波。
CDEF的紋理檢測
為了保持圖像本身的紋理細節(jié),濾波操作應(yīng)當按照紋理的基本方向進行,避免將紋理本身當作失真進行處理,造成質(zhì)量下降。CDEF被置于去塊濾波操作之后,在重建圖像上進行紋理檢測。紋理檢測的基本單元是8x8的塊,這樣做的好處,既能有效地處理紋理 又可以便于將濾波操作進行并行處理(SIMD優(yōu)化)。CDEF設(shè)計了8種紋理方向,如圖4所示。
▲ 圖4 CDEF的紋理方向定義 [2]
一個8x8的重建圖樣塊內(nèi)的像素,搜索某一個方向時,按照該方向定義的不同的分組,對像素進行分組并求其均值,以均值填充分組內(nèi)的像素,形成一個8x8的“紋理方向預(yù)測塊”。然后計算它與8x8的重建圖像塊的平方差的和。各個方向采用相似做法,從而選擇最小平方差的和所對應(yīng)的方向作為最優(yōu)方向進行濾波操作。
以圖5為例,該8x8的重建圖像為45度的紋理(第一行方塊所示),8組方向如第二行方塊所示,按照方向所定義的像素分組,生成了每種方向的“紋理方向預(yù)測塊”(第三行方塊所示),以及對應(yīng)的RMS(實際運算中只需要計算“紋理方向預(yù)測塊”的平方和,便可以得到最佳方向)。按照文章[2]給出的該操作的計算復(fù)雜度,它和HEVC中8x8的IDCT的復(fù)雜度相當。需要指出的是,最佳紋理方向的決策,是標準定義的一部分,需要編碼和解碼做到完全一致。
▲ 圖5 CDEF選擇最佳方向示例[2]
Constraint function
CDEF使用非線性低通濾波器來消除編碼出現(xiàn)的失真,同時又能保持圖像中原有的紋理不被過度模糊。該濾波器的特點是,濾波系數(shù)的位置是基于前文中得到的紋理方向的;同時,橫穿紋理方向上,當相鄰的像素與被處理的像素差別較大時,減少其影響,以防止紋理被過度平滑,即引入了Constraint function。以一維信號為例,
該濾波器可以表達為:
其中是濾波器的系數(shù),f(d,S,D)是Constraint function,其表達式為:
它與被濾波的像素與相鄰像素的差別大小有關(guān)。如果差別較小,f(d,S,D) =d ,就是線性低通濾波器;如果差別較大,f(d,S,D) ,該位置濾波器系數(shù)將被忽略。參數(shù)S控制了像素差的閾值,參數(shù)D控制了f(d,S,D)何時取0。
▲ 圖6 參數(shù)S和D的影響[2]
濾波器的抽頭系數(shù)
只沿著紋理的方向進行濾波,有的情況下,無法去除紋理兩側(cè)出現(xiàn)的假紋理(Ringing失真)。因此,除了在紋理方向上的像素點之外的其它像素點,也要參與濾波。為此,CDEF設(shè)計了兩組濾波器抽頭系數(shù),一組Primary taps,一組Secondary taps。Primary taps就是沿著紋理方向的,而Secondary taps使用了與紋理方向呈45度角的十字,如圖7所示。
▲ 圖7 Primary taps and Secondary taps[2]
與紋理方向檢測一樣,非線性濾波操作也以8x8的像素塊為基本單元,8x8塊內(nèi)的像素共用同一組濾波參數(shù),為了盡可能的并行處理,濾波器的輸入都是去塊濾波后的像素,CDEF濾波后的像素不會用作后續(xù)CDEF濾波器的輸入。濾波器的參數(shù)在幀級和塊級都有相應(yīng)的語法元素進行傳輸,可以滿足不同的紋理特性的濾波處理。通常需要在編碼器中設(shè)計合理的算法,進行CDEF濾波參數(shù)的選擇。
隨著深度學(xué)習(xí)的蓬勃發(fā)展,特別是卷積神經(jīng)網(wǎng)絡(luò)在圖像恢復(fù)、超分、識別、分類等領(lǐng)域表現(xiàn)得非常優(yōu)秀。深度學(xué)習(xí)在視頻壓縮,特別是視頻質(zhì)量恢復(fù)和環(huán)路濾波領(lǐng)域涌現(xiàn)了許多優(yōu)秀的算法。卷積神經(jīng)網(wǎng)絡(luò)可以更好地提取圖像里的紋理等特征,通過學(xué)習(xí)得到不同紋理特征的對應(yīng)的網(wǎng)絡(luò)參數(shù),與人工地基于先驗知識(例如CDEF的紋理方向)的濾波算法相比,理論上具有更大優(yōu)勢。例如VRCNN[5]、PRN[6]、RHCNN[7]、Content-Aware CNN[8]、MFRNet[9]等。JVET也專門建立了Exploration Experiments,許多優(yōu)秀的提案正致力于將深度神經(jīng)網(wǎng)絡(luò)應(yīng)用于視頻壓縮標準中。環(huán)路濾波技術(shù)作為混合編碼框架中的組成部分,在視頻壓縮中對提升視頻主觀質(zhì)量發(fā)揮了至關(guān)重要的作用。
[1] Fu, Chih-Ming, et al. “Sample adaptive offset in the HEVC standard,” IEEE Transactions on Circuits and Systems for Video technology 22.12 (2012): 1755-1764.
[2] Midtskogen, Steinar & Valin, Jean-Marc. (2018). The Av1 Constrained Directional Enhancement Filter (Cdef). 1193-1197. 10.1109/ICASSP.2018.8462021.
[3] D. Mukherjee, S. Li, Y. Chen, A. Anis, S. Parker and J. Bankoski, “A switchable loop-restoration with side-information framework for the emerging AV1 video codec,” 2017 IEEE International Conference on Image Processing (ICIP), 2017, pp. 265-269
[4] M. Karczewicz et al., “VVC in-loop filters,” IEEE Trans. Circuits Syst. Video Technol., early access, Apr. 9, 20217
[5] Dai, Yuanying, et al. “A Convolutional Neural Network Approach for Post-Processing in HEVC Intra Coding” arXiv:1608.06690, 2016.
[6] D. Wang, S. Xia, W. Yang, Y. Hu, and J. Liu, “Partition tree guided progressive rethinking network for in-loop filtering of HEVC,” in 2019 IEEE International Conference on Image Processing (ICIP). IEEE, 2019, pp. 2671–2675.
[7] Y. Zhang, T. Shen, X. Ji, Y. Zhang, R. Xiong, and Q. Dai,“Residual highway convolutional neural networks for in-loop filtering in HEVC,” IEEE Transactions on Image Processing, vol. 27, no. 8, pp. 3827–3841, 2018.
[8] C. Jia et al., “Content-Aware Convolutional Neural Network for In-Loop Filtering in High Efficiency Video Coding,” in IEEE Transactions on Image Processing, vol. 28, no. 7, pp. 3343-3356, July 2019
[9] D. Ma, F. Zhang and D. R. Bull, “MFRNet: A New CNN Architecture for Post-Processing and In-loop Filtering,” in IEEE Journal of Selected Topics in Signal Processing, vol. 15, no. 2, pp. 378-387, Feb. 2021
總結(jié)
以上是生活随笔為你收集整理的视频千倍压缩背后的技术原理之环路滤波的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无限制版电驴搜索器(绿色版)
- 下一篇: 失物招领小程序,失物招领微信小程序,校园