鐘國韻, 楊德明, 何月順, 張 軍, 劉梅鋒
(東華理工大學(xué) 信息工程學(xué)院,江西 南昌 330013)
隨著3D視頻技術(shù)的發(fā)展,人們發(fā)現(xiàn)3D視頻帶來比二維視頻更逼真的視覺效果。但是3D視頻數(shù)據(jù)量是巨大的,尤其是高清甚至超高清3D視頻,其存儲和網(wǎng)絡(luò)傳輸是個巨大的負(fù)擔(dān)。為了解決其數(shù)據(jù)量大的問題,視頻編碼專家組(VCEG)和活動圖像專家組(MPEG)組成聯(lián)合視頻組(JVT),在高效視頻編碼(HEVC)第三版本中加入了3D-HEVC標(biāo)準(zhǔn)(Sullivan et al.,2012)。該標(biāo)準(zhǔn)編碼的3D視頻是由多視點視頻(MVD)加上深度圖組成(Merkle et al.,2007),該標(biāo)準(zhǔn)本身由H.264(Wiegand et al.,2003)同一標(biāo)準(zhǔn)中多視點視頻編碼(MVC)技術(shù)發(fā)展而來(Sarker,2014;Vetro et al.,2011)。得益于該標(biāo)準(zhǔn)的制定,3D視頻才能更高效地進行存儲和網(wǎng)絡(luò)傳輸。
3D-HEVC增加了深度建模模式(DMM),目前DMM包括DMM1模式和DMM4模式(Muller et al.,2013),而DMM模式帶來了巨大的計算復(fù)雜度。與HEVC方面研究人員提出的眾多快速壓縮編碼方法(鐘國韻等,2013;劉梅鋒等,2014)類似,許多專家學(xué)者投入到降低計算復(fù)雜度方面的研究,也提出了較多有效方法。3D-HEVC快速視頻幀內(nèi)編碼方法主要包括跳過DMM模式和模式判決兩種,前者利用邊緣分類(Park,2015)、空間相關(guān)性(Zhang et al.,2015)、四叉樹(Zhang et al.,2014)、編碼單元(CU)紋理(Chen et al.,2019)、邊緣檢測(李強等,2020)等各種信息來跳過DMM模式;后者通過計算殘差(Zhang et al.,2016)、模重因子(Shen et al.,2018)、深度灰度相似性(Lei et al.,2018)、方差平方歐式距離(Zhang et al.,2018)、多視點合成(Dou et al.,2017)、蛙跳算法(Jaballah et al.,2016)等方式來進行模式判決。
盡管現(xiàn)已報道的方法能較好地降低3D視頻深度圖編碼計算的復(fù)雜度,但是對于DMM模式的角度選擇,仍沒有較準(zhǔn)確的判決。擬采用直線檢測的方法,一方面可以依據(jù)它跳過DMM模式的遍歷,另一方面,可根據(jù)直線的角度,粗略選擇少數(shù)幾種角度的DMM1模式,從而可跳過大部分模式計算過程,以此來實現(xiàn)大幅降低計算復(fù)雜度的目標(biāo)。
Hough變換為一種圖像特征提取技術(shù),可用于檢測圖像中不同長度的直線,它利用兩個不同坐標(biāo)系之間的變換將一個坐標(biāo)上相同形狀的直線映射到另一個坐標(biāo)的一個點上形成峰值,通過設(shè)定峰值高度閾值判斷第一個坐標(biāo)上的直線。眾所周知,一條直線可以在兩種坐標(biāo)上進行表示:①在笛卡爾坐標(biāo)系上,可以用斜率和截距表示;②在極坐標(biāo)系上,可用極徑和極角(r,θ)表示,如圖1所示。
圖1 Hough 變換兩種坐標(biāo)對應(yīng)關(guān)系Fig.1 Relationship between two coordinates for Hough transformation
因此,對于Hough變換,可以采用另一種極坐標(biāo)來表示:
(1)
上式經(jīng)過化簡則可得到:
r=xcosθ+ysinθ
(2)
從以上式子可以看出,笛卡爾坐標(biāo)中的一個點,映射到極坐標(biāo)上是一條曲線,因此,多個點連成的一條直線,可以通過在r-θ坐標(biāo)系上尋找交于一點的曲線數(shù)量來檢測,越多的曲線交于這點就意味著在這條直線上有越多的點。于是,可以通過設(shè)置直線上點的數(shù)量閾值來定義多少條曲線交于一點才算檢測到一條直線。
3D-HEVC中深度圖的幀內(nèi)預(yù)測編碼共有37種模式,其中35種模式是繼承了HEVC幀內(nèi)預(yù)測模式,模式0為Plannar模式,模式1為DC模式,模式2至34為Angular模式(Sanchez et al.,2016)。除了HEVC的35種模式,另外還有兩種DMM模式,分別為DMM1模式和DMM4模式,如圖2所示。陰影部分與白色部分像素分別用各自區(qū)域內(nèi)常量代替區(qū)域內(nèi)所有像素值。DMM1模式的分割線方式如圖2c所示,其分割角度數(shù)量巨大,其中4×4到32×32尺寸分辨率,分割角度數(shù)量分別為86、782、1 392和1 503,即每種角度下均需進行編碼,其計算量非常大。
圖2 DMM模式示意圖Fig.2 DMM diagrama.DMM1模式;b.DMM4模式;c.DMM1分割線
深度圖的特點是邊緣相比紋理圖要光滑得多,從細(xì)節(jié)處觀察,大部分邊緣均為直線或接近直線。另外, 3D-HEVC深度圖的幀內(nèi)預(yù)測編碼模式中,由于DMM1模式計算復(fù)雜度較大,其分割模式采用直線。因此,采用Hough變換來檢測3D-HEVC視頻序列中深度圖邊緣直線,如圖3為測試序列Undo Dancer中一幀深度圖經(jīng)過Hough變換后檢測到的直線段。從圖3中可以看出,深度圖中幾乎所有的直線邊緣部分均被檢測出來,在正常的3D-HEVC深度圖的幀內(nèi)預(yù)測模式選擇中,這些直線邊緣部分的預(yù)測單元(PU)分塊會在DMM1模式選擇過程中用直線分割為兩部分。
圖3 測試序列Undo Dancer深度圖中一幀圖片經(jīng)Hough變換檢測到直線段Fig.3 Line checked by Hough transformation in one frame of the depth sequence of the test sequence Undo Dancer
3D-HEVC中,深度圖中DMM模式包括DMM1模式和DMM4模式,通過Canny邊緣檢測來判決DMM模式的跳過,對于不能跳過的DMM模式,進一步通過Hough變換來跳過DMM1模式。
2.3.1 利用邊緣檢測跳過DMM模式
Canny邊緣檢測分別采用水平和垂直兩個模板對圖像進行卷積來求某像素點的水平和垂直梯度,其中模板Gx和Gy為:
(3)
總的梯度幅值為:
(4)
為了方便計算,取其近似值:
G=|Gx|+|Gy|
(5)
OPENCV庫中的Canny算子中有2個閾值T1和T2,當(dāng)幅值G超過閾值T2時,判決為邊緣;當(dāng)小于T1時,則排除該像素;當(dāng)幅值介于兩者之間時,若該像素與高于閾值T2幅值相鄰,則判決為邊緣像素。以上規(guī)則符合算法的需求,因此,當(dāng)PU分塊內(nèi)無邊緣像素時,則可跳過DMM模式的計算遍歷。
2.3.2 利用Hough變換檢測直線跳過DMM1模式
在3D-HEVC中深度圖幀內(nèi)預(yù)測的DMM1模式中,筆者采用Hough變換在深度圖中檢測直線,用該直線把PU分塊分割成兩部分,并以此為依據(jù)對當(dāng)前PU分塊進行DMM1模式的判決,因此,需要從直線在PU分塊內(nèi)部所處的位置來分析。
對于當(dāng)前PU分塊,只有當(dāng)一條直線穿過它,在PU分塊中間沒產(chǎn)生任何折線時,才能對應(yīng)DMM1模式。如圖4所示,直線的首尾點分別為A和B,其中線段CD在PU分塊之內(nèi)。
圖4 直線穿過PU分塊情況Fig.4 Situation where the PU is passed through by one line
若出現(xiàn)如圖5所示情況,則可跳過DMM1模式的計算遍歷。圖5a中PU分塊內(nèi)無直線穿過,因此可以跳過DMM1模式的計算遍歷,大部分區(qū)域均為該情況,因此可以較大程度降低計算復(fù)雜度。圖5b中PU分塊內(nèi)有直線,但是直線段的首尾均在分塊內(nèi)部,這種情況下,也不滿足DMM1的條件。圖5c也不滿足條件。
圖5 各種可跳過DMM1模式的情況Fig.5 Various situations that the DMM1 mode can be skippeda.PU分塊內(nèi)無直線;b.PU分塊內(nèi)部有1條直線;c.PU分塊有2條以上直線穿過
對于如圖6所示的CU分塊,其模式選擇流程如下:
圖6 CU分塊分級情況下DMM1模式跳過判決Fig.6 DMM1 mode skipping decision under CU block dividing
(1) 當(dāng)內(nèi)部有直線段ad,當(dāng)前CU分塊的PU分塊可以跳過DMM1模式的計算遍歷。
(2) 把當(dāng)前CU分為A、B、C和D等4個相同的CU分塊。
(3) 當(dāng)進行對應(yīng)的PU分塊模式選擇時,其中:①分塊A由于內(nèi)部有線段ab,端點a在PU分塊內(nèi)部,因此A可以跳過DMM1模式計算遍歷。②分塊B由于內(nèi)部無直線,也可以跳過。③分塊C只有一條直線穿過,因此,分塊C需要進行DMM1模式的計算遍歷。④與分塊A情況類似,分塊D也可以跳過DMM1模式的計算遍歷。
為了便于分析,將每個PU分塊的最外圍一圈像素標(biāo)上序號,如圖7所示,以8×8尺寸的PU分塊為例,共有28個點。當(dāng)一條直線穿過當(dāng)前PU分塊時,可利用Hough變換檢測到該直線,設(shè)該直線與PU分塊相交于點3和點12,考慮到Hough變換中可能存在的誤差,除了直線(3,12),即點3與點12相連的直線,需另外計算遍歷另4條直線的模式:直線(4,11),(4,13),(2,11)和(2,13),如圖7中各條虛線所示。若推廣到各種尺寸的PU分塊,設(shè)Hough變換檢測到深度圖內(nèi)的直線穿過PU分塊直線為(i,j),則在DMM1模式角度計算遍歷過程中,除了直線(i,j),還需另外計算遍歷4條直線:直線(i-1,j-1),(i+1,j+1),(i-1,j+1)和(i+1,j-1),從而跳過其他大量角度的計算遍歷,大幅降低計算復(fù)雜度。
圖7 PU分塊內(nèi)直線計算遍歷角度Fig.7 Line angles computed in PU block
總體流程如圖8所示。對于當(dāng)前深度圖的DMM模式選擇,先對該圖進行邊緣檢測,獲得深度圖的邊緣信息二值圖。然后對二值圖進行Hough變換,檢測到深度圖中邊緣的直線段信息并保存。在當(dāng)前CU分塊PU的DMM模式選擇過程中,先判斷當(dāng)前PU分塊中是否有邊緣,若否,則跳過DMM模式(包括DMM1和DMM4模式)的遍歷;若有,則判斷當(dāng)前PU分塊中是否只有1條直線穿過,若是,則根據(jù)穿過直線的角度和位置,進一步計算遍歷與該直線角度接近的4條直線的DMM1編碼模式,把率失真代價最小的模式加入到候選模式中;若否,則跳過DMM1模式選擇。最后判決當(dāng)前CU分塊尺寸是否為8×8,若是,則結(jié)束;若否,則把當(dāng)前CU繼續(xù)劃分為4個相同的CU,每個CU繼續(xù)進行上述步驟。
圖8 總體流程圖Fig.8 Whole flow chart of the proposed method
采用3D-HEVC的標(biāo)準(zhǔn)測試軟件HTM16.2對該方法進行性能測試。測試硬件配置如下:CPU為i7 9700,主頻為4.7 GHz,內(nèi)存為64 G,WINDOWS 64位系統(tǒng),測試序列為Balloons、Kendo、Nespaper_CC、GT_Fly、Poznan_Hall2、Poznan_Street、Undo_Dancer和Shark等8個標(biāo)準(zhǔn)序列(Mueller et al.,2014),由于研究的是幀內(nèi)預(yù)測方法,故采用全幀內(nèi)預(yù)測編碼的模式,量化步長方面,紋理圖的QP分別設(shè)為25、30、35和40,深度圖的QP分別設(shè)為34、39、42和45,每個視頻序列包含3個紋理視頻和3個深度視頻,幀數(shù)取前100幀。實驗測試性能指標(biāo)采用峰值信噪比差(BD-PSNR)、比特率差(BDBR)(Bjontegaard,2001)和時間差(DT)等3項,其中BD-PSNR是指在相同實驗條件下,在PSNR-Y客觀視頻質(zhì)量方面的差異;BDBR是指在相同實驗條件下,比特率降低比例;DT是指該方法相比標(biāo)準(zhǔn)測試軟件HTM,在編碼時間方面所節(jié)省時間的比例,其公式為:
(6)
式中,Tref為標(biāo)準(zhǔn)測試軟件HTM編碼時間,Tpro為提出方法編碼時間。
深度圖的Hough變換方面,采用OPENCV庫中的cvCanny(image,edges,threshold1,threshold2,aperture_size)函數(shù)檢測深度圖的邊緣,其中5個參數(shù)分別指的是單通道輸入圖像、單通道存儲邊緣的輸出圖像、第一個閾值、第二個閾值、Sobel算子內(nèi)核大小。為了盡可能多獲得深度圖的邊緣信息,可將低閾值設(shè)置為20,高閾值設(shè)定為低閾值的3倍,取值為60,Sobel內(nèi)核大小設(shè)定為3。
Hough變換采用OPENCV庫中的cv::HoughLinesP(src,lines,rho,theta,threshold,minLineLength,maxLineGap)函數(shù)檢測深度圖的直線,其中7個參數(shù)分別指的是輸入圖像、輸出的極坐標(biāo)、生成極坐標(biāo)時候的像素掃描步長、生成極坐標(biāo)時候的角度步長、閾值、最小直線長度、最大間隔,其中rho取值為1,theta取值CV_PI/180,閾值指的是只有獲得足夠交點的極坐標(biāo)點才被看成是直線,其取值為40,最小直線長度取值為15,最大間隔取值為10。
這與Jaballah等(2016)和李強等(2020)在思路方面類似,均通過檢測深度圖中的邊緣信息,然后利用邊緣信息跳過DMM模式的遍歷,以及在不能跳過DMM模式的情況下僅選擇少數(shù)幾種DMM模式編碼。因此,筆者選擇與這2種方法進行性能方面的比較(表1)。
表1 全幀內(nèi)預(yù)測模式下3種方法性能比較Table 1 The performance comparison of three methods on all intra mode
從表1的實驗結(jié)果中可以看出,相比李強等(2020)、Jaballah等(2016)方法,筆者提出的方法在保持視頻質(zhì)量不變的前提下,視頻壓縮率有一定的提升,編碼時間則有顯著的降低,總體提升了性能。這主要因為本次研究采用Hough變換檢測到的直線與DMM1模式中分割直線角度很接近,這帶來了更小的編碼誤差,因此,在最終編碼時比特率的上升也更少。同時,不僅跳過了許多情況的DMM模式,而且Hough變換檢測到的直線與DMM1模式中分割直線角度近似。因此,在DMM1模式判決中僅需計算遍歷5種模式,大大降低了編碼時間。
筆者提出了通過判決當(dāng)前PU分塊內(nèi)部是否有直線從而跳過大量DMM模式的遍歷計算過程方法。該方法在利用Canny算子檢測邊緣信息的基礎(chǔ)上,根據(jù)Hough變換檢測到的直線的位置和角度,給出了當(dāng)前PU分塊中DMM模式和DMM1模式的模式選擇過程,有效跳過大量冗余的模式遍歷計算復(fù)雜度。實驗結(jié)果顯示,相比目前主流快速模式選擇方法,該方法能在保持視頻質(zhì)量和比特率的前提下,較大幅度地降低編碼時間。