賈鶴鳴,孟羽佳,邢致愷,朱柏卓,彭曉旭,李金奪
東北林業(yè)大學(xué) 機(jī)電工程學(xué)院,黑龍江 哈爾濱 150040
目前大多使用點(diǎn)云配準(zhǔn)法來進(jìn)行植物模型的三維重建,這方面的研究已經(jīng)在科研領(lǐng)域發(fā)展多年,很多學(xué)者對(duì)重建過程中的不同步驟提出了較為有效的方法[1-3]。最為經(jīng)典的算法是1992年P(guān)aul J. Besl和Neil D. McKay提出的迭代最近點(diǎn)(iterative closest point,ICP)算法,這個(gè)算法至今在學(xué)術(shù)界仍具有很高的地位,在此之后提出的很多配準(zhǔn)算法都是基于ICP算法的改進(jìn)。該配準(zhǔn)算法將2個(gè)不同視角得到的點(diǎn)云通過不斷的迭代,配準(zhǔn)在一個(gè)世界坐標(biāo)系下,形成一個(gè)點(diǎn)云。除此之外,還有許多學(xué)者提出了很多不同的配準(zhǔn)算法,比如Radu Bogdan Rusu等于2009年提出了采樣一致性初始配準(zhǔn)(sample consensus initial alignment,SAC-IA)算法,該算法引入快速點(diǎn)特征直方圖(fast point feature histograms,F(xiàn)PFH)對(duì)點(diǎn)云的特征進(jìn)行描述,獲得了較好的初始配準(zhǔn)效果[4]。
但是上述配準(zhǔn)方法對(duì)配準(zhǔn)參數(shù)的要求較高,且多幅連續(xù)配準(zhǔn)時(shí)易產(chǎn)生累計(jì)誤差。本文主要針對(duì)上述問題,提出一種新的、簡(jiǎn)易的應(yīng)用于植物建模領(lǐng)域的三維模型重建方法,與傳統(tǒng)點(diǎn)云配準(zhǔn)法相比本文提出的算法具有較高的運(yùn)算效率,具有較強(qiáng)的工程實(shí)用性。
要獲得三維彩色點(diǎn)云,需要對(duì)深度圖像和彩色圖像中的像素點(diǎn)進(jìn)行匹配,也就是在深度圖上附加彩色圖的像素信息,然后再分別獲得深度相機(jī)和彩色相機(jī)的內(nèi)參數(shù)矩陣,就可以獲得三維彩色點(diǎn)云。通過推導(dǎo),可以得到二維深度圖像和二維彩色圖像中對(duì)應(yīng)像素點(diǎn)的坐標(biāo)映射關(guān)系如式(1)。
prgb=Krgb-1MrgbMir-1Kirpir
(1)
通過深度圖像中某點(diǎn)坐標(biāo)pir,即可通過代入式(1)得到在彩色圖像中的對(duì)應(yīng)點(diǎn)坐標(biāo)prgb,那么最后通過式(1)得到的三維點(diǎn)就有了對(duì)應(yīng)的顏色值。對(duì)于深度相機(jī)的內(nèi)參數(shù)矩陣Kir,深度相機(jī)的外參數(shù)矩陣Mir,彩色相機(jī)的內(nèi)參數(shù)矩陣Krgb,彩色相機(jī)的外參數(shù)矩陣Mrgb這4個(gè)參量矩陣,可以通過相機(jī)標(biāo)定法獲得。但由于微軟公司在推出Kinect體感設(shè)備的同時(shí)也發(fā)布了Kinect SDK,在里面提供有這4個(gè)參量矩陣,并且上述匹配過程在Kinect SDK中已經(jīng)進(jìn)行封裝,因此可直接調(diào)用相關(guān)函數(shù)來實(shí)現(xiàn)。圖1為Kinect采集得到的深度和彩色圖像。

(a) 深度圖

(b) RGB圖圖1 Kinect得到的二維圖像數(shù)據(jù)
通過深度圖像與RGB圖像的匹配獲得的三維彩色點(diǎn)云如圖2所示。

