龐 浩, 李 吉 平, 彭 健 鈞, 鐘 鑫
( 1.大連工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院, 遼寧 大連 116034;2.華南農(nóng)業(yè)大學(xué) 數(shù)學(xué)與信息學(xué)院, 廣東 廣州 510642 )
ICP算法的改進(jìn)及兩臺Kinect對人體的重建
龐 浩1, 李 吉 平2, 彭 健 鈞1, 鐘 鑫1
( 1.大連工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院, 遼寧 大連 116034;2.華南農(nóng)業(yè)大學(xué) 數(shù)學(xué)與信息學(xué)院, 廣東 廣州 510642 )
以在虛擬場景中建立用戶個性化全身三維幾何模型為目的,研究了一種基于價格低廉的Kinect深度攝像機(jī)進(jìn)行人體三維重建的方法。該方法將深度攝像機(jī)的標(biāo)定與傳統(tǒng)的迭代最近點(diǎn)算法相結(jié)合,控制兩臺Kinect從上下兩個視角采集人體的深度點(diǎn)云,通過標(biāo)定得到的轉(zhuǎn)移矩陣將兩個不同坐標(biāo)系的分段點(diǎn)云粗略配準(zhǔn),利用傳統(tǒng)的ICP算法尋找點(diǎn)云間重疊部分的最近點(diǎn),自動迭代成完整的三維人體點(diǎn)云,最后通過點(diǎn)云的三角網(wǎng)格化實(shí)現(xiàn)全身人體三維模型的重建。實(shí)驗(yàn)結(jié)果證明了利用Kinect快速構(gòu)建人體三維模型的可行性。
三維人體模型;點(diǎn)云配準(zhǔn);標(biāo)定;迭代最近點(diǎn)算法
三維重建技術(shù)是計算機(jī)視覺、人工智能、虛擬現(xiàn)實(shí)等前沿領(lǐng)域的熱點(diǎn)和難點(diǎn)。隨著科技的進(jìn)步和社會的發(fā)展,三維重建特別是在非接觸技術(shù)方面得到了長足進(jìn)步。在過去,傳統(tǒng)的三維重建系統(tǒng)不但機(jī)構(gòu)龐大、價格昂貴、建模成本高,而且相關(guān)設(shè)備通常需要受過專門培訓(xùn)的人員操作[1]。深度攝像機(jī)的使用,大大降低了三維重建的成本,縮減了重建的時間,在計算機(jī)圖形學(xué)和增強(qiáng)現(xiàn)實(shí)的領(lǐng)域中,具有廣闊應(yīng)用前景。利用微軟開發(fā)的Kinect深度攝像機(jī)進(jìn)行三維人體重建,不僅價格便宜,還可以迅速獲取人體的點(diǎn)云。Kinect的采集點(diǎn)云距離范圍一般為1.2~3.6 m[2]。隨著距離的增加,檢測到的點(diǎn)云精度會越來越小,盡管近距離采集人體圖像效果較好,但是無法一次采集全身圖像。課題組在前續(xù)工作中,利用Kinect采集的半身人體點(diǎn)云,通過與標(biāo)準(zhǔn)模型進(jìn)行配準(zhǔn),實(shí)現(xiàn)了半身人體的重建。針對上述問題,研究了一種基于Kinect的,將半身人體點(diǎn)云融合成全身的三維模型重建方法。
三維模型重建方法的實(shí)現(xiàn)流程如圖1所示。為實(shí)現(xiàn)全身三維模型重建,首先,使用兩臺Kinect從上下兩個角度分別獲取部分人體的三維點(diǎn)云數(shù)據(jù),并對點(diǎn)云進(jìn)行降采樣處理;其次,通過標(biāo)定兩臺攝像機(jī),得到能將兩個點(diǎn)云統(tǒng)一到同一個坐標(biāo)系下的轉(zhuǎn)移矩陣;再次,根據(jù)得到的轉(zhuǎn)移矩陣將分段點(diǎn)云進(jìn)行粗略配準(zhǔn);從次,在PCL點(diǎn)云庫[3]中利用傳統(tǒng)的迭代最近點(diǎn)(iterative closest point,ICP)算法將兩部分分段點(diǎn)云融合在一起,得到全身的人體點(diǎn)云;最后,將得到的全身點(diǎn)云分別進(jìn)行二次降采樣、分割處理,分割掉多余點(diǎn)云,采用三角化算法完成對全身人體模型的表面重建。
圖1 人體模型重建流程
點(diǎn)云采集[4]如圖2所示。被采集者可以以任意姿態(tài)站在距離攝像機(jī)適當(dāng)?shù)牟杉恢?,利用兩臺上下平行放置的Kinect,分別獲取人體上下兩部分的點(diǎn)云。在整個采集過程中,被采集者只需保持靜態(tài)姿勢幾秒鐘即可。
圖2 點(diǎn)云采集示意圖
在獲取點(diǎn)云數(shù)據(jù)后主要是對點(diǎn)云進(jìn)行降采樣處理。通常情況下,Kinect獲取的三維信息包含幾萬甚至幾十萬的三維坐標(biāo)點(diǎn)信息,為提高點(diǎn)云拼接、曲面重建的速度,采用體素化網(wǎng)格[5]方法實(shí)現(xiàn)降采樣,基本原理如圖3所示。將輸入的原始點(diǎn)云數(shù)據(jù)包圍在一個三維體素柵格里,將柵格分為若干個體素,用每個體素的重心來近似代表該體素中所有的點(diǎn),以此減少點(diǎn)云中坐標(biāo)點(diǎn)的數(shù)量,從而實(shí)現(xiàn)降采樣,并且可以通過調(diào)節(jié)體素的大小來控制點(diǎn)云的降采樣程度。
圖3 降采樣原理
ICP算法[6]是目前最常用的深度圖像配準(zhǔn)算法,ICP算法分為3種:點(diǎn)到點(diǎn)搜索法[7]、點(diǎn)到投影搜索法[8]和點(diǎn)到面搜索法[9]。ICP算法對兩幅待配準(zhǔn)深度圖像初始相對位置要求較高,它們之間的初始位置不能相差太大,否則ICP的收斂方向不確定,從而導(dǎo)致配準(zhǔn)結(jié)果不可靠。ICP算法很可能收斂于局部最優(yōu)點(diǎn),故初始相對位置對結(jié)果具有決定性影響。因此,如果想要用兩臺Kinect來實(shí)現(xiàn)點(diǎn)云的融合,必須保證將兩臺設(shè)備采集的點(diǎn)云統(tǒng)一到一個坐標(biāo)系下。
本研究結(jié)合攝像機(jī)的標(biāo)定改進(jìn)傳統(tǒng)的ICP算法。用標(biāo)定攝像機(jī)的方法來對Kinect進(jìn)行標(biāo)定,標(biāo)定后兩臺設(shè)備采集的圖像能保證列(或行)對齊。根據(jù)標(biāo)定結(jié)果,按照轉(zhuǎn)移矩陣將分段點(diǎn)云圖像統(tǒng)一到同一個坐標(biāo)中,完成手動配準(zhǔn),從而大大縮短配準(zhǔn)的相對位置,減少粗略配準(zhǔn)的時間。利用ICP算法進(jìn)行自動配準(zhǔn),完成點(diǎn)云的融合。
點(diǎn)云的拼接[10]就是把局部的點(diǎn)云進(jìn)行旋轉(zhuǎn)錯位、平移錯位,將從各個視角、不同坐標(biāo)系得到的點(diǎn)集合并到一個統(tǒng)一的坐標(biāo)系下形成一個完整的數(shù)據(jù)點(diǎn)云。
本研究采用了點(diǎn)云數(shù)據(jù)庫中最基本的ICP算法進(jìn)行迭代,選用的是點(diǎn)到點(diǎn)搜索法,具體步驟:首先,選擇各部分點(diǎn)云有重疊部分的對應(yīng)點(diǎn);其次,結(jié)合這些對應(yīng)點(diǎn)對的法向量以及坐標(biāo)位置,來估算它們的對應(yīng)關(guān)系,移動各部分點(diǎn)云的位移和角度,在每個連貫的有重疊的點(diǎn)云之間找到最佳的變換;最后,將每部分點(diǎn)云都統(tǒng)一在同一坐標(biāo)系中,完成配準(zhǔn),得到全身的人體點(diǎn)云。
表面重建技術(shù)在逆向工程、數(shù)據(jù)可視化、機(jī)器視覺、虛擬現(xiàn)實(shí)、醫(yī)療技術(shù)等領(lǐng)域得到廣泛應(yīng)用[11],只有進(jìn)行表面重建,才能得到想要實(shí)體的三維模型。
本研究根據(jù)拼接得到全身點(diǎn)云數(shù)據(jù),利用貪婪投影三角化算法[12],對其進(jìn)行表面重建。該算法的原理是先將有向點(diǎn)云投影到某一局部二維坐標(biāo)平面內(nèi),在坐標(biāo)平面內(nèi)進(jìn)行平面內(nèi)的三角化,再根據(jù)平面內(nèi)三維點(diǎn)的拓?fù)溥B接關(guān)系獲得一個三角網(wǎng)格曲面模型。在構(gòu)建三角形時,主要采用了KD-Tree[13]的搜索方法對被樣本點(diǎn)的鄰域進(jìn)行掃描,通過設(shè)置三角形的內(nèi)角、邊長、鄰域范圍來進(jìn)行三角化。三角化過程即把全身點(diǎn)云中的每個點(diǎn)連接成若干個三角形,以便對三維模型進(jìn)行光照處理和三維現(xiàn)實(shí)。
首先對人體上、下兩部分點(diǎn)云進(jìn)行采集,控制兩臺Kinect對人體同時進(jìn)行捕捉,采集距離為1.5 m,結(jié)果如圖4(a)所示。對點(diǎn)云進(jìn)行降采樣處理,以降低點(diǎn)云的數(shù)量從而提高計算機(jī)運(yùn)行速度。利用體素化網(wǎng)格法將點(diǎn)云轉(zhuǎn)化為包含有若干個邊長為2 cm體素的柵格,降采樣的結(jié)果如圖4(b) 所示。
在對點(diǎn)云進(jìn)行降采樣處理之后,對降采樣前后點(diǎn)云中點(diǎn)的數(shù)量進(jìn)行了統(tǒng)計,結(jié)果如表1所示。從表1可看出,降采樣率高達(dá)96%,降采樣大大減少了點(diǎn)云中點(diǎn)的數(shù)量,為下一步點(diǎn)云的拼接提供了方便。
(a) 降采樣前 (b) 降采樣后
采樣部位降采樣前點(diǎn)云的數(shù)量降采樣后點(diǎn)云的數(shù)量降采樣率/%上部分51133193096.23下部分223795812196.37
標(biāo)定工具有很多,如OpenCV、Matlab等[14]。本研究采用Matlab的標(biāo)定工具箱[15]和一個黑白格標(biāo)定板來進(jìn)行攝像機(jī)的標(biāo)定。將兩臺Kinect 分別上下水平擺放在平面上,通過來回翻轉(zhuǎn)標(biāo)定板,分別采集20個不同方向的標(biāo)定板。利用標(biāo)定工具箱,手動采集每一幅棋盤格最邊上的4個邊角,即可將棋盤格上所有的交點(diǎn)采集出來,完成兩臺設(shè)備的單體標(biāo)定。接著運(yùn)行工具箱的立體標(biāo)定程序,得到上攝像頭的內(nèi)參數(shù)矩陣:
下攝像頭的內(nèi)參數(shù)矩陣:
平移矩陣:
旋轉(zhuǎn)矩陣:
[0.406 62 -0.015 37 -0.060 82]
對于標(biāo)定得到的平移向量T和旋轉(zhuǎn)向量om,轉(zhuǎn)移向量可以通過羅德里格斯變換[16]轉(zhuǎn)為3×3的轉(zhuǎn)移矩陣,再加上平移向量組成一個4×4的轉(zhuǎn)換矩陣,用于兩個分段點(diǎn)云的粗略配準(zhǔn)。由于在標(biāo)定過程中的單位是mm,而PCL中默認(rèn)單位是m,因此,轉(zhuǎn)移矩陣F為
將轉(zhuǎn)移矩陣代入PCL點(diǎn)云庫中對點(diǎn)云進(jìn)行配準(zhǔn)。點(diǎn)云的拼接過程如圖5所示。圖5(a)為利用兩臺Kinect分別采集的上下兩部分人體點(diǎn)云。利用標(biāo)定后得到的轉(zhuǎn)移矩陣F,對點(diǎn)云進(jìn)行手動移動,從而進(jìn)行粗略配準(zhǔn),得到圖5(b)。對標(biāo)定的轉(zhuǎn)移矩陣F進(jìn)行手動調(diào)整是根據(jù)相機(jī)標(biāo)定的作用,上下兩臺攝像頭只能保證列對齊,左右兩臺只能保證行對齊。標(biāo)定后如圖5(b)所示,X、Z方向的位移向量都是準(zhǔn)確的,而Y方向需要手動調(diào)整,通過調(diào)試最終把0.131 7改成了0.631 7,最終自動配準(zhǔn)后的全身點(diǎn)云為圖5(d)所示。
(a) 采集的分段點(diǎn)云 (b) 坐標(biāo)系轉(zhuǎn)換后的點(diǎn)云
圖5 點(diǎn)云的采集和融合
Fig.5 Collection and fusion of point cloud
在點(diǎn)云拼接過程中,通過調(diào)整不同迭代次數(shù)(n=5,10,20)下的點(diǎn)對最大距離(d=5,10,20 cm) 測試點(diǎn)云拼接效果。
通過試驗(yàn)發(fā)現(xiàn),在對應(yīng)點(diǎn)之間的最大距離為5 cm時,無論迭代多少次,點(diǎn)云都沒有移動,無法實(shí)現(xiàn)點(diǎn)云融合,對應(yīng)點(diǎn)對的最大距離d是點(diǎn)云融合的重要參數(shù);當(dāng)d=10 cm時,至少迭代9次才能實(shí)現(xiàn)理想的拼接效果,如圖5(d)所示;而當(dāng)d=20 cm時,至少需要進(jìn)行14次迭代。在可實(shí)現(xiàn)融合的匹配過程中,最短用時約10 s(d=10 cm,n=9),實(shí)現(xiàn)了三維建模的時效性。
由圖5(d)可以看出,除人體點(diǎn)云外,還殘留了人體站立地面的點(diǎn)云,同時由于點(diǎn)云拼接,導(dǎo)致點(diǎn)云密度不一致,需對全身點(diǎn)云進(jìn)行分割和二次降采樣處理。對于分割處理,通過觀察點(diǎn)云PCD文件中各點(diǎn)的三維坐標(biāo),設(shè)最大值為閾值進(jìn)行分割;二次降采樣體素大小為3 cm。經(jīng)分割后得到的三維人體點(diǎn)云如圖6所示。以三維人體點(diǎn)云為輸入源,利用貪婪三角化的方法進(jìn)行表面重建,實(shí)現(xiàn)點(diǎn)云的三角化。相關(guān)試驗(yàn)參數(shù)為三角形的最大邊長為5 cm,最小內(nèi)角為10°,最大內(nèi)角為120°,被樣本點(diǎn)搜索的鄰近點(diǎn)最遠(yuǎn)距離為2.5 m。三角化后的結(jié)果如圖7所示。
(a) 降采樣后的點(diǎn)云(b) 分割處理后的點(diǎn)云
圖7 三角化表面重建
通過結(jié)果發(fā)現(xiàn),人體基本外形信息可以通過本試驗(yàn)方法獲得,如身高、體寬等。但是結(jié)果出現(xiàn)孔洞,臉部、四肢特征不夠清晰等問題。因此,表面重建的方法有待進(jìn)一步研究。
通過點(diǎn)云獲取、點(diǎn)云處理、表面重建等過程,初步獲得了全身人體三維模型。雖然實(shí)現(xiàn)了使用Kinect獲得全身人體的點(diǎn)云,并通過標(biāo)定攝像機(jī)大大縮短了粗略配準(zhǔn)的時間,但是還有以下幾個不足之處,需要進(jìn)一步研究。
(1)一個完整、逼真的三維人體重建,不僅僅需要對點(diǎn)云進(jìn)行三角化建網(wǎng)來進(jìn)行表面重建,同時還需要對顏色信息進(jìn)行采集和配準(zhǔn),因此,必須對網(wǎng)格化的模型進(jìn)行RGB信息的采集以及紋理映射的添加。
(2)在曲面重建方面需要研究更好的三角化方法,修復(fù)孔洞,光順三角面片間的過渡。
(3)試驗(yàn)是在Kinect第一代的設(shè)備下進(jìn)行操作的,由于設(shè)備精度的限制,捕捉的人體信息不完整,隨著硬件設(shè)備的不斷升級,Kinect的精度會更高,效果會越來越好。
[1] 賈小軍,喻擎蒼.基于開源計算機(jī)視覺庫OpenCV的圖像處理[J].計算機(jī)應(yīng)用與軟件,2008,25(4):18-22.
[2] 王君.基于Kinect的三維場景重建研究[D].長沙:中南大學(xué),2013.
[3] 朱德海,郭浩.點(diǎn)云庫PCL學(xué)習(xí)教程[M].北京:北京航空航天大學(xué)出版社,2012.
[4] 朱笑笑,曹其新,楊揚(yáng),等.一種改進(jìn)的KinectFusion三維重構(gòu)算法[J].機(jī)器人,2014,36(2):129-136.
[5] 劉勝蘭,周儒榮,聶軍洪.主曲率均勻的網(wǎng)格光順[J].計算機(jī)學(xué)報,2004,27(1):79-84.
[6] 李世飛,王平,沈正康.迭代最近點(diǎn)算法研究進(jìn)展[J].信號處理,2009,25(10):1583-1588.
[7] BESL P J, MCKAY N D. A method for registration of 3-D shapes[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1992, 14(2): 239-256.
[8] NISHINO K, IKENUEHI K. Robust simultaneous registration of multiple range images comprising a large number of points[J]. Electronics and Communications in Japan, 2004, 87(8): 61-74.
[9] CHEN Y, MEDIONI G G. Object modeling by registration of multiple range images[J]. Image and Vision Computing, 1992, 10(3): 145-155.
[10] 伍毅.三維掃描信息獲取的深度圖像配準(zhǔn)算法設(shè)計及開發(fā)[D].杭州:浙江大學(xué),2005.
[11] 洪峰,梅炯,李明祿.醫(yī)學(xué)圖像三維重建技術(shù)綜述[J].中國圖象圖形學(xué)報(A),2003,8(S):784-785.
[12] 高福順,張晶林,梁學(xué)章.由點(diǎn)云數(shù)據(jù)生成三角網(wǎng)格曲面的區(qū)域增長算法[J].吉林大學(xué)學(xué)報,2008,46(3):414-416.
[13] GREEN M, YURICK M. Approximate k-d tree search for efficient ICP[C]//Proceedings of the 4th International Conference on 3D Digital Imaging and Modeling. Banff: IEEE, 2003: 442-448.
[14] ZHANG Z Y. A flexible new technique for camera calibration[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22(11): 1330-1334.
[15] 張曦,黃亮,徐洋,等.基于Matlab中calibration toolbox的相機(jī)標(biāo)定應(yīng)用研究[J].微型機(jī)與應(yīng)用,2011,30(14):30-33.
[16] 于仕琪,劉瑞禎.學(xué)習(xí)OpenCV(中文版)[M].北京:清華大學(xué)出版社,2009.
ImprovementofICPalgorithmandfull-bodyreconstructionbasedontwoKinects
PANGHao1,LIJiping2,PENGJianjun1,ZHONGXin1
( 1.SchoolofInformationScienceandEngineering,DalianPolytechnicUniversity,Dalian116034,China;2.CollegeofMathematicsandInformatics,SouthChinaAgriculturalUniversity,Guangzhou510642,China)
A method of three-dimensional reconstruction of the human body based on the low price Kinect depth camera was presented to build personalized full-body 3D geometry shapes reconstruction in the virtual scenes for approximating the personalized users. In this method, the two top-down human depth point clouds were captured combining the calibration of depth camera with the traditional ICP algorithm. Then two different coordinates of the point clouds were registered roughly by the transfer matrix which was obtained through the camera calibration, using ICP to find the closest point between the point clouds’ overlapping part. A complete three-dimensional of human point cloud body was generated by automatic iteration, and the 3D human body was constructed by triangulation. The results indicated the feasibility of the system for reconstructing human model.
3D human body; point cloud registration; camera calibration; iterative closest point agorithm
龐浩,李吉平,彭健鈞,鐘鑫.ICP算法的改進(jìn)及兩臺Kinect對人體的重建[J].大連工業(yè)大學(xué)學(xué)報,2017,36(6):459-463.
PANG Hao, LI Jiping, PENG Jianjun, ZHONG Xin. Improvement of ICP algorithm and full-body reconstruction based on two Kinects[J]. Journal of Dalian Polytechnic University, 2017, 36(6): 459-463.
2016-03-14.
遼寧省自然科學(xué)基金項(xiàng)目(2014026001);遼寧省博士科研啟動基金項(xiàng)目(20141112);遼寧省教育廳科學(xué)研究一般項(xiàng)目(L2014219).
龐 浩(1990-),男,碩士研究生,通信作者:李吉平(1971-),男,教授.
TP391.41
A
1674-1404(2017)06-0459-05