王福偉 王霖 伏燕軍 鐘可君
關鍵詞: Kinect; 深度數據; 圖像處理; 空洞填充; 噪聲濾波; 圖像修復
中圖分類號: TN911.73?34 ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼: A ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2019)02?0143?04
Research on depth image restoration algorithm based on RGB?D
WANG Fuwei, WANG Lin, FU Yanjun, ZHONG Kejun
(Key Laboratory of Nondestructive Testing of Ministry of Education, Nanchang Hangkong University, Nanchang 330063, China)
Abstract: In allusion to the unstability of the original depth data obtained by the Kinect device, especially for the high noise and holes in the image, a depth restoration algorithm combining with color image guidance hole?filling and filtering is proposed in this paper. The grayscale image is used to separate and mark the hole area. The positions of hole points are analyzed and judged, and the holes are filled by combining with the color image. The improved median filtering algorithm is adopted to remove noises in the edge of the image. In comparison with the current main depth filtering restoration methods, the proposed algorithm makes full use of depth data and color image, and uses a large number of basic image processing algorithms in the processing process. The experimental results show that the proposed algorithm can solve the hole and noise problems well and restore depth data well.
Keywords: Kinect; depth data; image processing; hole filling; noise filtering; image restoration
自微軟公司發布Kinect體感設備以來,該設備引起了廣大科研人員的興趣。由于Kinect可以同時獲取到場景的深度數據與彩色數據,微軟最初將其作為Xbox游戲外設,用于完成人機交互、動作跟蹤識別等功能。隨著國內外學者對Kinect設備研究的深入,發現該設備也可以應用到三維真實場景重建、醫學模擬訓練及軍事復雜模擬等領域[1],并取得了良好的研究成果。但是,該設備在獲取深度數據時,容易受到各種因素的干擾。由于深度數據是通過紅外發射器發射編碼散斑,再采用紅外接收器接收場景散斑圖進行解碼。深度數據獲取容易受到遮擋等原因形成的空洞及噪聲的影響。這些空洞分布沒有規律性,受被測物體本身的材質、所處背景的復雜度及環境光影響很大,圖1給出的原始深度圖,包含這些空洞與噪聲。