圖2 匹配得到的三維彩色點(diǎn)云
Kinect V2的默認(rèn)采集范圍在z方向上是0.5~4.5 m,在x方向上是70°,在y方向上是60°,所以采集得到的的點(diǎn)云將會(huì)包含背景、地面等不需要的點(diǎn)云,而且會(huì)影響植物的建模,因此采用直通濾波對(duì)采集的點(diǎn)云進(jìn)行處理,使其得到在一定范圍限定內(nèi)的點(diǎn)云。然后還要對(duì)點(diǎn)云進(jìn)行統(tǒng)計(jì)濾波,該方法是空間中基于在輸入數(shù)據(jù)中對(duì)點(diǎn)到臨近點(diǎn)的距離分布計(jì)算的方法,能夠完成對(duì)三維點(diǎn)云數(shù)據(jù)中離群點(diǎn)的去除,使點(diǎn)云文件中的點(diǎn)云質(zhì)量得到有效提高[5-6]。圖3為直通濾波后的處理結(jié)果。

圖3 去除背景和地面后的目標(biāo)物體點(diǎn)云
統(tǒng)計(jì)濾波器的實(shí)現(xiàn)是基于對(duì)每個(gè)點(diǎn)的鄰域進(jìn)行統(tǒng)計(jì)分析。首先設(shè)定一個(gè)距離閾值“distance”和點(diǎn)個(gè)數(shù)閾值“number”。然后統(tǒng)計(jì)點(diǎn)云中其余點(diǎn)與該待定點(diǎn)的距離,找出距離最近的前“number”個(gè)點(diǎn),第“number”個(gè)點(diǎn)與待定點(diǎn)的距離如果大于閾值“distance”,那么則判定該待定點(diǎn)為離群點(diǎn)[7-9]。為了提高搜索速度,借助一種存儲(chǔ)和表示三維數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),既能夠方便地存儲(chǔ)三維數(shù)據(jù),又能夠進(jìn)行高效率的搜索,因此本文采用“kd-tree”算法來實(shí)現(xiàn)。圖4為去除離群噪聲點(diǎn)前后對(duì)比圖。

(a) 原始點(diǎn)云圖

