林 敏,林慶毫,翁曉雨,陳國捷
(特種光纖與光接入網(wǎng)重點實驗室(上海大學(xué)),上海 201900)
高級視頻編碼H.264/AVC(advanced video coding)、高性能視頻編碼H.265/HEVC、多功能視頻編碼H.266/VVC是由國際電信聯(lián)盟與國際標(biāo)準(zhǔn)化組織聯(lián)合專家組制定的一系列視頻壓縮編碼標(biāo)準(zhǔn)[1-3],代表著自2003年至今各時期最先進的視頻編碼技術(shù)。幀內(nèi)編碼是H.26X系列標(biāo)準(zhǔn)中的重要組成部分,其利用圖像的空間相關(guān)性進行數(shù)據(jù)壓縮,視頻的關(guān)鍵幀也只使用幀內(nèi)編碼處理。加之近年來,自動駕駛視覺、云游戲、遠程桌面共享、后期制作、醫(yī)學(xué)影像存檔等應(yīng)用的發(fā)展使得視頻無損幀內(nèi)編碼的需求日益增多[4]。因而探索無損幀內(nèi)編碼的優(yōu)化算法有很高的研究和應(yīng)用價值。
H.26X系列標(biāo)準(zhǔn)可以通過簡單地跳過變換、量化、去塊濾波、自適應(yīng)樣點補償?shù)瓤赡芤胧д娴牟襟E,實現(xiàn)無損幀內(nèi)壓縮[5]。但也因此使得待編碼系數(shù)具有較高的能量,為后續(xù)的熵編碼帶來極大的壓力。為優(yōu)化H.26X系列標(biāo)準(zhǔn)無損幀內(nèi)編碼的性能,國內(nèi)外學(xué)者進行了大量的研究。Kamisli[6]提出了一種不會引入失真的整數(shù)離散正弦變換,一定程度上彌補了跳過變換帶來的碼率損失;Sanchez等[7]針對不同的殘差數(shù)值分布特征設(shè)計了3組映射規(guī)則,整體降低了殘差的能量;Xu等[8]提出的殘差差分脈沖編碼調(diào)制(residual differential pulse code modulation,RDPCM)是HEVC屏幕圖像編碼擴展標(biāo)準(zhǔn)(HEVC screen content coding extension,HEVC-SCC)的一部分,通過對殘差進行再處理的方式提高了編碼效率;Wien等[1]提出的區(qū)塊差分脈沖編碼調(diào)制(block differential pulse code modulation,BDPCM)是H.266標(biāo)準(zhǔn)的一部分,通過在水平或垂直方向上使用臨近像素迭代預(yù)測的方式提高了預(yù)測準(zhǔn)確性;有學(xué)者將DPCM的思想擴展到任意預(yù)測角度,提出了多種基于樣本點的幀內(nèi)角度預(yù)測(sample-based angular intra-prediction,SAP),進一步提高了預(yù)測準(zhǔn)確性[9-11];元輝等[12]提出了一種新穎的不需要編碼預(yù)測模式信息的幀內(nèi)預(yù)測方案;Zhang等[13]分析了亮度通道與色差通道之間的關(guān)系,設(shè)計了3個模型,使用亮度通道對色差通道進行幀內(nèi)預(yù)測;Li等[14]通過將參考像素拓展到多行的方式提高了幀內(nèi)預(yù)測的準(zhǔn)確性。
上述文獻中提出的算法對幀內(nèi)編碼的性能均有不同程度的優(yōu)化,但仍存在以下待改進的問題:文獻[6]設(shè)計的整數(shù)變換方法局限性很大,且沒有量化的配合很難降低待編碼系數(shù)的能量,因此帶來的碼率優(yōu)化較小;文獻[7-8]設(shè)計的殘差分段映射方案沒有考慮殘差獨特的空間相關(guān)性,仍有優(yōu)化空間;文獻[9-14]都是設(shè)法增加或優(yōu)化預(yù)測模式來提高幀內(nèi)預(yù)測的準(zhǔn)確性,然而各代H.26X標(biāo)準(zhǔn)中的幀內(nèi)預(yù)測模式不斷增多,在最新的H.266中已經(jīng)達到67種,很難再挖掘出優(yōu)化空間,可以預(yù)見今后這類改進帶來的優(yōu)化會越來越??;最后,上述大部分方案具有一定的應(yīng)用范圍的局限性,很難在各代的H.26X標(biāo)準(zhǔn)中通用。基于上述原因,本文提出了一種在H.264、H.265、H.266中通用的無損幀內(nèi)編碼優(yōu)化算法。該算法利用幀內(nèi)預(yù)測殘差具有豐富的邊緣特征這一統(tǒng)計結(jié)果,對預(yù)測殘差進行處理。首先將當(dāng)前編碼塊的殘差首行、首列作為參考點;然后利用中值邊緣檢測(median edge detection,MED)對剩余點逐點進行預(yù)測并求得新的殘差;最后統(tǒng)計處理前后的殘差能量,選擇能量較小的一組進行熵編碼。算法經(jīng)過測試,得到了明顯的碼率優(yōu)化。
H.26X系列標(biāo)準(zhǔn)中的幀內(nèi)編碼方案經(jīng)過各世代的持續(xù)優(yōu)化,但整體框架仍保持一致,包含幀內(nèi)預(yù)測-變換-量化-熵編碼4個基本過程(圖1(a))。幀內(nèi)編碼過程中引入失真的是變換和量化操作,因此可通過跳過變換和量化,僅保留幀內(nèi)預(yù)測和熵編碼來實現(xiàn)基礎(chǔ)的H.26X無損幀內(nèi)編碼[5](圖1(b))。
圖1 H.26X幀內(nèi)編碼過程Fig.1 H.26X intra-frame coding process
幀內(nèi)預(yù)測是H.26X無損幀內(nèi)編碼的核心部分。對每個預(yù)測單元(prediction unit,PU),H.26X執(zhí)行幀內(nèi)預(yù)測得到相應(yīng)的預(yù)測殘差Ri,j為
Ri,j=Pi,j-Ii,j
(1)
式中Ii,j表示原始像素值,Pi,j表示通過參考像素結(jié)合不同的幀內(nèi)預(yù)測方式得到的預(yù)測值。H.26X的幀內(nèi)預(yù)測模式包括平滑預(yù)測(DC模式、planar模式)和方向預(yù)測兩大類,隨著編碼標(biāo)準(zhǔn)的發(fā)展,預(yù)測模式的數(shù)量不斷增多。H.264僅使用9種預(yù)測模式[3],H.265增加到35種[2],H.266達到了67種[1]。
圖2展示了在H.265標(biāo)準(zhǔn)下經(jīng)過幀內(nèi)預(yù)測后的殘差圖像(數(shù)值整體平移128以繪制負值)。出于多種原因,盡管幀內(nèi)預(yù)測的準(zhǔn)確性不斷提高,殘差中仍然可能保留豐富的邊緣特征。首先,由于PU最小尺寸的限制,角度預(yù)測在圖像中紋理豐富的區(qū)域始終無法得到良好的預(yù)測結(jié)果;其次,當(dāng)被預(yù)測塊靠近參考像素的邊沿存在不連續(xù)性時,角度預(yù)測很可能會插入原始塊中本不存在的方向性條紋。
圖2 “KristenAndSara”第一幀及其幀內(nèi)預(yù)測的殘差(亮度)Fig.2 First frame of “KristenAndSara”and its intra-frame prediction residuals (luma)
針對預(yù)測殘差圖像中存在豐富的邊緣特征這一統(tǒng)計結(jié)果,本文提出了基于殘差中值邊緣檢測(residual median edge detection,R-MED)的無損幀內(nèi)編碼算法。算法通過對預(yù)測殘差進行二次預(yù)測,有效地壓縮了殘差圖像中豐富的邊緣特征,從而降低待編碼系數(shù)的整體能量,最終降低視頻碼率。
(2)
圖3 R-MED的預(yù)測策略Fig.3 Prediction strategy of R-MED
通過上述分析,證明R-MED適合應(yīng)用到H.26X殘差圖像的二次預(yù)測中。如圖1(c)所示,本文對經(jīng)過H.26X幀內(nèi)預(yù)測后,進行熵編碼前的預(yù)測殘差進行再處理。以PU為基本單位,將各PU的首行、首列作為參考點,對剩下的數(shù)據(jù)點逐點應(yīng)用R-MED算法并計算新的殘差Di,j
(3)
然后分別計算處理前后的殘差總能量:
(4)
(5)
最后選擇總能量較小的一組進行熵編碼。通過殘差的總能量判斷是否選用經(jīng)過二次處理的殘差是因為,H.26X在對預(yù)測殘差進行編碼前,需要使用哥倫布-萊斯碼或指數(shù)哥倫布碼對其進行二值化,二值化后碼字的長度將與殘差的絕對幅值呈指數(shù)關(guān)系[16]。圖4是一個4×4的預(yù)測單元經(jīng)過H.265+R-MED算法處理前后的效果,其殘差總能量明顯降低。
圖4 一個經(jīng)過R-MED處理的預(yù)測單元Fig.4 A prediction unit processed by R-MED
為了驗證R-MED算法的有效性,統(tǒng)計了在H.265標(biāo)準(zhǔn)下,部分測試序列第一幀經(jīng)過算法處理后整體能量的變化率。統(tǒng)計結(jié)果如表1所示,同時繪制測試序列“KristenAndSara”第一幀經(jīng)過算法處理前后的殘差圖像,如圖5所示。統(tǒng)計結(jié)果顯示單幀圖像的殘差能量平均降低67.9%,觀察“KristenAndSara”第一幀的殘差圖像發(fā)現(xiàn)邊緣特征極大減少,證明R-MED算法對預(yù)測殘差圖像有很準(zhǔn)確的預(yù)測能力。
表1 應(yīng)用H.265+R-MED算法后殘差能量的變化率Tab.1 Reduced ratio of residual energy processed by H.265+R-MED
圖5 “KristenAndSara”的預(yù)測殘差經(jīng)過R-MED處理后的結(jié)果(亮度)Fig.5 Output of prediction residual of “KristenAndSara”processed by R-MED (luma)
R-MED算法分別在H.265參考軟件HM-SCC-16[17]和H.266參考軟件VTM-12[18]中實現(xiàn),并在視頻聯(lián)合專家組制定的公共測試條件下使用全幀內(nèi)(all intra,AI)配置進行實驗。為了證明算法的適用性,測試序列使用專家組推薦的ClassA-ClassF共6類25個序列,測試序列的相關(guān)屬性及R-MED算法對比H.265及H.266的測試結(jié)果見表2、3。
表2 R-MED算法應(yīng)用在H.265及H.266的碼率優(yōu)化Tab.2 Bit rate optimization of R-MED algorithm applied in H.265 and H.266
與H.265參考軟件HM-16相比,經(jīng)過R-MED算法處理的視頻序列達到了最大18.45%,平均7.04%的碼率優(yōu)化,平均編碼時間僅增加4%,同時由于經(jīng)過處理的待編碼殘差能量大幅減少,緩解了后續(xù)熵編解碼器的壓力,因此平均解碼速度加快5%,另外還證明比HEVC-SCC擴展標(biāo)準(zhǔn)中的RDPCM性能更好;與H.266參考軟件VTM-12相比,視頻碼率達到了最大17.36%,平均5.98%的優(yōu)化,編碼時間平均增加17%,解碼速度提升17%,同時證明比H.266標(biāo)準(zhǔn)中的BDPCM性能更好。
此外,為了證明R-MED算法性能良好,在表4、5中給出了近年多種針對H.265無損幀內(nèi)編碼的優(yōu)化算法與R-MED算法的性能比較。表中數(shù)據(jù)指對比H.265跳過變換量化方案的優(yōu)化程度。由于大部分文獻并未給出完整的測試序列的實驗數(shù)據(jù),因此僅能對比表4所示的5個測試序列的性能。
表3 R-MED算法應(yīng)用在H.265及H.266的性能統(tǒng)計Tab.3 Performance statistics of R-MED algorithm applied in H.265 and H.266 %
表4 R-MED與其他算法的碼率優(yōu)化(對比H.265)Tab.4 Bit rate optimization of R-MED and other algorithms (versus H.265) %
表5 R-MED與其他算法的性能統(tǒng)計(對比H.265)Tab.5 Performance statistics of R-MED and other algorithms (versus H.265) %
上述算法中,文獻[11]提出的SAP+SWP2+DTM方案獲得了最佳的碼率優(yōu)化,但編解碼時間大幅增加。相比之下R-MED以增加少量編碼時間的代價獲得了可觀的碼率優(yōu)化,證明所提算法具有較高的實用價值。
針對H.26X系列編碼標(biāo)準(zhǔn)中,無損幀內(nèi)預(yù)測得到的殘差仍保留特殊的空間相關(guān)性,整體待編碼殘差能量較高的問題,提出了基于殘差中值邊緣檢測的無損幀內(nèi)編碼優(yōu)化算法。算法通過對預(yù)測殘差進行邊緣檢測得到高準(zhǔn)確度的預(yù)測值,由此計算得到新的能量大幅降低的殘差值。在H.265與最新的H.266標(biāo)準(zhǔn)的參考軟件中應(yīng)用提出的優(yōu)化算法,平均碼率分別降低7.04%和5.98%,編解碼時間變化細微,具有顯著的實用價值。同時該算法具有很強的通用性,可在H.26X系列標(biāo)準(zhǔn)中應(yīng)用,也可與各種幀內(nèi)預(yù)測優(yōu)化方法結(jié)合使用,甚至有可能在編碼結(jié)構(gòu)相似的數(shù)字音視頻編碼技術(shù)標(biāo)準(zhǔn)(audio video standard,AVS)、AV1(AOMedia Video 1)標(biāo)準(zhǔn)中應(yīng)用。不足的是,文中描述的算法暫時只能應(yīng)用在無損編解碼中,今后的工作將研究R-MED算法與其他優(yōu)化算法的聯(lián)合應(yīng)用,并將該方法拓展到有損編碼、幀間編碼。