針對以上獲取深度數據的問題,國內外學者提出了許多的深度數據優化算法。文獻[2]采用高斯濾波方法進行空洞修復,該方法利用非空洞點與空洞點歐氏距離來確定相關程度,進而確定空洞點處灰度值的估計值。該方法在充分利用空洞點位置信息的同時,忽略了空洞點形成原因,修復結果有局限性,尤其不適合因邊緣遮擋造成的空洞區域。為解決邊緣處的空洞問題,文獻[3?5]采用了雙邊濾波的修復方法,該方法充分考慮了空洞點處的位置信息與像素信息,能夠有效地消除邊緣處較小的空洞噪聲,但對于較大的空洞,該方法無法有效處理。文獻[6?8]在雙邊濾波的基礎上,提出聯合雙邊濾波的修復方法。該方法通過引入一幅與原深度圖像相似的彩色圖,通過彩色圖來計算像素的權值,有效提高了雙邊濾波中權值計算的準確度,但該方法仍無法修復較大的空洞。文獻[9?13]提出用聚類的思想修復深度空洞區域,該方法采用彩色圖聚類的結果作為引導,在空洞點處搜索引導圖像的非空洞點,選取該點的深度值作為空洞填充值,這種方法優于聯合雙邊濾波方法的處理方法,但該算法依賴聚類結果,魯棒性難以令人滿意。因此,本文提出結合彩色圖引導填充空洞,然后使用改進的中值濾波算法進行深度修復,并通過實驗證明,該方法能夠有效填充深度圖像較大的空洞區域,并濾除小的空洞噪點,取得很好的實驗結果。
在利用Kinect獲取深度數據與彩色數據的過程中,由于是深度數據獲取方式,所以深度數據受外界和自身因素影響很大。深度數據依靠紅外發射并經過一塊毛玻璃形成紅外散斑,從而將場景中布滿散斑,再利用接收器,這時就容易受到因遮擋、距離過近等因素影響產生空洞,而且這類空洞一般都比較大。因此,所提算法根據空洞所在區域填充較大的空洞,最后采用改進的中值濾波方法,過濾掉小的空洞。本算法描述如下。
1.1 ?較大空洞區域填充算法
1) 分離空洞
對采集到的深度圖像進行二值化處理,并通過聚類算法找到空洞區域中心,得到形心坐標。首先,獲取原始深度數據(如Kinect設備采集深度數據)。由于深度數據表示為場景中的點(或背景)到接收設備的實際距離,因此需要對深度數據進行格式轉換,將深度圖轉化成普通的灰度圖,便于后續處理。格式轉換應用公式為:
[G(x,y)=Z(u,v)Zmax×255] ? (1)
式中:[Z(u,v)]為深度圖像的距離;[Zmax]為Kinect的最大測量范圍;[G(x,y)]為轉換后普通灰度圖的灰度值。
對格式轉換得到的灰度圖像進行二值化處理,提取出灰度值為0的部分,即為所求區域。由上述轉換公式也可以得出,該區域亦是深度數據的空洞。接著就可以求出較大空洞區域的形心坐標。
2) 填充空洞
空洞填充主要考慮了空洞形心點的位置,根據該點位于物體表面還是背景,確定填充像素的灰度值范圍。首先,用彩色圖來糾正灰度圖像中物體與背景分離產生的錯誤。由于在彩色圖片中,背景與物體的顏色信息存在很大的差異性。因此,本實驗使用顏色相似特征引導灰度圖確定空洞區域位置,具體步驟為:首先,在兩幅圖間建立映射關系;然后,就可以通過彩色圖的顏色相似特征糾正灰度圖分離背景與物體時產生的錯誤;最終確定空洞區域較為準確的位置。
空洞填充主要依據式(1)中的形心坐標的位置,來確定該區域選用的周邊像素灰度值,最終完成填充工作。本文對此進行了改進,對位于背景中的空洞做八鄰域選點,鄰域點位于物體上時,將該鄰域點灰度值置為0,并填入模板中,進行求解;反之則不變。對位于物體中的空洞,亦采用上述方法。本文主要采用3×3模板法,使用式(2)改進均值求解,依次填充空洞,直至修復完成。
[G′(x,y)=18-kabcdefghi] ?(2)
式中:e為待求點的像素值;a,b,c,d,f,g,h,i分別為e的八鄰域像素值;k(k不等于8)為八鄰域中灰度值為0的點數目。
1.2 ?改進的中值濾波算法
采用基于較大空洞區域填充的方法進行處理后,可以得到比較好的深度修復圖像,填充效果基本能夠滿足實際要求。但是,通過與原始深度圖相比較,填充后的結果引入了新的噪聲,因此考慮采用濾波的方式消除噪聲。考慮到中值濾波對消除孤立點塊非常有效,本文選用中值濾波方法來消除噪聲。但是,對于細節較多的復雜圖像,需要多次使用不同模板的中值濾波方能消除噪聲,這樣做工作量大,速度慢。本文改進了中值濾波的方法,讓算法自動選擇濾波窗口的大小,自動調整,以達到最好的濾除噪聲的效果。其算法步驟如下,首先,設置3×3的初始化模板,計算初始化窗口的灰度值的最大值、最小值以及濾波中值。若濾波中值位于最大值與最小值之外,則增大窗口(即+2)。若濾波中值位于最大值與最小值之間,則判斷待測點像素灰度值是否位于最大值與最小值之間,若在這個范圍內,則像素灰度值不變;否則,待測點像素灰度值用濾波中值替換。按照這個算法,依次遍歷全圖像素,進行深度圖去噪。
通過上述描述,可以清晰看出:首先,判斷初始化窗口的濾波中值,如果不是噪點則進行下一步操作;其次,判斷待測點是否為噪點,如果是,便用濾波中值替換,如果不是,則進行下一個像素點的判斷。按照這個算法,依次遍歷全圖像素,就可以把整幅圖的噪點全部濾除。
為驗證所提算法的有效性,選取標準庫[14]的待測圖片作為原始數據,在PC機上基于OpenCV庫的C++語言實現該算法。實驗運行平臺如下,主機CPU為Intel Pentium G3240,主頻3.1 GHz,內存為8 GB,操作系統為Windows 7,軟件環境為Microsoft Visual Studio 2010,OpenCV2.4.9庫。
2.1 ?本文所提算法的實驗驗證
利用深度圖像空洞的特性,根據連通性原則,確定大空洞形心坐標,進而對確定空洞所在位置有了更準確的描述,并進行標記,如圖2所示。

其中:圖2a)與圖2b)為待處理的原彩色圖與深度圖;圖2c)為對原深度圖進行二值化處理,并提取出空洞區域;圖2d)為圖2c)根據連通性原則,對深度圖較大空洞進行提取,最后進行膨脹腐蝕等操作,得到較大空洞區域的二值化圖;圖2e)為對圖2d)進行空洞區域確定形心點并進行標記的結果。相比傳統的k?means聚類方法,本方法使用了圖像的基本操作(如膨脹、腐蝕、加減運算等),即獲得了空洞區域。而k?means聚類方法則是對灰度化以后的彩色圖像進行聚類處理,本身在灰度化彩色圖像時,就丟失了部分圖像信息,雖然后期k?means是基于灰度值進行聚類的,但是,仍舊無法忽略這部分影響。另一方面,基于k?means的聚類算法受初始值影響很大,尤其是k值(需要用戶預先確定)的影響。同時,由于該方法在尋找形心時計算復雜且難以完成全局收斂,時間復雜度高,尤其是數據量大時,速度極慢,而本文算法較為簡單,且預處理效果良好,對后續的工作進展有很大的指導意義,可以用在實時處理。
2.2 ?不同算法的對比驗證實驗
通過對不同的深度修復效果進行直觀的比較,得出在處理不同的實驗背景的深度圖,結果有較大的差異。對比實驗結果如圖3所示。其中:圖3c)雙邊濾波的結果表明,在深度圖空洞較大的區域和部分邊緣區域,修復效果不好,并且物體邊緣被模糊化;圖3d)在雙邊濾波算法不足的基礎上進行了改進,不再單獨依賴顏色空間與坐標空間的sigma值,而是通過引入一幅與原始深度圖相同大小的彩色圖,解決了雙邊濾波計算權值時出現翻轉帶來的錯誤。從實驗結果中可以清晰看出,引入的彩色圖對深度圖修復影響顯著。尤其當引入的彩色圖非常復雜時,進行深度修復后,邊緣會出現漂移,這也間接表明聯合雙邊濾波在處理復雜背景的圖片時,存在極大的限制。而本文所提算法在分析以上算法的優缺點后,充分考慮空洞形成的原因,先將較大空洞分離出來,進行該部分的空洞的填充,再對離散較小的噪點進行濾波操作,最終完成整幅深度圖的修復操作,實驗取得了良好的實驗結果,見圖3e)。這表明,該算法具有較強的魯棒性,能夠處理較為復雜的三維真實場景。但是,對于極復雜背景的情況,所提算法仍存在一定的局限性。