(b) 去除離群噪聲點(diǎn)后的點(diǎn)云圖
通過對(duì)比圖4(a)和4(b)可以發(fā)現(xiàn),離群噪聲點(diǎn)已經(jīng)得到了有效地去除,點(diǎn)云中只留下了有用的植物點(diǎn)云部分。但是此時(shí)發(fā)現(xiàn)也有部分有用的信息被誤去除了,這是因?yàn)樵诋?dāng)前拍攝角度下,該葉子中間部分所采集到的點(diǎn)云很少,所以被算法誤判為離群點(diǎn)[10-11]。不過由于在后面要進(jìn)行的重建工作前,要對(duì)目標(biāo)物體進(jìn)行多個(gè)方向的點(diǎn)云采集,在這次采集中沒有很好地拍攝到的葉片部分,在其他角度的拍攝中可以拍攝得很完全,所以總的植物葉片信息還是很完整的,不影響重建效果。另外,實(shí)際的去噪效果和統(tǒng)計(jì)濾波的參數(shù)大小有關(guān),在進(jìn)行實(shí)際的重建工作之前,還應(yīng)該根據(jù)實(shí)際情況適時(shí)調(diào)整參數(shù),以獲得最好的效果。
使用“點(diǎn)云拼接法”進(jìn)行植物重建分為4個(gè)步驟:
1)將一個(gè)轉(zhuǎn)盤放在Kinect正前方的地面上,采集它連同地面的點(diǎn)云,然后計(jì)算轉(zhuǎn)盤的高度。
2)將一支筆立在轉(zhuǎn)盤中心的轉(zhuǎn)軸處,采集它的點(diǎn)云,計(jì)算最高點(diǎn)筆尖處的三維坐標(biāo)(a,b,c)以獲得轉(zhuǎn)軸信息。
3)將將要重建的植物盆栽放在這個(gè)轉(zhuǎn)盤上,每采集一次點(diǎn)云,就順時(shí)針旋轉(zhuǎn)轉(zhuǎn)盤60°,共采集6次點(diǎn)云。
4)將第2次采集的點(diǎn)云沿著轉(zhuǎn)軸逆時(shí)針旋轉(zhuǎn)60°,將第3次采集的點(diǎn)云沿著轉(zhuǎn)軸逆時(shí)針旋轉(zhuǎn)120°,將第4次采集的點(diǎn)云沿著轉(zhuǎn)軸逆時(shí)針旋轉(zhuǎn)180°,將第5次采集的點(diǎn)云沿著轉(zhuǎn)軸逆時(shí)針旋轉(zhuǎn)240°,將第6次采集的點(diǎn)云沿著轉(zhuǎn)軸逆時(shí)針旋轉(zhuǎn)300°。此時(shí)得到的點(diǎn)云文件就是由6個(gè)角度采集的點(diǎn)云拼接而成的,從而完成了點(diǎn)云的拼接。接下來介紹第4)步中用到的點(diǎn)云繞軸旋轉(zhuǎn)的原理:
在本應(yīng)用中,由于轉(zhuǎn)軸垂直于地面,所以轉(zhuǎn)軸是平行于y軸的,因此點(diǎn)云中的點(diǎn)在繞轉(zhuǎn)軸旋轉(zhuǎn)時(shí),這些點(diǎn)的y坐標(biāo)不變。所以該問題可以簡(jiǎn)化為在二維平面上,一點(diǎn)繞另一點(diǎn)旋轉(zhuǎn)一定角度的運(yùn)動(dòng),示意圖如圖5所示。

圖5 平面上的繞點(diǎn)旋轉(zhuǎn)
設(shè)待旋轉(zhuǎn)點(diǎn)云中的某三維點(diǎn)為P(x,y,z),旋轉(zhuǎn)軸筆尖處的三維點(diǎn)為Q(a,b,c),點(diǎn)P繞旋轉(zhuǎn)軸逆時(shí)針旋轉(zhuǎn)θ度,得到點(diǎn)P’。那么如上所述,y軸坐標(biāo)將與點(diǎn)在xoz平面上的運(yùn)動(dòng)無關(guān),因此為了方便推導(dǎo),設(shè)圖5中的二維點(diǎn)v(x,z)為點(diǎn)P在xoz平面上的投影點(diǎn),二維點(diǎn)v′(x′,z′)為點(diǎn)P’在xoz平面上的投影點(diǎn),二維點(diǎn)w(a,c)為點(diǎn)Q在xoz平面上的投影點(diǎn),從而將點(diǎn)P、點(diǎn)P’和點(diǎn)Q簡(jiǎn)化為圖5中的二維點(diǎn)。因此問題簡(jiǎn)化為:點(diǎn)v(x,z)繞點(diǎn)w(a,c)旋轉(zhuǎn)θ度,得到點(diǎn)v′(x′,z′)。
首先將點(diǎn)v(x,z)和點(diǎn)w(a,c)同時(shí)移動(dòng),使點(diǎn)w(a,c)移到原點(diǎn)位置,則此時(shí)點(diǎn)v(x,z)位置為式(2):

(2)
可以寫成如式(3)的矩陣形式:

(3)
然后將v′(x′,z′)繞原點(diǎn)逆時(shí)針旋轉(zhuǎn)θ度,得到新的v′(x′,z′),如圖5,有如式(4)關(guān)系:

(4)
將式(4)的后兩項(xiàng)展開,然后將前2項(xiàng)代入后2項(xiàng)中,得
(5)
將式(5)寫成矩陣形式,有
(6)
最后將點(diǎn)v′(x′,z′)和點(diǎn)w同時(shí)移動(dòng),使點(diǎn)w回到原位置(a,c),則此時(shí)點(diǎn)v′(x′,z′)的位置為式(7)。

