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