張銘凱,梁晉,劉烈金,梁瑜,王曉光
基于SR300體感器人體掃描點云的去噪方法
張銘凱,梁晉,劉烈金,梁瑜,王曉光
(西安交通大學 機械工程學院,機械制造系統工程國家重點實驗室,陜西 西安,710049)
為克服傳統三維人體掃描系統體積大、線路復雜、成本高的缺點,采用SR300體感器獲取三維人體點云,針對體感掃描點云噪聲大的問題,提出由外而內,分步去除噪聲的系統方法。此方法無需點云間的拓撲關系,可以直接對三維散亂點云進行處理。首先,設計體感掃描實驗平臺獲取人體點云并采用圓柱體分割法進行點云預處理;接著,提出并實現2種體外離群點去噪的算法,即統計分析法和球半徑法,將這2種算法結合使用去除不同類型的離群點;最后,調整人體深度圖的雙邊濾波去噪算法的權重因子到合理的范圍內,分別以單幅點云和全身點云為對象,去噪時間分別僅為傳統雙邊濾波的7.52%和3.69%。借助VS2010開發環境,并調用PCL庫進行大量算法實驗。研究結果表明:本文方法能夠有效去除內外噪點且能保持邊緣特征,獲得較好的三維人體點云結果。
SR300;人體掃描;點云去噪;深度圖;雙邊濾波
近年來,隨著體感技術的迅速發展,使用體感器用于人體掃描的技術正在成為現今的研究熱點。目前,已有大量學者使用微軟的Kinect體感器掃描而重建三維人體模型[1?3],體感掃描廣泛應用在人機交互、虛擬現實、3D打印等領域。如張英烈等[4]采用體感器掃描識別提取肢體運動,實現人體跟蹤而獲得游戲中的沉浸式體驗;賴軍等[5]采用掃描儀獲取人體三維點云模型,進而實現提取人體尺寸的目的;蔡林沁等[6]提出一種基于手勢識別的虛擬環境體感交互方法,實現了與虛擬環境的自然交互控制。傳統的人體三維重建是采用非接觸式三維光學掃描儀來實現的,為了獲得較好的人體點云模型,往往使用工業相機和鏡頭。有的光柵式掃描系統還采用投影儀完成光柵投影,可這些設備價格昂貴,體積大,走線復雜,不易攜帶和維護。傳統掃描儀只能掃描身體局部,若設置轉臺,則會因為掃描時間長、身體輕微動蕩而增大誤差。本文采用英特爾公司2016年初推出的SR300體感器,有效規避了上述缺點,其將黑白相機和投射器集成在1個模組上,只需1根USB3.0數據線即可完成所有數據的連接,小巧又便攜,由多個體感器搭載的系統可幾秒內完成全身掃描。但由于體感器設備本身誤差、人體結構復雜等因素,獲取的深度數據噪聲大,影響人物重建效果,需對點云進行去噪處理。1個好的點云去噪算法一般需具備以下4種特征[7]:1) 有效剔除體外和夾雜在人體模型中的各種形式的噪聲;2) 模型表面光順的同時保持固有的細節信息;3) 在處理過程中防止模型體積收縮和扭曲變形;4) 較低的時間復雜度和空間復雜度。所以,研究如何有效去除所有噪點并獲得高質量的三維點云數據是當前研究的難點。體感掃描噪聲分布有不同規律,曹爽等[8]將散亂點噪聲分為3類,實現了基于特征的點云去噪。其實噪點大體可以歸結為2類:一類是主體點云外的噪點,也叫離群點或錯誤點;另一類是人體表面上的噪點,這些噪點使人體模型表面坑洼和粗糙。點云去噪按先后順序也分人體散亂點模型的去噪和點云網格化(一般是三角化)的去噪。對于網格化點云去噪目前已獲得廣泛研究,如吳慎祿等[7]將點云數據劃分為特征信息少的平坦區域和特征信息豐富的區域,分別采用不同算法去噪,完成了基于特征信息分類的點云去噪。蘇本躍等[9]采用K?means聚類法對點云聚類,根據點到聚類中心距離和鄰近點曲率變化判斷噪聲,對去除大量外部噪聲取得一定效果。各種去噪算法各有優劣,結合各種方法優勢的去噪方法被廣泛使用。如ZHAO等[10]結合均值濾波和中值濾波優勢應用于點云的去噪平滑,能保持一定的特征。TOMASI等[11]首先提出了雙邊濾波算法,實現了圖像的降噪,還能保持邊緣細節特征,后來被推廣應用到點云去噪上。ZAMAN等[12]采用粒子群優化技術確定核密度帶寬,接著設置閥值條件,使用均值漂移聚類算法去除離群點,移除離群點后,再采用雙邊濾波法對剩余點進行網格平滑,這種粒子群優化技術增強了核密度估計的魯棒性,先去除離群點再實施網格平滑使去噪效果顯著。與具有拓撲連接信息的網格化點云不同,點模型的去噪相對較復雜,去噪算法也相對較少。如離群點噪聲去除方法按統計學可以分為3類:基于深度的點云去噪法[13]、基于距離的點云去噪法[14]、基于密度的點云去噪法[15]。此外,還有一些比較成功的點模型去噪方法。如梁新合等[16]通過計算點的法向矢量和法向局部方差獲得與表面有關的自適應最優鄰域,并利用3邊濾波實現散亂點云的去噪,獲得了光順的離散表面。LIU等[17]利用稀疏點標記密集點,基于八叉樹劃分法對標記的密集點進行預處理,提高了算法效率,與全局點云去噪相比,保持了細節特征,這種方法新穎,具有拓展性。考慮到散亂點云本身有噪聲,不可避免地會影響到三維重建的精度,因此,對帶有噪聲的點模型進行離群點去噪,再進行表面光順去噪會更有意義。本文針對SR300體感器掃描人體點云噪聲大、噪聲點類型不同、一次去噪難以完全去除噪聲的問題,采用由外而內分步去噪的方法進行去噪處理。首先使用圓柱體分割法獲取條件范圍內的點云,再結合使用統計分析法和球半徑法去除離群點,最后采用一種針對深度圖的雙邊濾波算法實現表面點云的光順去噪。對去噪算法進行大量實驗,找到合理范圍內的參數,最大程度地達到去噪的目的。本文采用一種新的體感器用于人體掃描,可達到低成本獲取人體三維點云的目的,同時去噪算法也能解決體感點云噪聲大的問題,為后續人體三維重建提供參考。
采用英特爾SR300體感器獲取人體點云數據,體感器也叫深度相機。SR300組件包括紅外激光投射器、紅外黑白相機和彩色相機各1個,投射器采用編碼光深技術,采集時投射出不可見的格雷碼編碼圖像。紅外相機以分辨率為640像素×480像素,60幀/s的速度獲取人體深度數據。彩色相機以200萬像素獲取RGB紋理進行貼圖。
設計的體感掃描系統結構由4根鋼架立柱組成,4根掃描立柱形成的掃描框架長×寬×高為1 600 mm× 1 200 mm×1 600 mm(實際高度2 000 mm),每根立柱上安裝4個體感器,共16個,同一立柱上的體感器之間的距離為400 mm。掃描框架中間為本課題組研制的標定板,用于掃描前16個相機內外參數的標定。因為相機標定時投射紅外圖像,所以,在其周圍增設紅外燈帶進行補光。標定成功后,人站立在框架中央,各相機采集圖片,系統通過點云融合后獲得全身三維人體點云。
針對體感掃描點云噪聲大的問題,通過設定條件來限制人體點云范圍,可以初步獲取較好的點云質量,大大縮減后期的處理時間。傳統的方法是分別設置,和軸的取值范圍,對主體點云形成1個長方體型包圍盒,刪除處于盒外的點云,保留盒內的主體點云。如何東健等[18]采用此方法對植物三維點云完成了預處理。在一些特殊情況下,為獲得更好的景深效果,在身高較矮的人腳下墊物再掃描,掃描時會把墊物和地面點云一起掃描,加上背景環境數據,會存在大量噪點。預處理的目的就是去除這些噪點。本文采用圓柱體分割法進行預處理,分割出圓柱體內點云,對圓柱體外點則刪除。具體算法步驟為:1) 移動坐標系到人體鞋底點云平面即雙腳正中間,進行直通濾波,過濾軸上不在定義坐標范圍內的點;2) 對過濾的每個點進行表面法線估計;3) 基于法線估計分割獲取平面點云模型;4) 限制圓柱體模型半徑,分割出圓柱體點云模型。
經過預處理之后的人體點云,是圓柱體條件范圍內保留的點云,包括主體點云和體外離群點。對于體外離群點,主要有偏離主體點云外的稀疏點和單個孤點。對于這2種類型離群點,分別采用統計分析法和球半徑法去除,最后,針對深度圖的雙邊濾波算法進行人體表面點云光順去噪,在獲取點云表面光順的同時保持細節特征。
對人體點云進行部分采樣,測量任意一點與近鄰點的距離,統計得出距離大都處于平均值。距離平均值越近和越遠的點依次減少,因此,近鄰點云距離分布具有均勻性、對稱性、均勻變動性,近似服從正態分布,近鄰點云距離與個數的關系如圖1所示。