(7)
寫成矩陣形式為

(8)
經(jīng)過這3步,即可實(shí)現(xiàn)點(diǎn)v(x,z)繞點(diǎn)w(a,c)旋轉(zhuǎn)θ度。將式(3)、(6)、(8)聯(lián)立并化簡(jiǎn)得

(9)
式(9)為點(diǎn)v(x,z)繞點(diǎn)w(a,c)旋轉(zhuǎn)θ度得到點(diǎn)v′(x′,z′)的公式,那么由于點(diǎn)P(x,y,z)在繞軸旋轉(zhuǎn)過程中的y坐標(biāo)不變,因此當(dāng)旋轉(zhuǎn)軸筆尖處的三維點(diǎn)為Q(a,b,c)時(shí),點(diǎn)P繞旋轉(zhuǎn)軸逆時(shí)針旋轉(zhuǎn)θ度得到點(diǎn)P’的公式為

至此可以在獲取到旋轉(zhuǎn)軸的坐標(biāo)信息后,將點(diǎn)云繞軸旋轉(zhuǎn)至任意角度值θ。算法的流程圖如圖6所示。

圖6 點(diǎn)云拼接算法流程
為了與點(diǎn)云拼接法進(jìn)行重建的實(shí)驗(yàn)結(jié)果進(jìn)行對(duì)比,采用傳統(tǒng)的SAC-IA算法和ICP算法來進(jìn)行重建實(shí)驗(yàn)[12-14]。其中SAC-IA算法用來進(jìn)行粗配準(zhǔn),它先對(duì)點(diǎn)云進(jìn)行降采樣,然后在待配準(zhǔn)點(diǎn)云中提取點(diǎn)的特征FPFH,然后在目標(biāo)點(diǎn)云中選取對(duì)應(yīng)配對(duì)點(diǎn),進(jìn)而根據(jù)配對(duì)點(diǎn)計(jì)算兩個(gè)點(diǎn)云的初始變換矩陣,完成粗配準(zhǔn)。接下來再使用ICP算法對(duì)點(diǎn)云進(jìn)行精確配準(zhǔn)。
在使用SAC-IA和ICP算法對(duì)點(diǎn)云進(jìn)行配準(zhǔn)實(shí)驗(yàn)的過程中,選取以下參數(shù)設(shè)置為配準(zhǔn)的參數(shù),如表1、2所示。

表1 SAC-IA配準(zhǔn)參數(shù)表

表2 ICP配準(zhǔn)參數(shù)表
使用以上參數(shù),在不同視角下對(duì)植物盆栽的不同方向均勻地采集了30次植物盆栽的點(diǎn)云,平均每個(gè)視角所相差的角度約為12°,配準(zhǔn)結(jié)果如圖7所示。

(a) 正視圖

(b) 左視圖

(c) 后視圖

(d) 右視圖

(e) 仰視圖

(f) 俯視圖
觀察圖7的配準(zhǔn)結(jié)果可以發(fā)現(xiàn),點(diǎn)云之間有比較明顯的距離,植物的葉片不能夠明顯地區(qū)分開,配準(zhǔn)效果不好。造成這個(gè)實(shí)驗(yàn)結(jié)果的原因可能是在這次配準(zhǔn)過程中,配準(zhǔn)的參數(shù)可能不是最優(yōu)的,因此導(dǎo)致最終的配準(zhǔn)結(jié)果不理想,并且此方法的計(jì)算耗時(shí)也較長(zhǎng),因此本文提出了點(diǎn)云拼接法以期望得到更好的重建速度和重建效果。
根據(jù)上節(jié)分析的原理進(jìn)行點(diǎn)云拼接的實(shí)驗(yàn),將6個(gè)由不同視角采集的點(diǎn)云拼接到一起。首先將轉(zhuǎn)盤放置于地面,采集它的點(diǎn)云信息以及計(jì)算高度值,以便后面去除地面以及轉(zhuǎn)盤的點(diǎn)云,轉(zhuǎn)盤如圖8所示。

