操宣鵬 陳一民
(上海大學計算機工程與科學學院 上海 200444)
?
基于輪廓的kinect深度圖像的空洞填補
操宣鵬陳一民*
(上海大學計算機工程與科學學院上海 200444)
摘要針對Kinect獲得深度圖噪聲的特點,以及現有去噪算法存在的問題,提出一種基于輪廓的自適應非對稱高斯濾波方法。該方法針對Kinect能夠同時獲得深度圖像和彩色圖像的特點,利用彩色圖找到場景中物體的輪廓;在對深度圖進行填補時,利用輪廓選取合適的有效點;選取的有效點是非對稱的,所以需要改變高斯濾波的對稱性;另外,改變高斯濾波的尺度,使其隨著被填補區(qū)域深度值的變化而變化,使得高斯濾波具有自適應特性。通過實驗對比,表明該方法能準確地填補深度圖的空洞,同時還能很好地保護圖像中邊緣信息。
關鍵詞深度圖空洞輪廓自適應非對稱
0引言
增強現實AR(augmented reality)技術[1]是一種利用計算機系統(tǒng)產生三維信息來增強用戶對現實世界感知的新技術。在增強現實中,虛擬物體模型的建立與真實感繪制效果會對用戶的感知能力產生影響。從用戶所處的真實場景中準確地重建出真實物體的三維模型在增強現實中占有重要的地位。
在三維模型重構中,深度圖的準確獲取是非常關鍵的一點,是后續(xù)所有工作的基礎。利用Kinect來獲的深度圖像中,噪聲較傳統(tǒng)掃描儀要大,主要分為兩部分:一是噪聲點,是指深度圖像中沒有獲得深度值的點狀區(qū)域,它是Kinect隨機生成的,具有不確定性;二是空洞,是指深度圖像中未獲得深度值的塊狀區(qū)域,它是由于Kinect的紅外發(fā)射器和接收器的位置不同,導致景深較大物體在靠近景深較小物體邊緣的時候,深度信息不能被獲取,形成了較大面積的空洞。這種情況形成的空洞在不改變Kinect和場景相對位置時,是不能直接獲得,只能通過選擇鄰域中的有效深度點進行計算得到。中值濾波算法,Tomasi[2-5]提出的雙邊濾波算法,Chang、Moulin[6-8]等提出的高斯濾波對于彩色圖像有較好的表現。但是在深度圖中,這些算法不能很好地填補大范圍空洞。Camplani M[9]等提出了基于雙邊濾波改進的時空空洞填補策略,但是該方法時間復雜度太高。
本文針對上述問題,提出了一種基于輪廓的自適應非對稱高斯濾波算法(OAAG),較好地解決上述問題。
1基于輪廓的OAAG算法空洞填補
本文提出的算法基本思想是:首先,對Kinect進行標定;然后對獲得的同一場景中一系列圖像進行處理,在去除零星的噪聲點的同時,獲得場景的模板深度圖像;再利用獲取的彩色圖片取得場景的輪廓圖;最后利用OAAG算法對模板深度圖像的空洞進行填補,得到最終的深度圖像。
1.1深度圖噪點去除
定義Di(m,n)是獲得的彩色圖對應Kinect獲得的一系列深度圖,深度圖有M×N個點,那么Di(m,n)∈Q,其中:
Q={Di(m,n)|m∈[1,M]∩n∈[1,N],i∈{1,2,3,…}}
從Kinect視頻流中取出n幀連續(xù)深度圖像:
D1,D2,…,Dn,點(m,n)在這n幀圖像中相應位置值定義為:d1(m,n),d2(m,n),d3(m,n),…,dn(m,n)。
(1)
式(1)表示di(m,n)所表示的值是否為有效值,在默認的模式下,(0.8~4 m)為有效深度范圍;在近模式下,(0.4~3.5 m)為有效深度范圍。計算n幅深度圖像中該點深度有效的個數Ssum,如果Ssum大于我們給定的閾值則Sth這個點可以被填補,然后計算出像素點n副圖像中的平均值davg(m,n):
(2)
然后把得到davg(m,n)依次記錄到深度模板Dv中對應的位置;否則丟棄。把最后得到的有效的點都記錄得到被填補空洞的深度圖模板Dv:
DV={davg(m,n)|m∈(1,M),n∈(1,N)}
(3)
1.2計算RGB圖像的梯度圖和提取輪廓
定義C(m,n)表示彩色圖像轉換的圖像中,每個點的梯度變化率,C(m,n)∈P,其中P={C(m,n)|m∈[1,M]∩n∈[1,N]} 。若要得到很好的邊緣信息往往需要達到亞像素級別。
首先將彩色圖像按照式(4):對圖像進行灰度化。
Gray=x×B+y×G+z×R
(4)
其中x+y+z=1,x、y、z的選取根據圖像選取;然后對灰度圖進行輪廓提取。圖像中邊緣通常是灰度值急劇變化部分,而梯度值反映為一階導數的二維等效函數式。本文采用改進的Canny算法[10]進行輪廓提取。x、y方向的梯度計算公式:
(5)
在改進的Canny算法中,對于梯度的計算選取的是Isotropic Sobel模板[11],x、y方向的方差fx(m,n)、fy(m,n)分別為:
fx(m,n)=2I[m+1,n]-2I[m-1,n]+I[m+1,n+1]-I[m-1,n+1]+I[m+1,n-1]-I[m-1,n-1]fy(m,n)=2I[m,n+1]-2I[m,n-1]+I[m-1,n+1]-I[m-1,n-1]+I[m+1,n+1]-I[m+1,n-1]
(6)
其中:I[m,n]=(▽G(m,n))×davg(m,n)=▽(G(m,n)×davg(m,n))G(m,n)是圖像高斯平滑濾波核;f(m,n)為原像素點的值。我們得到的該點的幅值方向:
(7)
θ(m,n)=arctan(fy[m,n]/fx[m,n])
(8)
Isotropic Sobel算子不僅能解決計算梯度幅值時準確邊緣定位問題,還能抑制噪聲。
利用插值法改進傳統(tǒng)的Canny算法中非極大值抑制,根據該點的fx、fy符號、方向以及θ值進行選取插值的點,最后得到:
(9)
其中r(H1)、r(H2)、r(H3)、r(H4),分別為該點四周選取的插值點的幅值,若r(m,n)>X1、r(m,n)>X2同時成立,則r(m,n)為極大值點。最后對梯度進行雙閾值處理得到輪廓。
1.3OAAG權值計算
對獲得的深度模版進行空洞填補:設置一個W:Z×Z的滑動窗口,對窗口內的空洞點進行填補。首先判斷窗口內的Davg的比例Davg% ,即窗口內有效的深度值點的個數和窗口內總的點數比例,如果Davg%小于給定的閾值Dth%。那就暫時不對這個窗口內的中心點進行填補,等待下一次遍歷時候處理;如果大于Dth%,則再判斷窗口中是否有輪廓點,如果沒有輪廓點,則對中心點進行立即填補,如果含有輪廓點,那么這些輪廓信息會把窗口內的深度點分割成幾個部分,需要分別對這幾個部分的中心點進行填補,分別對這些部分的有效點比例進行計算,這個比例應該是每個部分的有效像素點個數和該部分總的像素點個數的比例??催@個比例是否大于給定的閾值Dth%,若小于閾值,則暫時不對該部分中心點進行填補;若大于閾值,則對這部分的中心點進行填補。
基于輪廓的自適應非對稱高斯濾波(OAAG)鄰域各點的權值計算表達式為:
(10)
其中:
(11)
式中,ε需要用實驗確定。若被填補的點的窗口中沒有輪廓,則g(Z)=1。
若被填補的點的窗口中有輪廓,則:
(12)
對權值進行歸一化:
(13)
式中,W(m,n),即為最后的權值。
n為窗口內有效深度點個數。窗口每次移動一個像素,窗口遍歷完所有深度點后,判斷填補的效果是否達到要求,若沒有,則根據對效果的需求選擇需要的迭代次數,直至得到最后的深度圖Dlast。
算法的流程圖如圖1所示。
圖1 算法流程圖
2實驗結果和比較
在實驗之前,首先對Kinect進行標定和對齊,以便獲取的彩色圖和深度圖能夠對齊。
2.1本文算法與傳統(tǒng)濾波算法比較
目前常見的深度圖去噪和空洞填補的方法有中值濾波、雙邊濾波、高斯濾波等。下面是分別用這些傳統(tǒng)的去噪算法和OAAG算法對Kinect獲得的深度圖進行空洞填補,并進行比較?;瑒哟翱谠O為5×5。
圖2為深度圖對應的彩色圖,圖3是根據改進的Canny算法,從彩色圖中獲取的輪廓圖。
圖2 彩色圖像 圖3 輪廓提取
圖4、圖5分別是深度模版圖所對應的Matlab顯示的立體視圖和平面視圖,在圖5中可以很直觀地看出對應輪廓的部分出現了較大面積的空洞;對應在Matlab中,x、y軸表示該點在深度圖中對應的坐標位置,單位是一個像素;z軸表示深度圖中的深度值,單位是一個灰度值(深度值映射到灰度圖像的一個像素值)。圖像4中純黑色部分表示空洞。不同的灰度值代表著不同的深度。
圖4 深度圖(Matlab) 圖5 深度圖原圖
圖6和圖7分別表示中值濾波后深度圖由Matlab顯示的立體效果圖和平面效果圖,從平面圖中可以看出對深度圖中零星的噪聲點處理的很好,但是對于空洞的填補效果比較差,并且在邊緣處有明顯的模糊。對空洞處理效果很差。
圖6 中值濾波多次迭代效果(Matlab) 圖7 中值濾波迭代多次效果
圖8和圖9分別表示深度圖雙邊濾波處理后過后Matlab立體顯示和平面顯示的效果圖。從兩個效果圖中可以看出圖像邊緣被明顯的模糊,但空洞并沒有很好的得到填補。
圖8 雙邊濾波效果(Matlab) 圖9 雙邊濾波效果
圖10和圖11分別表示深度圖高斯濾波多次迭代過后由Matlab立體顯示和平面顯示的效果圖。傳統(tǒng)高斯濾波對圖像邊緣的模糊過于嚴重,多次迭代過后邊緣基本模糊不清。
圖10 高斯濾波多次迭代效果(Matlab) 圖11 高斯濾波迭代多次效果
圖12和圖13分別是OAAG對空洞填補完成后,由Matlab顯示的立體顯示和平面顯示圖。在圖12中,在相應的輪廓邊上的顏色分別和輪廓兩邊的顏色相同,也就是輪廓兩邊的深度值分別和鄰近的深度值相近。可以得出該算法對空洞填補的深度值和實際值相近,很好地對空洞進行了填補。圖13中顯示出的輪廓和圖3中的輪廓一致,并且空洞填補的效果很好。
圖12 深度圖OAAG多次迭代效果(Matlab) 圖13 深度圖OAAG多次迭代效果
從上述實驗中可以看出,本文提出的OAAG算法能夠很好地解決傳統(tǒng)濾波算法對深度圖空洞填補的缺點,在有效填補空洞的同時能夠很好地解決邊緣模糊問題。填補后的深度值也較為精確。
2.2深度圖處理前后的彩色紋理貼合效果比較
最后,我們將處理前后的深度圖分別與RGB圖像融合,按照對應坐標,把彩色紋理貼合到深度圖中,最后通過點云庫(PCL)顯示出來。
從圖14和圖15可以看出,填補后的深度圖貼合紋理信息后效果很好,可以使得三維重建的效果反映更真實的場景信息。
圖14 Kinect獲得原始深度圖 圖15 處理后深度圖的融合效圖的融合效果圖
3結語
本文提出的基于輪廓的自適應非對稱高斯濾波方法,通過彩色圖中精確的輪廓信息來保存深度圖中輪廓信息,保證在提高深度值填補準確性的同時,邊緣在去噪過程中不會被模糊。文中提出的OAAG算法經過與傳統(tǒng)算法的實驗比較,明顯提高了填補效果,并且填補的信息的準確性也要優(yōu)于傳統(tǒng)算法。通過該方法填補的深度圖用于三維場景重建,可以更好地應用于
增強現實系統(tǒng)中,增加沉浸感的同時,也為三維注冊、虛實融合、虛實交互等提供便利。
參考文獻
[1] 陳一民,李啟明,馬德宜,等.增強虛擬現實技術研究及其應用[J].上海大學學報:自然科學版,2011,17(4):412-428.
[2] Smith S M,Brady J M.SUSAN a new approach to low level image processing[J].International Journal of Computer Vision,1997,23(1):45-78.
[3] Tomasi C,Manduchi R.Bilateral filtering for gray and color images[C]//Computer Vision,1998.Sixth International Conference on.IEEE,1998:839-846.
[4] 靳明,宋建中.一種自適應的圖像雙邊濾波方法[J].光電工程,2004(7):65-68.
[5] 杜小燕,姜曉峰,郝傳剛,等.點云模型的雙邊濾波去噪算法[J].計算機應用與軟件,2010,27(7):245-246,264.
[6] Chang S G,Bin Y M Vetterli.Adaptive wavelet thresholding for image denoising and compression[J].IEEE Transactions on Image Processing,2000,9(9):1532-1546.
[7] Chang S G,Bin Y,Vetterli M.Spatially adaptive wavelet thresholding with context modeling for image denoising[C]//International Conference on Image Processing (ICIP 98),1998:535-539.
[8] Moulin P,Juan L.Analysis of multiresolution image denoising schemes using generalized Gaussian and complexity priors[J].IEEE Transactions on Information Theory,1999,45(3):909-919.
[9] Camplani M,Salgadol.Efficient spatio-temporal hole filling strategy for kinect depth maps[C]//Proceedings of SPIE,2012:8920.
[10] 張玲艷,閏麗,王大凱.圖像梯度分類的概率模型及在邊緣檢測中的應用[J].Computer Engineering and Applications,2010,46(18):180-182.
[11] Kanopoulos N,Vasanthavada N,Baker R L.Design of an image edge detection filter using the Sobel operator[J].Solid-State Circuits,IEEE Journal of,1988,23(2):358-367.
KINECT DEPTH IMAGE HOLE FILLING BASED ON CONTOUR
Cao XuanpengChen Yiming*
(SchoolofComputerEngineeringandScience,ShanghaiUniversity,Shanghai200444,China)
AbstractFor the noise characteristics of depth map obtained by Kinect and the problems of existing denoising algorithm, we presented a contour-based adaptive asymmetric Gaussian filtering methods (OAAG). This method, aiming at the characteristic of Kinect that it can obtain the depth image and colour image simultaneously, uses colour image to find objects’ contour in the scene. When filling the depth, it selects the appropriate points with contour. Since the selected points are asymmetric, so it needs to change the symmetry of Gaussian filtering. Moreover, it changes the scale of Gaussian filtering to make it vary along with the changes of depth value of the area to be filled, this enables the Gaussian filtering to be adaptive. It is demonstrated through experimental comparison that the method can accurately fill the hole of depth image, and meanwhile it can well protect the edge information of image as well.
KeywordsDepth mapHoleContourAdaptiveAsymmetric
收稿日期:2015-01-12。國家科技支撐計劃課題(2006BAK13B10);上海市科委基金項目(12510708400);上海市國際合作基金項目(0951 0700900)。操宣鵬,碩士生,主研領域:圖像處理,增強現實。陳一民,教授。
中圖分類號TP391.41
文獻標識碼A
DOI:10.3969/j.issn.1000-386x.2016.05.047