王福偉 王霖 伏燕軍 鐘可君
關(guān)鍵詞: Kinect; 深度數(shù)據(jù); 圖像處理; 空洞填充; 噪聲濾波; 圖像修復(fù)
中圖分類號: 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
自微軟公司發(fā)布Kinect體感設(shè)備以來,該設(shè)備引起了廣大科研人員的興趣。由于Kinect可以同時獲取到場景的深度數(shù)據(jù)與彩色數(shù)據(jù),微軟最初將其作為Xbox游戲外設(shè),用于完成人機交互、動作跟蹤識別等功能。隨著國內(nèi)外學(xué)者對Kinect設(shè)備研究的深入,發(fā)現(xiàn)該設(shè)備也可以應(yīng)用到三維真實場景重建、醫(yī)學(xué)模擬訓(xùn)練及軍事復(fù)雜模擬等領(lǐng)域[1],并取得了良好的研究成果。但是,該設(shè)備在獲取深度數(shù)據(jù)時,容易受到各種因素的干擾。由于深度數(shù)據(jù)是通過紅外發(fā)射器發(fā)射編碼散斑,再采用紅外接收器接收場景散斑圖進行解碼。深度數(shù)據(jù)獲取容易受到遮擋等原因形成的空洞及噪聲的影響。這些空洞分布沒有規(guī)律性,受被測物體本身的材質(zhì)、所處背景的復(fù)雜度及環(huán)境光影響很大,圖1給出的原始深度圖,包含這些空洞與噪聲。
針對以上獲取深度數(shù)據(jù)的問題,國內(nèi)外學(xué)者提出了許多的深度數(shù)據(jù)優(yōu)化算法。文獻[2]采用高斯濾波方法進行空洞修復(fù),該方法利用非空洞點與空洞點歐氏距離來確定相關(guān)程度,進而確定空洞點處灰度值的估計值。該方法在充分利用空洞點位置信息的同時,忽略了空洞點形成原因,修復(fù)結(jié)果有局限性,尤其不適合因邊緣遮擋造成的空洞區(qū)域。為解決邊緣處的空洞問題,文獻[3?5]采用了雙邊濾波的修復(fù)方法,該方法充分考慮了空洞點處的位置信息與像素信息,能夠有效地消除邊緣處較小的空洞噪聲,但對于較大的空洞,該方法無法有效處理。文獻[6?8]在雙邊濾波的基礎(chǔ)上,提出聯(lián)合雙邊濾波的修復(fù)方法。該方法通過引入一幅與原深度圖像相似的彩色圖,通過彩色圖來計算像素的權(quán)值,有效提高了雙邊濾波中權(quán)值計算的準確度,但該方法仍無法修復(fù)較大的空洞。文獻[9?13]提出用聚類的思想修復(fù)深度空洞區(qū)域,該方法采用彩色圖聚類的結(jié)果作為引導(dǎo),在空洞點處搜索引導(dǎo)圖像的非空洞點,選取該點的深度值作為空洞填充值,這種方法優(yōu)于聯(lián)合雙邊濾波方法的處理方法,但該算法依賴聚類結(jié)果,魯棒性難以令人滿意。因此,本文提出結(jié)合彩色圖引導(dǎo)填充空洞,然后使用改進的中值濾波算法進行深度修復(fù),并通過實驗證明,該方法能夠有效填充深度圖像較大的空洞區(qū)域,并濾除小的空洞噪點,取得很好的實驗結(jié)果。
在利用Kinect獲取深度數(shù)據(jù)與彩色數(shù)據(jù)的過程中,由于是深度數(shù)據(jù)獲取方式,所以深度數(shù)據(jù)受外界和自身因素影響很大。深度數(shù)據(jù)依靠紅外發(fā)射并經(jīng)過一塊毛玻璃形成紅外散斑,從而將場景中布滿散斑,再利用接收器,這時就容易受到因遮擋、距離過近等因素影響產(chǎn)生空洞,而且這類空洞一般都比較大。因此,所提算法根據(jù)空洞所在區(qū)域填充較大的空洞,最后采用改進的中值濾波方法,過濾掉小的空洞。本算法描述如下。
1.1 ?較大空洞區(qū)域填充算法
1) 分離空洞
對采集到的深度圖像進行二值化處理,并通過聚類算法找到空洞區(qū)域中心,得到形心坐標。首先,獲取原始深度數(shù)據(jù)(如Kinect設(shè)備采集深度數(shù)據(jù))。由于深度數(shù)據(jù)表示為場景中的點(或背景)到接收設(shè)備的實際距離,因此需要對深度數(shù)據(jù)進行格式轉(zhuǎn)換,將深度圖轉(zhuǎn)化成普通的灰度圖,便于后續(xù)處理。格式轉(zhuǎn)換應(yīng)用公式為:
[G(x,y)=Z(u,v)Zmax×255] ? (1)
式中:[Z(u,v)]為深度圖像的距離;[Zmax]為Kinect的最大測量范圍;[G(x,y)]為轉(zhuǎn)換后普通灰度圖的灰度值。
對格式轉(zhuǎn)換得到的灰度圖像進行二值化處理,提取出灰度值為0的部分,即為所求區(qū)域。由上述轉(zhuǎn)換公式也可以得出,該區(qū)域亦是深度數(shù)據(jù)的空洞。接著就可以求出較大空洞區(qū)域的形心坐標。
2) 填充空洞
空洞填充主要考慮了空洞形心點的位置,根據(jù)該點位于物體表面還是背景,確定填充像素的灰度值范圍。首先,用彩色圖來糾正灰度圖像中物體與背景分離產(chǎn)生的錯誤。由于在彩色圖片中,背景與物體的顏色信息存在很大的差異性。因此,本實驗使用顏色相似特征引導(dǎo)灰度圖確定空洞區(qū)域位置,具體步驟為:首先,在兩幅圖間建立映射關(guān)系;然后,就可以通過彩色圖的顏色相似特征糾正灰度圖分離背景與物體時產(chǎn)生的錯誤;最終確定空洞區(qū)域較為準確的位置。
空洞填充主要依據(jù)式(1)中的形心坐標的位置,來確定該區(qū)域選用的周邊像素灰度值,最終完成填充工作。本文對此進行了改進,對位于背景中的空洞做八鄰域選點,鄰域點位于物體上時,將該鄰域點灰度值置為0,并填入模板中,進行求解;反之則不變。對位于物體中的空洞,亦采用上述方法。本文主要采用3×3模板法,使用式(2)改進均值求解,依次填充空洞,直至修復(fù)完成。
[G′(x,y)=18-kabcdefghi] ?(2)
式中:e為待求點的像素值;a,b,c,d,f,g,h,i分別為e的八鄰域像素值;k(k不等于8)為八鄰域中灰度值為0的點數(shù)目。
1.2 ?改進的中值濾波算法
采用基于較大空洞區(qū)域填充的方法進行處理后,可以得到比較好的深度修復(fù)圖像,填充效果基本能夠滿足實際要求。但是,通過與原始深度圖相比較,填充后的結(jié)果引入了新的噪聲,因此考慮采用濾波的方式消除噪聲??紤]到中值濾波對消除孤立點塊非常有效,本文選用中值濾波方法來消除噪聲。但是,對于細節(jié)較多的復(fù)雜圖像,需要多次使用不同模板的中值濾波方能消除噪聲,這樣做工作量大,速度慢。本文改進了中值濾波的方法,讓算法自動選擇濾波窗口的大小,自動調(diào)整,以達到最好的濾除噪聲的效果。其算法步驟如下,首先,設(shè)置3×3的初始化模板,計算初始化窗口的灰度值的最大值、最小值以及濾波中值。若濾波中值位于最大值與最小值之外,則增大窗口(即+2)。若濾波中值位于最大值與最小值之間,則判斷待測點像素灰度值是否位于最大值與最小值之間,若在這個范圍內(nèi),則像素灰度值不變;否則,待測點像素灰度值用濾波中值替換。按照這個算法,依次遍歷全圖像素,進行深度圖去噪。
通過上述描述,可以清晰看出:首先,判斷初始化窗口的濾波中值,如果不是噪點則進行下一步操作;其次,判斷待測點是否為噪點,如果是,便用濾波中值替換,如果不是,則進行下一個像素點的判斷。按照這個算法,依次遍歷全圖像素,就可以把整幅圖的噪點全部濾除。
為驗證所提算法的有效性,選取標準庫[14]的待測圖片作為原始數(shù)據(jù),在PC機上基于OpenCV庫的C++語言實現(xiàn)該算法。實驗運行平臺如下,主機CPU為Intel Pentium G3240,主頻3.1 GHz,內(nèi)存為8 GB,操作系統(tǒng)為Windows 7,軟件環(huán)境為Microsoft Visual Studio 2010,OpenCV2.4.9庫。
2.1 ?本文所提算法的實驗驗證
利用深度圖像空洞的特性,根據(jù)連通性原則,確定大空洞形心坐標,進而對確定空洞所在位置有了更準確的描述,并進行標記,如圖2所示。
其中:圖2a)與圖2b)為待處理的原彩色圖與深度圖;圖2c)為對原深度圖進行二值化處理,并提取出空洞區(qū)域;圖2d)為圖2c)根據(jù)連通性原則,對深度圖較大空洞進行提取,最后進行膨脹腐蝕等操作,得到較大空洞區(qū)域的二值化圖;圖2e)為對圖2d)進行空洞區(qū)域確定形心點并進行標記的結(jié)果。相比傳統(tǒng)的k?means聚類方法,本方法使用了圖像的基本操作(如膨脹、腐蝕、加減運算等),即獲得了空洞區(qū)域。而k?means聚類方法則是對灰度化以后的彩色圖像進行聚類處理,本身在灰度化彩色圖像時,就丟失了部分圖像信息,雖然后期k?means是基于灰度值進行聚類的,但是,仍舊無法忽略這部分影響。另一方面,基于k?means的聚類算法受初始值影響很大,尤其是k值(需要用戶預(yù)先確定)的影響。同時,由于該方法在尋找形心時計算復(fù)雜且難以完成全局收斂,時間復(fù)雜度高,尤其是數(shù)據(jù)量大時,速度極慢,而本文算法較為簡單,且預(yù)處理效果良好,對后續(xù)的工作進展有很大的指導(dǎo)意義,可以用在實時處理。
2.2 ?不同算法的對比驗證實驗
通過對不同的深度修復(fù)效果進行直觀的比較,得出在處理不同的實驗背景的深度圖,結(jié)果有較大的差異。對比實驗結(jié)果如圖3所示。其中:圖3c)雙邊濾波的結(jié)果表明,在深度圖空洞較大的區(qū)域和部分邊緣區(qū)域,修復(fù)效果不好,并且物體邊緣被模糊化;圖3d)在雙邊濾波算法不足的基礎(chǔ)上進行了改進,不再單獨依賴顏色空間與坐標空間的sigma值,而是通過引入一幅與原始深度圖相同大小的彩色圖,解決了雙邊濾波計算權(quán)值時出現(xiàn)翻轉(zhuǎn)帶來的錯誤。從實驗結(jié)果中可以清晰看出,引入的彩色圖對深度圖修復(fù)影響顯著。尤其當引入的彩色圖非常復(fù)雜時,進行深度修復(fù)后,邊緣會出現(xiàn)漂移,這也間接表明聯(lián)合雙邊濾波在處理復(fù)雜背景的圖片時,存在極大的限制。而本文所提算法在分析以上算法的優(yōu)缺點后,充分考慮空洞形成的原因,先將較大空洞分離出來,進行該部分的空洞的填充,再對離散較小的噪點進行濾波操作,最終完成整幅深度圖的修復(fù)操作,實驗取得了良好的實驗結(jié)果,見圖3e)。這表明,該算法具有較強的魯棒性,能夠處理較為復(fù)雜的三維真實場景。但是,對于極復(fù)雜背景的情況,所提算法仍存在一定的局限性。
本文針對應(yīng)用三維重建過程中Kinect傳感器獲得的單幅深度圖存在空洞噪聲的問題,提出結(jié)合彩色圖引導(dǎo)填充空洞并濾波的深度修復(fù)算法。該算法通過定位空洞點的位置,進而利用彩色圖顏色特性相似性原則,確定空洞點位于前景或背景,有效地進行了像素級別的填充。在初步填充完成以后,通過改進的中值濾波算法,消除掉填充可能帶來的噪點。實驗結(jié)果表明,空洞填充效果較為理想,修復(fù)結(jié)果邊緣平滑,能夠應(yīng)用在較小范圍的場景重建。但是,該算法對于復(fù)雜背景及較暗的環(huán)境處理效果不明顯,深度數(shù)據(jù)存在較大誤差,希望下一步工作能夠在更好的圖像分割或者多幀圖片方面尋求突破。
參考文獻
[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] 王孝通,金鑫,徐曉剛,等.聯(lián)合雙邊圖像插值[J].中國圖象圖形學(xué)報,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] 劉田間,郭連朋,朱禛,等.一種深度圖像修復(fù)算法研究[J].信息技術(shù),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] 李應(yīng)彬,馮杰,張華熊,等.基于改進雙邊濾波的Kinect深度圖像空洞修復(fù)算法研究[J].工業(yè)控制計算機,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.