本文針對應用三維重建過程中Kinect傳感器獲得的單幅深度圖存在空洞噪聲的問題,提出結合彩色圖引導填充空洞并濾波的深度修復算法。該算法通過定位空洞點的位置,進而利用彩色圖顏色特性相似性原則,確定空洞點位于前景或背景,有效地進行了像素級別的填充。在初步填充完成以后,通過改進的中值濾波算法,消除掉填充可能帶來的噪點。實驗結果表明,空洞填充效果較為理想,修復結果邊緣平滑,能夠應用在較小范圍的場景重建。但是,該算法對于復雜背景及較暗的環境處理效果不明顯,深度數據存在較大誤差,希望下一步工作能夠在更好的圖像分割或者多幀圖片方面尋求突破。
參考文獻
[1] P?HLMANN S T L, HARKNESS E F, TAYLOR C J, et al. Evaluation of Kinect 3D sensor for healthcare imaging [J]. Journal of medical and biological engineering, 2016, 36(6): 857?870.
[2] FENG S, MURRAY?SMITH R, RAMSAY A. Position stabilisation and lag reduction with Gaussion processes in sensor fusion system for user performance improvement [J]. International journal of machine learning and cybernetics, 2017, 8(4): 1167?1184.
[3] ESFAHANI M A, POURREZA H. Kinect depth recovery based on local filters and plane primitives [J]. Integral methods in science and engineering, 2017, 2: 53?63.
[4] GUO L, CHEN X, CHEN Y, et al. Colored 3D surface reconstruction using Kinect sensor [J]. Optoelectronics letters, 2015, 11(2): 153?156.
[5] 王孝通,金鑫,徐曉剛,等.聯合雙邊圖像插值[J].中國圖象圖形學報,2011,16(12):2117?2123.
WANG Xiaotong, JIN Xin, XU Xiaogang, et al. Joint bilateral image interpolation [J]. Journal of image and graphics, 2011, 16(12): 2117?2123.
[6] CAMPLANI M, SALGADO L. Efficient spatio?temporal hole filling strategy for Kinect depth maps [J]. Proceedings of SPIE, 2012, 8290: 1?10.
[7] 劉田間,郭連朋,朱禛,等.一種深度圖像修復算法研究[J].信息技術,2017(6):107?111.
LIU Tianjian, GUO Lianpeng, ZHU Zhen, et al. A depth image inpainting algorithm [J]. Information technology, 2017(6): 107?111.
[8] 李應彬,馮杰,張華熊,等.基于改進雙邊濾波的Kinect深度圖像空洞修復算法研究[J].工業控制計算機,2013,26(11):105?106.
LI Yingbin, FENG Jie, ZHANG Huaxiong, et al. New algorithm of depth hole filling based on intensive bilateral filter [J]. Industrial control computer, 2013, 26(11): 105?106.
[9] CHEN W, YUE H, WANG J, et al. An improved edge detection algorithm for depth map inpainting [J]. Optics and lasers in engineering, 2014, 55: 69?77.
[10] WANG Z, HU J, WANG S, et al. Trilateral constrained sparse representation for Kinect depth hole filling [J]. Pattern recognition letters, 2015, 65: 95?102.
[11] L CARAFFA L, TAREL J P, CHARBONNIER P. The guided bilateral filter: when the joint/cross bilateral filter becomes robust [J]. IEEE transactions on image processing, 2015, 24(4): 1199?1208.
[12] HAYAT M, BENNAMOUN M, EI?SALLAM A A. An RGB?D based image set classification for robust face recognition from Kinect data [J]. Neurocomputing, 2016, 171: 889?900.
[13] MALINEN M, FR?NTI P. K?means: clustering by gradual data transformation [J]. Pattern recognition, 2014, 47(10): 3376?3386.
[14] Anon. Middlebury datasets [EB/OL]. [2017?12?24]. http://vision.middlebury.edu/stereo.