圖1 近鄰點云距離概率密度圖




重復上述過程,遍歷所有人體點云,計算所有點的單點距離均值d,求得全局距離均值為

則標準差為

最后得到距離閥值為

與統計分析法根據鄰域內距離判斷離群點不同,球半徑法是一種通過判斷某點球形鄰域內是否滿足點個數來決定該點刪除與否的方法。設某點為P,定義其球半徑為和球鄰域點數,若P在球半徑領域內搜索得到的點數小于,則刪除P點,領域內至少有個近鄰的點則保留。遍歷所有人體點云,通過此步驟判斷每個點的去留,如圖2所示。

圖2 球半徑法示意圖
定義好合適半徑后,取不同近鄰數,去噪結果不同:
1) 若=1,則刪除1(1近鄰數為0,不滿足至少1個近鄰點)和2,保留3和4;
2) 若=2,則刪除1和2(2近鄰數為1,1和2均沒有滿足至少2個近鄰點),保留3和4;
3) 若=3,則刪除1,2和3(3近鄰數為2,沒有滿足至少3個近鄰點),保留4。
雙邊濾波是一種表面點云光順去噪方法,本文經過改進此方法,將該方法成功地應用于體感掃描人體點云的去噪。雙邊濾波是在高斯濾波基礎上增加了1個高斯方差,在去噪過程中能保持高頻細節,而高斯濾波則會明顯地模糊邊緣。雙邊濾波是結合了圖像的空間鄰近度和像素的濾波技術,即同時考慮了空間距離權重和點云像素權重,最后達到濾波效果。其算法思想可以簡單用1個公式表示:空間函數乘以值域函數等于輸出點云像素。
具體計算步驟如下。