圖8 用于點(diǎn)云拼接的轉(zhuǎn)盤
第2步是獲取轉(zhuǎn)軸的位置信息,方法是在轉(zhuǎn)盤中心的圓形孔洞中豎直地立一支筆,如圖9所示。

圖9 利用筆尖點(diǎn)云獲取轉(zhuǎn)軸位置信息
然后采集點(diǎn)云得到點(diǎn)云文件,統(tǒng)計(jì)該點(diǎn)云文件中y軸坐標(biāo)最大的點(diǎn)即為筆尖處的點(diǎn)。于是得到式(11)中的a=0.039 869 3,c=0.81。獲得此轉(zhuǎn)軸信息后,接下來就可以將采集到的點(diǎn)云繞軸旋轉(zhuǎn)任意角度值θ了。
第3步是進(jìn)行點(diǎn)云的采集。將植物盆栽放在轉(zhuǎn)盤上,一共需要采集6次點(diǎn)云,每次采集后需要轉(zhuǎn)動(dòng)轉(zhuǎn)盤60°。如圖10所示。

圖10 植物放置于轉(zhuǎn)盤上進(jìn)行采集
第4步是進(jìn)行點(diǎn)云拼接,分別繞軸轉(zhuǎn)動(dòng)相應(yīng)的角度,將之前采集的6個(gè)不同視角的點(diǎn)云拼接到一起,完成了植物三維模型的建立。結(jié)果如圖11所示。

(a) 正視圖

(b) 左視圖

(c) 后視圖

(d) 右視圖

(e) 仰視圖

(f) 俯視圖
觀察重建的結(jié)果,發(fā)現(xiàn)該算法將不同視角采集到的點(diǎn)云準(zhǔn)確地拼接在了一起,實(shí)現(xiàn)了將植物盆栽重建出完整模型的功能。現(xiàn)將使用點(diǎn)云拼接法得到的實(shí)驗(yàn)結(jié)果與用給定參數(shù)實(shí)施點(diǎn)云配準(zhǔn)法得到的結(jié)果進(jìn)行對(duì)比,如表3所示。重建結(jié)果如圖12。

表3 實(shí)驗(yàn)結(jié)果對(duì)比

(a) 點(diǎn)云配準(zhǔn)法

(b) 點(diǎn)云拼接法
觀察結(jié)果可以發(fā)現(xiàn),用點(diǎn)云拼接的方法進(jìn)行植物重建過程僅用時(shí)4.376 s,速度很快并且重建效果較好。在本文所做點(diǎn)云配準(zhǔn)實(shí)驗(yàn)所用的配準(zhǔn)參數(shù)下,配準(zhǔn)結(jié)果不是很理想,使用點(diǎn)云拼接法獲得的重建結(jié)果更好。
本文針對(duì)植物葉片的三維重建研究主要完成了以下工作:1)利用Kinect獲取彩色點(diǎn)云;2)點(diǎn)云的濾波;3)點(diǎn)云的拼接等方面的工作。這些工作對(duì)于三維重建技術(shù)在植物建模方面的工作具有一定的推廣意義。但是點(diǎn)云拼接法也有自身的缺點(diǎn):1)只能對(duì)可移動(dòng)的盆栽植物進(jìn)行重建,因?yàn)橹亟ǖ倪^程需要在轉(zhuǎn)盤上進(jìn)行,所以這是它的限制條件之一;2)這種方法重建的精確度取決于手動(dòng)的操作精度,比如花盆的軸心與圓盤的軸心的重合程度是否足夠高,以及每次轉(zhuǎn)動(dòng)的角度是否精確等。所以除了重建的精確度取決于手動(dòng)的操作精度之外,還有就是應(yīng)用場(chǎng)合比用配準(zhǔn)的方式實(shí)現(xiàn)重建范圍窄,目前只能用于小型可移動(dòng)的物體,因此增加點(diǎn)云拼接法的適用范圍也是下一步研究的重點(diǎn)。