蔡旭航 朱留存 張震 張恒艷 程敬迪
(1.揚州大學(xué)信息工程學(xué)院 江蘇省揚州市 225127 2.北部灣大學(xué)先端科學(xué)技術(shù)研究院 廣西壯族自治區(qū)欽州市 535011)
Kinect 相機是微軟推出的XBOX360 的一款外設(shè)。由于其實用性強,成本低廉等優(yōu)點,已經(jīng)被廣泛應(yīng)用于三維重建[1],目標跟蹤[2]等場合。深度圖是由深度相機獲取的一種存儲RGB 圖深度信息的圖像,Kinect 相機獲取深度圖主要通過紅外投射散斑和紅外探測器探測散斑來獲取場景的深度信息。然而使用Kinect 相機獲取的深度圖容易出現(xiàn)深度為0 的空洞區(qū)域。產(chǎn)生這種情況主要有兩個原因[3]:
(1)由于距離相機較近的物體會遮擋住較遠處的物體,而紅外投射的散斑無法投射到被當(dāng)前對象遮擋的對象上而導(dǎo)致紅外探測器無法捕捉到任何信息,從而使深度像素變?yōu)?,如圖1 所示。
(2)由于材料的不同會導(dǎo)致紅外光投射到物體表面后出現(xiàn)多種行為,而只有光吸收材料才能接收由Kinect 投射的散斑,當(dāng)遇到反光材料和透光材料時紅外探測器則無法接收到紅外投射器投射的紅外光如圖2(b)和圖2(c)所示。
為了解決直接用Kinect 獲取的深度圖像中存在大量空洞的問題,許多研究者都提出了深度圖像的修復(fù)算法。文獻[4]提出了一種像素濾波的方法,將5×5 濾波器模板分為內(nèi)帶和外帶。然后統(tǒng)計0像素周圍的有效像素,如果有效像素大于閾值,則出現(xiàn)最多的深度值將代替0 像素。該方法以高置信度填充像素值,但僅適應(yīng)于小空洞。聯(lián)合雙邊濾波是對雙邊濾波的改進,通過彩色圖像的引導(dǎo)對深度圖像進行濾波,文獻[5]就采用聯(lián)合雙邊濾波的方法進行深度圖像的空洞填充任務(wù),并且利用快速高斯變換替換高斯核函數(shù)使算法的運行速度提升。該算法對大面積空洞的填充效果較好,然而該方法降低了原始場景物體邊緣輪廓的清晰度。由于單一濾波器的局限性,而深度圖像的空洞類型不盡相同,因此有的研究者就提出了將多種濾波器結(jié)合進行深度圖像濾波的方法。文獻[6]提出利用超像素分割將圖像的深度劃分為無空洞區(qū)域、小空洞區(qū)域、大空洞區(qū)域和全空洞區(qū)域四種,然后針對不同的區(qū)域分別使用不同的濾波方法修復(fù)空洞。由于使用Kinect 相機采集的圖像是連續(xù)幀,而相鄰幀間圖像的相機位姿變化不大,因此文獻[7]提出了一種利用多幀深度圖的時間相關(guān)性檢測背景區(qū)域,結(jié)合彩色圖像的高斯混合模型,填補空洞區(qū)域的像素。
由于Kinect 獲取的深度圖像空洞噪聲類型較為復(fù)雜,而單一類型的修復(fù)方法無法面面俱到,因此本文先將圖像中的空洞噪聲分類再實施修復(fù)。為了提高運行速度,同時也為了提高深度修復(fù)的準確性,我們提出了在法線感知鄰域內(nèi)修復(fù)深度圖像。
圖1:前景遮擋導(dǎo)致深度圖黑影區(qū)域圖示
圖2:對于不同材料紅外光束行為圖示
前面提到,由于Kinect 相機自身特點的原因,在獲取深度圖像時會出現(xiàn)兩種類型的空洞噪聲:由前景物體遮擋產(chǎn)生的空洞噪聲和由物體表面反射或折射產(chǎn)生的空洞噪聲。由前景物體遮擋產(chǎn)生的空洞噪聲主要出現(xiàn)在物體的邊緣區(qū)域,并且這類空洞噪聲一般都比較狹長如圖3(b)中的(1)所示。由表面反射產(chǎn)生的空洞噪聲主要出現(xiàn)在物體的表面,并且這類空洞噪聲面積較大如圖3(b)中的(2)所示。
在深度圖中,除了上述這兩類空洞噪聲以外還有一種,這類噪聲的出現(xiàn)主要是因為Kinect 相機的RGB 圖像傳感器和深度圖像的傳感器有略微的偏移,對于同一幀的深度圖像和彩色圖像坐標無法完全匹配,需要通過配準使它們的坐標對齊,然而這一操作的結(jié)果會導(dǎo)致在深度圖像的邊緣部分會出現(xiàn)大面積深度為0 的空洞噪聲如圖3(b)中框(3)所示,本文將這一類噪聲稱為匹配深度噪聲。
圖3:深度圖像中的三類空洞噪聲
圖4:法線感知非局部鄰域示意圖
圖5:深度圖修復(fù)結(jié)果比較
在進行正式的濾波之前我們通過Kinect 自帶的算法獲取已經(jīng)匹配好的深度與彩色圖像,并且在這一過程中獲取匹配深度噪聲的標記,在本文種我們將這一種空洞噪聲稱為第一類噪聲。為了獲取深度圖中物體邊界空洞噪聲我們首先對RGB圖像實行紋理濾波處理,這一步驟是為了使后面的邊緣檢測算法盡量不受到物體表面紋理的影響,我們采用文獻[8]提出的紋理濾波方法,該方法在濾除物體表面紋理的同時能很好地保留物體的邊界。然后我們使用Sobel 算子對圖像進行邊緣檢測獲得圖像中物體的邊緣,再將檢測得到的物體邊緣膨脹后對應(yīng)到深度圖像中。當(dāng)深度圖中像素為0 且檢測為物體邊緣時,就是由前景遮擋產(chǎn)生的空洞噪聲,本文將這一類噪聲稱為第二類噪聲。對于不屬于一類和二類噪聲的0 值深度,我們將其標記為第三類噪聲,該類噪聲多為存在于物體表面由光反射或吸收的原因而產(chǎn)生的噪聲。
在我們的方法中,我們需要在一個足夠大的窗口內(nèi)進行搜索,同時我們計算在這一窗口內(nèi)深度非0 點的深度置信度。在計算深度置信度前我們需要確定一個非局部鄰域,對于每一個待修復(fù)的深度像素點p,我們記它的非局部鄰域為,其中q 是鄰域內(nèi)的點。受到文獻[9]的啟發(fā)我們根據(jù)表面法線來定向搜索區(qū)域,使搜索區(qū)域在屏幕空間中各項異性,從而具有法線感知。該策略用于計算與待修補深度像素處于同一空間平面內(nèi)的深度非0 像素點的深度置信度。
法線感知的空間切平面的二維圖像投射范圍的計算如式(1):
假設(shè)像素點p 為(xp,yp)T它的鄰域像素點q 坐標為(xq,yq)則有:
其中x=(xp,yp)T,是協(xié)方差矩陣。
由于考慮到圖像空間中的各向同性分布則有:
其中r 是包括陰影和非陰影樣本的采樣半徑。雖然樣本分布應(yīng)該是空間各向同性的,但是由于真實場景中的大多數(shù)表面不面向觀看方向,這導(dǎo)致圖像空間中的各向異性分布。假設(shè)樣本各向同性地分布在表面切平面上,然后基于以下等式將它們轉(zhuǎn)換到圖像空間:
其中x'表示曲面切面中的坐標。M 表示從切平面到圖像平面的旋轉(zhuǎn)矩陣變換,該矩陣可以通過表面法線計算得到。由(4)式可以得到x-u=M'x',同時M'是從M 中提取前兩行和前兩列形成的。圖像平面的協(xié)方差矩陣∑由下式計算得到:
法線感知的非局部鄰域其實就是將每個像素構(gòu)建的圓形空間法切面投射到二維圖像中變成橢圓形,如圖4 所示。使用法線感知的非局部鄰域不僅縮小了鄰域像素的搜索范圍,減少了運行時間,而且保證了查找的鄰域像素與中心像素點處于相同的空間平面上,提高了深度修補的準確性。
在進行修復(fù)階段我們使用法線感知非局部鄰域窗口遍歷深度圖中每一個深度值為0 的像素點,由于深度值為0 的像素點的法線無法計算,我們使用該像素點距離最近的非0 像素點的法線作為該像素點的法線計算該點的非局部鄰域。對于每一個0 像素點,計算其非局部鄰域內(nèi)每個深度值非0 像素點的深度置信度。對于不同類型的深度空洞由于其特點不同,我們采用不同的深度置信度計算策略。對于第二類噪聲,我們使用式(6)計算點p 和其非局部鄰域內(nèi)的點q 之間的權(quán)重系數(shù)。該權(quán)重表明與中心點灰度接近且距離中心點越近的像素點權(quán)重越大。其中x 和y 分別表示像素的橫坐標和縱坐標,I 表示像素的灰度值,σd和σr都是高斯函數(shù)的標準差。
對于第三類噪聲,由于該類空洞噪聲是由物體表面材料的反射或吸收效應(yīng)引起的(即表面的反射率),而反射率可以通過圖像的色度表示[10],為此我們在第三類噪聲的權(quán)重系數(shù)中加入色度權(quán)重的影響,色度權(quán)重的計算如式(7)所示。該式中,ch 表示像素點的色度,σc同樣是高斯函數(shù)的標準差。得到色度權(quán)重后再通過式子(8)得到第三類噪聲的權(quán)重系數(shù)。
在空洞噪聲的修復(fù)階段,我們將針對不同類型的空洞采用不同的修復(fù)策略。
(1)對于第一類噪聲,由于它是由深度圖與彩色圖像匹配產(chǎn)生的,因此在彩色圖像中有幫助恢復(fù)深度圖中空洞噪聲的信息,同時由于該類噪聲面積較大,且在深度圖中沒有對應(yīng)位置相似的信息,因此對于該類噪聲我們考慮使用RGB 圖像引導(dǎo)的聯(lián)合雙邊濾波對該類噪聲進行修復(fù)。
(2)對于第二類噪聲,當(dāng)非局部鄰域遍歷到該類噪聲時,我們首先計算鄰域內(nèi)所有深度非0 像素點的深度權(quán)重,并且挑選出5個權(quán)重最大的深度。由于第二類空噪聲是由前景物體遮擋后景物體所產(chǎn)生的,因此需要修復(fù)的噪聲也是深度值較大的后景噪聲,因此在挑選的5 個權(quán)重最大的深度里,我們選擇深度最大值作為待修復(fù)點的深度。
(3)對于第三類噪聲,我們同樣計算待修復(fù)點的非局部鄰域內(nèi)所有深度非0 像素點的深度權(quán)重,最終挑選權(quán)重最大的深度值作為待修復(fù)點的深度值。
為了驗證本文算法的可行性,實驗選取Middlebury 標準數(shù)據(jù)庫[11]和RGB_D 數(shù)據(jù)庫中的深度圖像進行修復(fù),并且將修復(fù)的結(jié)果與文獻[4]和文獻[5]算法的結(jié)果進行比較。
圖5(c)是文獻[4]算法的結(jié)果,該算法對于深度圖中較小的空洞具有較好的修復(fù)結(jié)果,然而對于大面積空洞該算法的修復(fù)效果并不明顯。從圖5(c)(1)和圖5(c)(4)可以看出這一結(jié)論。圖5(d)是文獻[5]算法的結(jié)果,該算法可以修復(fù)在物體表面的一些大面積的深度空洞,但是對于由圖像匹配產(chǎn)生的第一類空洞修復(fù)效果較差,邊緣不清晰。該結(jié)論可以從圖5(d)的(2)、(3)和(4)行可以看出。從圖5(e)可以看出,本文算法對于三類空洞噪聲都具有較好的修復(fù)結(jié)果,同時從圖1(e)的(3)行的對比可以看出,對于圖像右下角的電腦顯示屏文獻[4]的算法無法修復(fù)大面積的空洞噪聲,而文獻[5]的算法雖然可以修復(fù)大面積的空洞噪聲,但是修復(fù)后的物體邊緣被模糊化,而本文算法在修復(fù)空洞的同時也能很好的保留物體的深度邊緣不被模糊化。
針對Kinect 相機采集到的深度圖像存在空洞噪聲的問題,本文提出了一種基于法線感知非局部鄰域的噪聲去除方法。該方法首先將深度圖中空洞噪聲進行分類,然后根據(jù)不同噪聲的類型在非局部鄰域內(nèi)采用分別采用聯(lián)合雙邊濾波和不同的深度置信度策略填充空洞噪聲。實驗結(jié)果表面,該算法可以有效填充大面積的空洞噪聲,同時也較好的保留了物體的邊緣。該算法可以作為通過深度圖像獲取點云前的預(yù)處理工作,具有一定的實際意義。