式中:(,)和(,)分別為點和點的坐標。








(a) 雜點和主體點云;(b) 預處理后效果


:1—0.1;2—0.3;3—0.5;4—1.0;5—2.0。


(a) =0.1,k=40;(b)=2.0,k=40;(c)=0.5,k=40
使用統計分析法去噪后,基本上能去除大部分離群點,接著采用球半徑法去除剩余小部分離群點。在球半徑法去噪實驗中,定義球半徑為30 mm,原始點云數為282 652個,通過選取不同的近鄰數進行算法實驗所得結果如表1所示。

表1 不同參數去噪數據
由表1可知:對于同一球半徑,近鄰數越多,去除的點云數越多,而算法時間基本不變,所以,算法時間主要與半徑相關。近鄰數取得太少,去噪不徹底,取得太多則會過度去噪。當半徑為30 mm,近鄰數為50個時,去噪效果最好,如圖6所示。

(a) 去噪前;(b) 去噪后

因石膏本身粗糙,所以,掃描效果相對粗糙,濾波后效果顯著;塑料表面相對光滑,濾波后能保持細節特征。為驗證本文算法的效率,以模特頭像和球半徑去噪后全身人體點云為對象,模特原始點云數為44 986個,全身人體點云數為282 637個,進行傳統雙邊濾波和本文雙邊濾波后統計結果如表2所示。

(a) 人體石膏頭像濾波前;(b) 人體石膏頭像濾波后;(c) 塑料模特濾波前;(d) 塑料模特濾波后

表2 不同算法去噪結果
從表2可知:對于體感人體點云數量不同的情況,傳統雙邊濾波方法去噪時間基本上與點云數成正比,而使用本文雙邊濾波算法對不同點云數去噪時間變化不大。模特頭像和全身人體點云濾波時間分別為傳統雙邊濾波的7.52%和3.69%,效率顯著提高,且能保持細節特征。
采用圓柱體分割法進行點云預處理去除各種復雜背景數據是體感掃描點云去噪的必要一步,其實質是根據用戶定義相關的條件,分割出圓柱體內點云數據,去除對象主要是系統噪聲,大致確定主體點云的范圍。統計分析法和球半徑法均是去除離群點的方法,由于散亂點沒有相應的拓撲關系,所以,它們的共同點都是依據近鄰關系設置去噪因子。但不同的是,統計分析法根據近鄰平均距離來去除離群點,球半徑法則根據球半徑范圍內近鄰數去除離群點。根據去噪結果分析,統計分析法適合去除稀疏點云,球半徑法特別適合去除小片聚集點云或單個孤立點,將兩者結合基本可以有效去除所有的離群點。針對深度圖的雙邊濾波光順去噪法是對人體表面點云的平滑處理,得到更真實的人體模型。由于沒有復雜的鄰域拓撲關系,散亂點模型去噪相對網格化點云去噪效率高,同時也能保持相應特征。綜合以上系統性去噪方法,可實現體感人體掃描點云大噪聲去除的目標。
1) 設計的體感人體掃描實驗平臺能獲取全身三維人體點云數據,但掃描效果較粗糙,后續體感人體掃描系統有待改進。

3) 本文針對深度數據的雙邊濾波去噪算法比傳統雙邊濾波法去噪效率高,對模特頭像和全身人體點云濾波時間分別是傳統雙邊濾波的7.52%和3.69%,既能點云表面光順,又能保證細節特征。
[1] 馬旋, 薛原, 楊若瑜, 等. 基于Kinect的人體實時三維重建及其應用[J]. 計算機輔助設計與圖形學學報, 2014, 26(10): 1720?1726. MA Xuan, XUE Yuan, YANG Ruoyu, et al. Kinect-based real time 3D reconstruction from Kinect[J]. Journal of Computer- aided Design &Computer Graphies, 2014, 26(10): 1720?1726.
[2] 周瑾, 潘建江, 童晶, 等. 使用Kinect快速重建三維人體[J]. 計算機輔助設計與圖形學學報, 2013, 25(6): 873?879. ZHOU Jin, PAN Jianjiang, TONG Jing, et al. Fast 3D human body reconstruction from Kinect[J]. Journal of Computer-aided Design & Computer Graphies, 2013, 25(6): 873?879.
[3] 喬思航, 程志全, 陳寅, 等. 基于三個Kinect 的個性化人體重建[J]. 系統仿真學報, 2013, 25(10): 2408?2411. QIAO Sihang, CHENG Zhiquan, CHEN Yin, et al. Personalized full-body reconstruction using three Kinect[J]. Journal of System Simulation, 2013, 25(10): 2408?2411.
[4] 張英烈, 夏夢, 陳臨強. 基于視頻跟蹤的體感游戲設計[J]. 計算機工程與應用, 2015, 51(17): 44?47. ZHANG Yinglie, XIA Meng, CHEN Linqiang. Design of somatosensory games based on video tracking[J]. Computer Engineering and Applications, 2015, 51(17): 44?47.
[5] 賴軍, 王博, 付全, 等. 基于點云模型的人體尺寸自動提取方法[J]. 中南大學學報(自然科學版), 2014, 45(8): 2676?2683. LAI Jun, WANG Bo, FU Quan, et al. Automatic extraction method of human body sizes based on 3D point clouds[J]. Journal of Central South University(Science and Technology), 2014, 45(8): 2676?2683.
[6] 蔡林沁, 張建榮, 劉彬彬. 基于手勢識別的虛擬環境體感交互控制[J]. 華中科技大學學報(自然科學版), 2015, 43(S1): 136?139, 165. CAI Linqin, ZHANG Jianrong, LIU Binbin. Somatosensory interaction with virtual environments based on gesture recognition[J]. Journal of Huazhong University of Science and Technology(Natural Science Edition), 2015, 43(S1): 136?139, 165.
[7] 吳慎祿, 史皓良, 陳華偉. 基于特征信息分類的三維點數據去噪[J]. 光學精密工程, 2016, 24(6): 1465?1473. WU Shenlu, SHI Haoliang, CHEN Huawei. Denoising of three dimensional point data based on classification of feature information[J]. Optics Precision Engineering, 2016, 24(6): 1465?1473.
[8] 曹爽, 岳建平, 馬文. 基于特征選擇的雙邊濾波點云去噪算法[J]. 東南大學學報(自然科學版), 2013, 43(2): 351?354. CAO Shuang, YUE Jianping, MA Wen. Bilateral filtering denoise algorithm for point cloud based on feature selection[J]. Journal of Southeast University(Natural Science Edition), 2013, 43(2): 351?354.
[9] 蘇本躍, 馬金宇, 彭玉升, 等. 基于K-means 聚類的RGBD點云去噪和精簡算法[J]. 系統仿真學報, 2016, 28(10): 2329?2334. SU Benyue, MA Jinyu, PENG Yusheng, et al. Algorithm for RGBD point cloud denoising and simplification based on K-means clustering[J]. Journal of System Simulation, 2016, 28(10): 2329?2334.
[10] ZHAO Ping, BAI Xuewei, LI Yongkui, et al. A new method of data smoothing for scan-line point cloud in reverse engineering[J]. Advanced Materials Research, 2014, 1006/1007: 352?355.
[11] TOMASI C, MANDUCHI R. Bilateral filtering for gray and color images[C]// Proceedings of the IEEE International Conference on Computer Vision. Bombay, India: IEEE, 1998: 839?846.
[12] ZAMAN F, WONG Y P, NG B Y. Density-based denoising of point cloud[C]// Lecture Notes in Electrical Engineering. Penang, Malaysia:Springer Verlag, 2017: 287?295.
[13] LI Jia, LIN Huan, LAN Qiuping, et al. Algorithm of recognizing and correcting the outlier based on depth difference[J]. Engineering of Surveying and Mapping, 2014, 23(11): 1?6.
[14] JIANG Feng, DU Junwei, SUI Yuefei, et al. Outlier detection based on boundary and distance[J].Acta Electronica Sinica, 2010, 38(3): 700?705.
[15] 梁士超, 韓永國, 吳亞東. 改進的核密度點云去噪算法的研究與實現[J]. 計算機工程與設計, 2015, 36(5): 1285?1289. LIANG Shichao, HAN Yongguo, WU Yadong. Research and implementation of improved kernel-density denoising algorithm based on point cloud[J]. Computer and Engineering and Design, 2015, 36(5): 1285?1289.
[16] 梁新合, 梁晉, 郭成, 等. 基于自適應最優鄰域的散亂點云降噪技術研究[J]. 中國機械工程, 2010, 21(6): 639?643.LIANG Xinhe, LIANG Jin, GUO Cheng, et al. Study on scatter point cloud denoising technology based on self-adaptive optimal neighborhood[J]. China Mechanical Engineering, 2010, 21(6): 639?643.
[17] LIU Chang, YUAN Ding, ZHAO Hongwei. 3D point cloud denoising and normal estimation for 3D surface reconstruction[C]// International Conference on Robotics and Biomimetics. Zhuhai, China: IEEE, 2015: 820?825.
[18] 何東健, 邵小寧, 王丹, 等. Kinect 獲取植物三維點云數據的去噪方法[J]. 農業機械學報, 2016, 46(1): 331?336. HE Dongjian, SHAO Xiaoning, WANG Dan, et al. Denoising method of 3-D point cloud date of plants obtained by Kinect[J]. Transactions of the Chinese Society for Agricultural Machinery, 2016, 46(1): 331?336.
(編輯 劉錦偉)
Denoising method of body scanning point cloud obtained by SR300
ZHANG Mingkai, LIANG Jin, LIU Liejin, LIANG Yu, WANG Xiaoguang
(State Key Laboratory for Manufacturing Systems Engineering, School of Mechanical Engineering, Xi’an Jiaotong University, Xi’an 710049, China)
In order to avoid the disadvantages of traditional 3D body scanning system such as large volume, complex circuit and high cost, SR300 was used to get 3D body point cloud. To deal with the problem of large noise in the scanning data, a step-by-step denoising method featuring outside-in was proposed. This method could deal with scattered 3D point cloud directly without the topological relation. Firstly, the somatosensory scanning platform was designed to get the human body point cloud and the point cloud preprocessing was carried out by using the cylinder segmentation method. Then, two algorithms named statistical analysis method and ball radius method were proposed and implemented to remove outliers of different types. Finally, bilateral filtering algorithm for human depth image was tested to make sure the weight factors were suitable. Taking the single point cloud and the whole body point cloud as examples, the denoising time was only 7.52% and 3.69% of the traditional bilateral filtering, respectively. A lot of algorithm experiments were taken by using the PCL library under the VS2010 development environment. The results show that the proposed method can effectively remove the internal and external noise with the edge feature maintained, and can get better 3D body cloud data.
SR300; body scanning; point cloud denoising; depth image; bilateral filtering
10.11817/j.issn.1672-7207.2018.09.015
TP391.4
A
1672?7207(2018)09?2225?07
2017?09?06;
2017?10?28
國家自然科學基金資助項目(51675404,51421004) (Projects(51675404, 51421004) supported by the National Natural Science Foundation of China)
梁晉,博士,教授,博士生導師,從事機電控制、機器視覺等研究;E-mail: liangjin@mail.xjtu.edu.cn