師 翊 何 鵬 胡少軍 張志毅 耿 楠 何東健
(1.西北農(nóng)林科技大學(xué)機(jī)械與電子工程學(xué)院, 陜西楊凌 712100; 2.西北農(nóng)林科技大學(xué)信息工程學(xué)院, 陜西楊凌 712100)
樹是十分常見(jiàn)的自然景觀之一,在農(nóng)林生產(chǎn)中,許多樹種也是重要的經(jīng)濟(jì)作物,構(gòu)建樹的三維模型和模擬樹的生長(zhǎng)過(guò)程對(duì)研究植物生長(zhǎng)規(guī)律有著重要意義[1]。在自然環(huán)境中,樹的幾何結(jié)構(gòu)復(fù)雜,如何重構(gòu)樹的三維模型一直是現(xiàn)代農(nóng)業(yè)信息化領(lǐng)域與計(jì)算機(jī)圖形學(xué)研究中的一個(gè)難題。近年來(lái),信息技術(shù)與農(nóng)業(yè)的聯(lián)系愈發(fā)緊密,“數(shù)字植物”概念的提出,為樹木的研究提供了新的思路與手段[2]。
樹的可視化三維模型始于HONDA[3]提出的遞歸樹模型。目前對(duì)于樹的建模可以歸納為以下幾類:基于規(guī)則的建模、基于草圖的建模、基于圖像的建模和基于點(diǎn)云數(shù)據(jù)的建模。基于規(guī)則的建模主要有PRUSINKIEWICZ等[4]提出的改進(jìn)L-system以及LINERMANN等[5]提出的Xfrog系統(tǒng)。基于規(guī)則的方法依據(jù)樹木的分形特征提出,能夠在短時(shí)間內(nèi)建立真實(shí)感較高的樹模型,但是重建出的模型植物學(xué)特征細(xì)節(jié)展現(xiàn)不夠?;诓輬D的建模主要由OKABE等[6]提出,用戶需要勾勒出樹枝或者樹冠的輪廓草圖即可推算生成三維模型,WITHER等[7]對(duì)此方法進(jìn)行改進(jìn),用戶只需繪制樹的輪廓即可重建三維模型。但是基于草圖方法生成的樹模型只能反映樹的二維結(jié)構(gòu),樹冠層內(nèi)部的三維形態(tài)依據(jù)模型庫(kù)生成,且重建的精度不高。基于圖像的建模方法主要是根據(jù)樹的真實(shí)照片、視頻等恢復(fù)樹的三維信息。QUAN等[8]以及TAN等[9]實(shí)現(xiàn)了基于多幅圖像的樹模型三維重建,該方法使用樹的真實(shí)圖像較好地重建了樹的三維幾何模型,但是需要從不同角度采集多幅圖像,圖像的復(fù)雜背景對(duì)重建精度影響很大,重建的精度較低?;邳c(diǎn)云數(shù)據(jù)的重建方法是使用三維激光掃描設(shè)備采集植物的三維點(diǎn)云數(shù)據(jù),在此基礎(chǔ)上進(jìn)行三維重建。XU等[10]提出了基于樹的單面掃描點(diǎn)云重建三維模型的方法;LIVNY等[11]提出基于Lobe的樹重建方法,將樹的冠層分為多個(gè)Lobe,并根據(jù)模型庫(kù)合成Lobe內(nèi)部樹枝,生成了完整的樹三維模型;XIE等[12]基于實(shí)測(cè)點(diǎn)云數(shù)據(jù)構(gòu)建樹的范例庫(kù),提高了重建模型的真實(shí)感;RUNIONS等[13]將空間殖民算法從二維空間擴(kuò)展到三維空間,進(jìn)行了樹的重構(gòu);ZHANG等[14]在提取骨架時(shí),直接將冠層的特征點(diǎn)作為骨架點(diǎn),使用粒子流法將骨架連接,取得了較好的重建效果;唐麗玉等[15]基于冠層特征點(diǎn)與主干骨架點(diǎn)的拓?fù)潢P(guān)系重構(gòu)出了精度較高的樹三維模型。
與本文關(guān)聯(lián)較為密切的是文獻(xiàn)[13-15]提出的重構(gòu)方法,原空間殖民算法雖然可以重構(gòu)出高真實(shí)感的樹模型,但是冠層點(diǎn)云基于規(guī)則生成,與真實(shí)樹有一定差距,并且會(huì)有部分不合理的枝條出現(xiàn);文獻(xiàn)[14]中提取骨架的方法對(duì)枝干細(xì)節(jié)模擬不夠;文獻(xiàn)[15]使用分治思想,將枝干與樹葉分離后再生成完整骨架,過(guò)程較為繁瑣,并且在枝條建模時(shí),人為設(shè)定細(xì)枝的半徑是父節(jié)點(diǎn)半徑的0.8倍,影響了模型精度,此外,使用的掃描設(shè)備較為昂貴,不利于普及。
本文以實(shí)測(cè)點(diǎn)云為依據(jù),嘗試一種高精度、低成本的方法重建樹的三維模型。使用Kinect 2.0多角度采集樹的原始點(diǎn)云數(shù)據(jù),采用人工標(biāo)記法與迭代最近點(diǎn)(Iterative closest point,ICP)算法結(jié)合的配準(zhǔn)方法獲得完整點(diǎn)云數(shù)據(jù),以真實(shí)樹點(diǎn)云作為輸入對(duì)象,采用改進(jìn)的空間殖民算法提取樹點(diǎn)云對(duì)應(yīng)的三維骨架,基于骨架坐標(biāo)由廣義圓柱體表示樹干的幾何模型,再通過(guò)葉序規(guī)則添加樹葉,最終得到樹的三維模型。
數(shù)據(jù)獲取采用微軟公司生產(chǎn)的Kinect 2.0作為采集設(shè)備。Kinect 2.0是Kinect 1.0的更新版本[16],采用飛行時(shí)間原理(Time of flight)獲取點(diǎn)云數(shù)據(jù),精度更高,可達(dá)0.02 mm,有效深度范圍0.5~4.5 m,有效幀率30 f/s,可獲取顏色信息與深度信息 (RGB-D)數(shù)據(jù),滿足重構(gòu)需求[17]。數(shù)據(jù)采集于2016年8月,在西北農(nóng)林科技大學(xué)校園內(nèi)進(jìn)行,采集現(xiàn)場(chǎng)與獲取的RGB圖像如圖1所示。
圖1 數(shù)據(jù)采集Fig.1 Data acquisition
使用Kinect 2.0獲取的樹點(diǎn)云數(shù)據(jù)由于設(shè)備、環(huán)境、人為操作等因素不可避免的帶有噪聲,噪聲會(huì)對(duì)后續(xù)的配準(zhǔn)工作造成較大影響,因此,首先對(duì)采集到的原始數(shù)據(jù)進(jìn)行去噪處理。
噪聲主要分為大尺度噪聲與小尺度噪聲[18],所獲數(shù)據(jù)的大尺度噪聲主要指掃描到的大片地面點(diǎn)云數(shù)據(jù),小尺度噪聲指圍繞在樹周圍的離群散點(diǎn)。從圖2a可以看出,由于地面平坦,大尺度噪聲點(diǎn)云密集,與樹主干垂直在X-Z平面分布,小尺度噪聲密度稀疏呈離散分布。針對(duì)噪聲數(shù)據(jù)的不同特點(diǎn),采取不同的去噪方法,大尺度噪聲使用直通濾波去除,小尺度噪聲使用Statistical outlier removal濾波器[19]去除。直通濾波的具體做法為:建立直通濾波器,觀察地面點(diǎn)云坐標(biāo)可知,Y軸坐標(biāo)范圍在-3~-1.5之間,故設(shè)定過(guò)濾Y軸方向上閾值區(qū)間為[-3,-1.5]內(nèi)的數(shù)據(jù),過(guò)濾結(jié)果如圖2b所示。Statistical outlier removal濾波器基于K近鄰原理實(shí)現(xiàn),K越大且λ越小時(shí),去噪效果越明顯,λ為縮放因子,經(jīng)驗(yàn)取值為[0,1]。針對(duì)參數(shù)K與λ的取值問(wèn)題,根據(jù)不同點(diǎn)云數(shù)據(jù),依據(jù)經(jīng)驗(yàn)取值進(jìn)行多次試驗(yàn)。分別選取K為30、50、100,λ為0.2、0.5、1,分9組進(jìn)行去噪試驗(yàn)。圖3中,λ=0.2時(shí),部分枝葉點(diǎn)云被當(dāng)做噪聲去除,K=30,λ=0.5時(shí),有些噪聲沒(méi)有被去除,當(dāng)K=50,λ=0.5時(shí),去噪效果最好,部分對(duì)比效果如圖3所示。
圖2 地面噪聲去除結(jié)果Fig.2 Result of removing ground noise
圖3 離群散點(diǎn)去除結(jié)果對(duì)比(紅色為噪聲點(diǎn))Fig.3 Comparisons of removing noise (noise was shown in red color)
為保證數(shù)據(jù)的完整性,采取雙面采集策略,然后對(duì)兩片點(diǎn)云進(jìn)行配準(zhǔn)處理[20]。由于兩次采集的數(shù)據(jù)不在同一個(gè)坐標(biāo)系內(nèi),配準(zhǔn)的過(guò)程是通過(guò)平移、旋轉(zhuǎn)和縮放進(jìn)行坐標(biāo)轉(zhuǎn)換,將兩片點(diǎn)云轉(zhuǎn)換到同一坐標(biāo)系下,原理為
(1)
[ΔXΔYΔZ]T——平移矩陣
R——旋轉(zhuǎn)矩陣
根據(jù)姚吉利[21]的研究,兩坐標(biāo)系下有3個(gè)以上的公共點(diǎn)時(shí)可以進(jìn)行三維坐標(biāo)轉(zhuǎn)換,并給出了3點(diǎn)法與4點(diǎn)法的計(jì)算方法。為了使配準(zhǔn)過(guò)程更加便捷,使用人工標(biāo)記法進(jìn)行粗配[22],具體做法是:
(1)采集數(shù)據(jù)時(shí),在樹的附近放置4個(gè)塑料球,如圖1a所示,球直徑為11 cm。
(2)采用Meshlab軟件對(duì)4個(gè)球的點(diǎn)云數(shù)據(jù)進(jìn)行分割,使用最小二乘法擬合球心,將球心坐標(biāo)作為4個(gè)公共點(diǎn)。
(3)將4點(diǎn)球心坐標(biāo)代入文獻(xiàn)[21]中的計(jì)算公式,計(jì)算得出縮放因子λ、平移矩陣[ΔXΔYΔZ]T、旋轉(zhuǎn)矩陣R。
(4)根據(jù)旋轉(zhuǎn)矩陣、平移矩陣與縮放因子進(jìn)行配準(zhǔn),粗配結(jié)果如圖4a所示。
為進(jìn)一步提高配準(zhǔn)精度,精配階段,使用ICP算法。ICP算法雖然配準(zhǔn)精度高,但是存在耗時(shí)較長(zhǎng),初始位姿不好易陷入局部最優(yōu)等缺點(diǎn),在本文中,經(jīng)過(guò)人工標(biāo)記法粗配準(zhǔn)后,兩片點(diǎn)云已經(jīng)大致重合,將粗配結(jié)果作為ICP算法的初值,不會(huì)使算法陷入局部最優(yōu),最終的配準(zhǔn)結(jié)果如圖4b所示。
圖4 配準(zhǔn)過(guò)程Fig.4 Process of registration
采集到的原始點(diǎn)云數(shù)據(jù)經(jīng)過(guò)去噪、配準(zhǔn)等預(yù)處理后,可以得到質(zhì)量較高的完整樹點(diǎn)云數(shù)據(jù)。在進(jìn)行樹的三維重構(gòu)時(shí),樹干部分主要基于樹骨架繪制廣義圓柱體生成,骨架的走向直接影響了三維重構(gòu)的精度。由于樹的冠層結(jié)構(gòu)復(fù)雜,有較為嚴(yán)重的遮擋與交叉現(xiàn)象,對(duì)骨架提取造成了較大干擾,針對(duì)這一特征,空間殖民算法被RUNIONS等[23]提出并擴(kuò)展至三維空間,得到了廣泛應(yīng)用。
使用Kinect 2.0獲取點(diǎn)云數(shù)據(jù)時(shí),冠層以下的部分由于沒(méi)有遮擋,樹干結(jié)構(gòu)十分清晰,此部分提取骨架信息較為容易,被冠層遮擋的枝干部分是骨架提取的難點(diǎn),也是空間殖民算法解決的核心問(wèn)題。該算法基于樹木生長(zhǎng)空間競(jìng)爭(zhēng)的原理,可以在遮擋情況下較好地提取樹骨架數(shù)據(jù)。在骨架提取過(guò)程中,依據(jù)“就近影響”原則,生長(zhǎng)點(diǎn)鄰域內(nèi)的空間空白點(diǎn)影響骨架走向,骨架依次生成,直至沒(méi)有點(diǎn)影響骨架時(shí)算法結(jié)束。但是,使用空間殖民算法時(shí),會(huì)有部分生長(zhǎng)方向不合理的枝條出現(xiàn)。針對(duì)此問(wèn)題,本文引入生長(zhǎng)角度約束對(duì)空間殖民算法加以改進(jìn),根據(jù)樹木向上趨光性的生長(zhǎng)特征,枝干與次級(jí)枝干保持約為60°的夾角,因此將生長(zhǎng)角度約束設(shè)置為60°。本文改進(jìn)后的空間殖民算法實(shí)現(xiàn)過(guò)程為:
圖5 改進(jìn)后空間殖民算法過(guò)程Fig.5 Process of improved space colonization algorithm
(1)初始化樹骨架數(shù)組,存儲(chǔ)樹骨架坐標(biāo),設(shè)定搜索半徑Rs,將骨架點(diǎn)p搜索半徑內(nèi)的待搜索點(diǎn)存入集合S(p),如圖5a所示。一個(gè)待搜索點(diǎn)只能影響距離最近的骨架點(diǎn)p,骨架點(diǎn)p可以同時(shí)受多個(gè)搜索半徑內(nèi)的待搜索點(diǎn)影響。具體數(shù)學(xué)關(guān)系為
(2)
式中q——距骨架點(diǎn)p小于搜索半徑Rs的點(diǎn)集
(2)估算生長(zhǎng)方向。將骨架點(diǎn)與所有能夠影響骨架點(diǎn)的待搜索點(diǎn)相連,如圖5b所示,計(jì)算方向向量,如圖5c中的黑色箭頭所示,將方向向量之和作為骨架的生長(zhǎng)方向,并歸一化,如圖5d所示。具體數(shù)學(xué)關(guān)系為
(3)
式中d——方向向量
n——?dú)w一化結(jié)果向量
(3)將估算出的骨架生長(zhǎng)方向與方向向量作夾角對(duì)比,若夾角大于60°,則刪除此待搜索點(diǎn)后重新進(jìn)行生長(zhǎng)方向估算,如圖5e、5f所示。具體數(shù)學(xué)關(guān)系為
(4)
式中t——生長(zhǎng)向量
如圖6所示,l1與l2是估算出的生長(zhǎng)方向,引入角度約束后,有效的生長(zhǎng)向量需在以估算生長(zhǎng)方向?yàn)橹行牡?0°圓錐體內(nèi)。
(4)確定新骨架點(diǎn)位置。設(shè)定骨架點(diǎn)間距為Dp,則新骨架點(diǎn)Pj的位置為
Pj=Dpn
(5)
(5)刪除待搜索點(diǎn)。設(shè)定刪除閾值Rd,若空間待搜索點(diǎn)與新骨架點(diǎn)的距離小于刪除閾值,則將待搜索點(diǎn)刪除。如圖5g所示,紅色實(shí)線圓圈內(nèi)為新生成的骨架點(diǎn),紅色虛線圓圈內(nèi)為將要?jiǎng)h除的點(diǎn)。具體數(shù)學(xué)關(guān)系為
|q-Pj|≤Rd
(6)
(6)開始下次迭代,直至所有的骨架點(diǎn)搜索不到待搜索點(diǎn),即S(p)為空時(shí)。
圖6 角度約束Fig.6 Angle constraint
圖5h為算法一次迭代后的結(jié)果??梢钥吹剑虚g主干繼續(xù)向上生長(zhǎng),2條大側(cè)枝斜向上生長(zhǎng),生成了一條新的側(cè)枝,刪掉了6個(gè)待搜索點(diǎn),準(zhǔn)備下一輪迭代。
圖7 不同樹種重構(gòu)結(jié)果對(duì)比Fig.7 Comparisons of reconstruction results with different trees
圖5e、5f中,左側(cè)的側(cè)枝生長(zhǎng)方向原來(lái)受4個(gè)點(diǎn)影響,但是估算出的生長(zhǎng)方向與其中一個(gè)生長(zhǎng)向量(圖5b小虛線框內(nèi)的點(diǎn))夾角超過(guò)60°,故舍去,新的估算方向如圖5f中紅色加粗箭頭所示。對(duì)比圖5e與圖5f,加入生長(zhǎng)角度約束后,新骨架的方向與原方向有較大不同,產(chǎn)生了不同的骨架走向,具體的算法描述如下:
定義骨架點(diǎn)集合;
定義待搜索點(diǎn)集合;
定義骨架點(diǎn)對(duì)應(yīng)的可生長(zhǎng)點(diǎn)集合S(p),并初始化;
whileS(p)不為空 do
for all 迭代骨架點(diǎn) do
以骨架點(diǎn)p為球心,遍歷搜索半徑Rs內(nèi)的點(diǎn),將滿足式(1)的點(diǎn)添入集合S(p);
end while
for all 迭代骨架點(diǎn) do
根據(jù)式(3)估算骨架的生長(zhǎng)方向n;
for all 迭代待搜索點(diǎn) do
根據(jù)式(4)剔除不滿足生長(zhǎng)角度約束的生長(zhǎng)向量;
重新估算生長(zhǎng)方向;
end for
根據(jù)式(5)確定新骨架點(diǎn)坐標(biāo);
end for
for all 新骨架點(diǎn) do
根據(jù)式(6)刪除距離小于閾值Rd的點(diǎn);
end for
將新骨架點(diǎn)坐標(biāo)加入骨架點(diǎn)集合;
end while
采用上述算法經(jīng)過(guò)多次迭代即可生成樹點(diǎn)云對(duì)應(yīng)的三維骨架,如圖7b所示。
樹干使用多段連續(xù)的廣義圓柱體基于提取到的骨架數(shù)據(jù)生成。將樹的最粗主干稱為1級(jí)枝干,在1級(jí)枝干上生出的側(cè)枝稱為2級(jí)枝干,在2級(jí)枝干上生出的枝干稱為3級(jí)枝干,以此類推,樹干的粗度變化遵循由根部到末端枝葉逐漸變細(xì)的規(guī)則,即由1級(jí)向2、3級(jí)逐漸變細(xì)的規(guī)律,在確定樹枝的骨架后,樹干的幾何模型采用多段圓柱體連接表示,但圓柱的2個(gè)底面半徑即樹的粗度還未確定。日本學(xué)者SHINOZAKI等[24]提出的管道模型(Pipe model)在對(duì)樹枝粗度估計(jì)上應(yīng)用廣泛。管道模型中,樹枝分叉處的主枝與側(cè)枝的父子關(guān)系定義為
(7)
式中rchild1、rchild2——子樹枝的半徑
rparent——父樹枝的半徑
i——指數(shù)
圖8 葉片建模過(guò)程Fig.8 Process of leaf modeling
指數(shù)i一般取2[25]。對(duì)于樹的最末端點(diǎn),假設(shè)所有端點(diǎn)半徑為常數(shù)r0,本文使用50分度游標(biāo)卡尺實(shí)測(cè)后取值為0.3 cm,根據(jù)式(7),自頂向下計(jì)算得到所有樹枝粗度。在獲取樹骨架完整信息與粗度信息后,沿骨架走向分段連續(xù)繪制圓柱體,根據(jù)文獻(xiàn)[24-25]中的方法,將父級(jí)樹枝圓柱體結(jié)束繪制的方向作為子級(jí)樹枝起圓柱體開始繪制的方向,最終得到的枝條模型如圖7c所示。
由于使用Kinect 2.0獲取到的點(diǎn)云稀疏,很難從點(diǎn)云中直接重構(gòu)樹葉,因此對(duì)樹葉單獨(dú)建模,采用基于植物學(xué)規(guī)則的方法添加樹葉。
葉片建模采用本研究團(tuán)隊(duì)自制的三維掃描設(shè)備[26],獲取樹葉的稠密點(diǎn)云數(shù)據(jù)。葉片建模的具體步驟為:
(1)使用Statistical outlier removal濾波器對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行去噪處理,得到光滑的葉片點(diǎn)云,如圖8a所示。
(2)使用體素化網(wǎng)格下采樣[27]方法對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行精簡(jiǎn),設(shè)置體素邊長(zhǎng)為3 cm,得到葉片的稀疏點(diǎn)云,如圖8b所示。
(3)使用Delaunay三角剖分[28]對(duì)稀疏點(diǎn)云進(jìn)行網(wǎng)格化處理,生成葉片模型,如圖8c所示。
(4)為葉片模型添加紋理,得到最終模型,結(jié)果如圖8d所示。
樹葉添加基于植物學(xué)中的葉序規(guī)則實(shí)現(xiàn)。樹木常見(jiàn)的葉序生長(zhǎng)規(guī)則主要有對(duì)生、旋生、輪生、二列生等[29],本文中的試驗(yàn)對(duì)象玉蘭樹屬旋生葉序,根據(jù)此規(guī)則將葉片的三維模型添加至樹干[30]。圖7d為添加葉片后的樹重構(gòu)效果。
重構(gòu)試驗(yàn)在Windows 7操作系統(tǒng)平臺(tái)下進(jìn)行,使用Visual Studio 2013集成化開發(fā)環(huán)境、OpenGL庫(kù)、點(diǎn)云庫(kù)(Point cloud library, PCL)以及Matlab 2014b完成,計(jì)算機(jī)配置為CPU i5-3450 3.1 GHz,內(nèi)存8 GB,顯卡AMD Radeon HD 6700 Series。
為驗(yàn)證本文方法的普適性與有效性,選取玉蘭樹、楓樹以及深圳先進(jìn)技術(shù)研究院公開的Limit Tree數(shù)據(jù),使用本文提出的重構(gòu)方法進(jìn)行重構(gòu)試驗(yàn),結(jié)果如圖7所示。
由于不同樹種的特征不同,故根據(jù)不同樹的特征進(jìn)行多次試驗(yàn)后,取搜索半徑為1.2 cm,生長(zhǎng)角度為60°,刪除閾值為0.4 cm,骨架點(diǎn)間距0.3 cm;末端枝條粗度,玉蘭樹取值為0.3 cm,楓樹與Limit Tree取值為0.2 cm。
重構(gòu)試驗(yàn)展示了從原始點(diǎn)云數(shù)據(jù)到最終三維樹模型重構(gòu)的過(guò)程(圖7a~7d)。圖7b、7c中,由于點(diǎn)云局部不平滑,骨架上的部分地方會(huì)有不合理的細(xì)枝生成,出現(xiàn)“毛刺”現(xiàn)象,在使用廣義圓柱體繪制枝條模型時(shí),對(duì)枝條做了平滑處理,刪掉了一些長(zhǎng)度短的細(xì)枝,使枝條模型更加光滑、真實(shí)。由圖7e可以看出,重構(gòu)出的樹模型與原始點(diǎn)云吻合度高,逼真地展現(xiàn)了樹的三維結(jié)構(gòu),骨架走向合理,很好的體現(xiàn)了樹的拓?fù)潢P(guān)系。
本文在RUNIONS等[23]提出的空間殖民算法基礎(chǔ)上加以改進(jìn):首先,原算法側(cè)重于展示原理,樹冠的形狀由用戶輸入,樹冠內(nèi)的點(diǎn)也是基于規(guī)則生成,并不是基于實(shí)測(cè)數(shù)據(jù),因此真實(shí)感與實(shí)際相比有一定的差距,改進(jìn)后,本文使用實(shí)測(cè)點(diǎn)云數(shù)據(jù)作為算法的輸入。其次,在估算骨架生長(zhǎng)方向時(shí),加入了生長(zhǎng)角度約束,減少了走向不合理的枝條出現(xiàn)。
以玉蘭樹為例,分別設(shè)定生長(zhǎng)角度約束θ為45°、60°、75°以及無(wú)約束,對(duì)比效果如圖9所示。從圖9可以看出,生長(zhǎng)角度從整體上約束了樹枝的走向,在無(wú)角度約束時(shí),部分枝條會(huì)出現(xiàn)向下生長(zhǎng)和枝條開角過(guò)大的情況。加入角度約束后,不同角度對(duì)枝條的開角產(chǎn)生了不同的約束效果,隨著角度約束的增大,枝條開角隨之增大。當(dāng)θ=45°時(shí),枝條開角被約束在45°以內(nèi),呈收緊狀態(tài),當(dāng)θ=75°時(shí),圖9d中紅色虛線圓框內(nèi)部分枝條出現(xiàn)了較大開角,走向不合理的情況,參照文獻(xiàn)[29],角度約束設(shè)定為60°時(shí),枝條開角與走向較為自然。
圖9 不同角度約束下的樹干模型對(duì)比Fig.9 Comparisons of branch model with different angle constraints
圖10 不同算法骨架提取結(jié)果對(duì)比Fig.10 Comparisons of skeleton extraction results with different algorithms
將本文的骨架提取算法與L1-Medial算法[31]、Laplacian算法[32]進(jìn)行對(duì)比,結(jié)果如圖10所示。由圖10可以看出,圖10b中,L1-Medial算法可以正確地提取到樹主干部分的骨架,但是無(wú)法展現(xiàn)冠層內(nèi)的骨架細(xì)節(jié),在提取玉蘭樹骨架時(shí),出現(xiàn)了明顯的斷節(jié),生成了孤立骨架,在提取楓樹與Limit Tree骨架時(shí),出現(xiàn)了走向不合理與交叉連通現(xiàn)象;圖10c中,Laplacian算法整體效果比L1-Medial算法稍好,但是骨架不連續(xù)的情況嚴(yán)重,細(xì)枝骨架走向凌亂,尤其在冠層點(diǎn)云稠密處,骨架交叉嚴(yán)重,與實(shí)際情況出入大;圖10d中,本文骨架提取方法有多余短枝出現(xiàn),但是骨架連續(xù),無(wú)交叉,冠層內(nèi)細(xì)枝骨架清晰,走向合理,較為真實(shí)地展現(xiàn)了樹的骨架結(jié)構(gòu),可為樹的虛擬修剪等研究提供數(shù)據(jù)支持[33]。
為評(píng)價(jià)重構(gòu)模型的精度,選取樹高、主干粗度、冠幅3個(gè)參數(shù),將實(shí)測(cè)數(shù)據(jù)與模型數(shù)據(jù)做對(duì)比,統(tǒng)計(jì)相對(duì)誤差,如表1所示。為分析枝干拓?fù)浣Y(jié)構(gòu)的誤差,使用50分度游標(biāo)卡尺,每棵樹隨機(jī)選取6條枝干實(shí)地測(cè)量其直徑,其中2、3、4級(jí)枝干各取2枝,依次編號(hào)為b21、b22、b31、b32、b41、b42,以實(shí)測(cè)值作為基準(zhǔn)值,統(tǒng)計(jì)相對(duì)誤差,如表2所示。
表1 樹模型參數(shù)Tab.1 Parameters of reconstructed tree models
注:主干粗度統(tǒng)一取距離地面0.5 m處樹干直徑。
表2 分級(jí)枝干模型參數(shù)Tab.2 Parameters of different levels branch models
表1數(shù)據(jù)表明,重構(gòu)出的玉蘭樹與楓樹模型在樹高與冠幅參數(shù)上面誤差較小,均在3.5%以內(nèi),在主干粗度參數(shù)上誤差較大,但是沒(méi)有超過(guò)6.5%。分析其原因,本文基于實(shí)測(cè)點(diǎn)云數(shù)據(jù)重構(gòu),重構(gòu)模型最小包圍盒的高度與寬度十分接近真實(shí)樹的樹高與冠幅,而主干的粗度依據(jù)管道模型估算得出,因此誤差相對(duì)較大。
表2數(shù)據(jù)表明,隨著枝干級(jí)數(shù)的增加,誤差也隨之累積,但是總體誤差在6%以內(nèi),同一級(jí)別枝干,楓樹的誤差略小于玉蘭樹,分析其原因,由于2棵樹復(fù)雜程度不同,所以構(gòu)建出的樹模型層級(jí)結(jié)構(gòu)不同,在樹枝的分叉處,基于管道模型理論,使用式(7)估計(jì)父級(jí)枝干與子級(jí)枝干的粗度關(guān)系,并且由子級(jí)向父級(jí)逐級(jí)傳遞,使誤差不斷累積,但是總體誤差控制在6%以內(nèi),說(shuō)明了管道模型粗度估計(jì)的合理性,可以較為精確地構(gòu)建樹模型,展現(xiàn)枝干的拓?fù)浣Y(jié)構(gòu)。
圖11 不同搜索半徑對(duì)比結(jié)果Fig.11 Comparison results of different search radii
圖12 不同刪除閾值對(duì)比結(jié)果Fig.12 Comparison results of different delete values
圖13 不同骨架點(diǎn)間距對(duì)比結(jié)果Fig.13 Comparison results of different skeleton node distances
算法中的“搜索半徑”、“生長(zhǎng)角度”、“刪除閾值”、“骨架點(diǎn)間距”和“樹枝粗度”5個(gè)參數(shù)決定了樹的最終形態(tài)結(jié)構(gòu)。不同參數(shù)值的選擇不僅對(duì)生成的樹形外觀有影響,同時(shí)對(duì)骨架點(diǎn)的數(shù)量、生成樹枝的數(shù)量有影響。搜索半徑?jīng)Q定了每次迭代時(shí)骨架點(diǎn)生長(zhǎng)方向的候選點(diǎn)的多少,即集合S(p)的大小。搜索半徑的取值對(duì)樹的最終形態(tài)有著較大影響,若搜索半徑過(guò)小,算法每次迭代時(shí),待搜索范圍過(guò)小,會(huì)使生長(zhǎng)方向朝向局部密集處,枝干出現(xiàn)不合理的走向,若搜索半徑過(guò)大,待搜索點(diǎn)過(guò)多,會(huì)在一定程度上違背“就近影響”的原則,導(dǎo)致生成一些多余的細(xì)枝。圖11展示了不同搜索半徑下的對(duì)比結(jié)果。刪除閾值對(duì)骨架提取影響較大,這一參數(shù)主要是為了避免待搜索點(diǎn)對(duì)骨架走向的重復(fù)影響,其值將影響樹枝的數(shù)量,若取值過(guò)小,冠層內(nèi)的點(diǎn)會(huì)重復(fù)影響骨架的走向,細(xì)枝會(huì)明顯增多,呈現(xiàn)出多節(jié)現(xiàn)象,若取值過(guò)大,待搜索點(diǎn)沒(méi)有影響骨架的走向就被刪掉,生成的枝條稀疏,與實(shí)際出入較大,真實(shí)感低。圖12展示了不同刪除閾值下的對(duì)比結(jié)果,可以看出隨著刪除閾值的增加,細(xì)枝在不斷減少,骨架結(jié)構(gòu)的細(xì)節(jié)展示越來(lái)越差。生長(zhǎng)角度約束了骨架的大體走向,使樹木整體向上生長(zhǎng),但并不適用于柳樹等枝條下垂的樹種。骨架點(diǎn)間距與生長(zhǎng)方向共同決定了新骨架點(diǎn)的位置。圖13展示了不同骨架間距下的對(duì)比結(jié)果,從中可以看出,若骨架間距太小,會(huì)使骨架生長(zhǎng)速度過(guò)慢,在刪除閾值的影響下,骨架點(diǎn)附近的點(diǎn)會(huì)被刪除,使迭代過(guò)早結(jié)束,無(wú)法生成完整的骨架;若骨架點(diǎn)間距過(guò)大,骨架生長(zhǎng)呈跳躍式,使枝干過(guò)于僵硬,骨架點(diǎn)之間的待搜索點(diǎn)會(huì)影響主骨架成為側(cè)枝,會(huì)出現(xiàn)細(xì)枝過(guò)多的情況。在樹枝的最末端點(diǎn)枝條粗度值選擇上,由于本文的玉蘭樹樹高為2.5 m,可人工測(cè)量,為粗度取值提供依據(jù),若試驗(yàn)對(duì)象為高大的樹種無(wú)法獲取末端枝條粗度時(shí),需進(jìn)行預(yù)估后不斷測(cè)試,找到合理的末端枝條粗度。
(1)以RUNIONS等提出的空間殖民算法為基礎(chǔ),本文空間殖民算法中,冠層生長(zhǎng)空間用輸入的點(diǎn)云數(shù)據(jù)表示,樹冠的形狀也由輸入點(diǎn)云決定,與原算法基于規(guī)則相比,提高了重構(gòu)模型的精度。
(2)基于實(shí)測(cè)點(diǎn)云數(shù)據(jù),引入生長(zhǎng)角度約束對(duì)原空間殖民算法進(jìn)行改進(jìn),對(duì)原始點(diǎn)云數(shù)據(jù)經(jīng)過(guò)去噪、配準(zhǔn)等預(yù)處理后,作為算法的輸入,提取樹的三維骨架信息,在重構(gòu)試驗(yàn)中,將本文骨架提取算法與L1-Medial算法、Laplacian算法做對(duì)比分析,驗(yàn)證了本文算法的合理性與有效性;在三維骨架生成過(guò)程中保存骨架點(diǎn)的順序,根據(jù)管道模型獲得枝條的粗度信息,使用廣義圓柱體生成樹的枝干,對(duì)葉片單獨(dú)建模并按照葉序規(guī)則添加樹葉,最終生成樹的三維模型。
(3)算法給出了5個(gè)可調(diào)參數(shù),以實(shí)測(cè)點(diǎn)云數(shù)據(jù)為依據(jù),用戶可以通過(guò)調(diào)節(jié)參數(shù)控制樹的形態(tài),得到與真實(shí)數(shù)據(jù)吻合的結(jié)果,重構(gòu)誤差在6.5%以內(nèi),重構(gòu)模型可為樹冠層光照分析、剪枝等提供參考。
1 趙春江,陸聲鏈,郭新宇,等. 數(shù)字植物研究進(jìn)展:植物形態(tài)結(jié)構(gòu)三維數(shù)字化[J]. 中國(guó)農(nóng)業(yè)科學(xué), 2015, 48(17):3415-3428.
ZHAO C J, LU S L, GUO X Y, et al. Advances in research of digital plant: 3D digitization of plant morphological structure[J]. Scientia Agricultura Sinica, 2015,48(17):3415-3428. (in Chinese)
2 張建,李宗南,張楠,等. 基于實(shí)測(cè)數(shù)據(jù)的作物三維信息獲取與重建方法研究進(jìn)展[J]. 華中農(nóng)業(yè)大學(xué)學(xué)報(bào), 2013,32(4):126-134.
ZHANG J, LI Z N, ZHANG N, et al. Advances in 3D information collection and reconstruction of crop based on the measured data[J]. Journal of Huazhong Agricultural University, 2013,32(4):126-134. (in Chinese)
3 HONDA H. Description of the form of trees by the parameters of the tree-like body: effects of the branching angle and the branch length on the shape of the tree-like body[J]. Journal of Theoretical Biology, 1971,31: 331-338.
4 PRUSINKIEWICZ P, LINDENMAYAR A. The algorithmic beauty of plants[M].New York:Springer-Verlag Press, 1990.
5 LINERMANN B, DEUSSEN O. Interactive modeling of plants[J]. IEEE Computer Graphics and Application, 1999, 13(1): 56-65.
6 OKABE M, OWADA S, IGARASHI T. Interactive design of botanical trees using freehand sketches and example-based editing[J]. Computer Graphic Forum, Proceeding of Eurographics, 2005, 24(3): 487-496.
7 WITHER J, BOUDON F, CANI M P, et al. Structure from silhouettes: a new paradigm for fast sketch-based design of tree[J]. Computer Graphic Forum, Proceedings of Eurographics, 2009, 28(2): 541-550.
8 QUAN L, TAN P, ZENG G, et al. Image-based plant modeling[J]. ACM Transactions on Graphics, 2006, 25(3): 599-604.
9 TAN P, ZENG G, WANG J, et al. Image-based tree modeling[J]. ACM Transactions on Graphics, 2007, 26(3): 87-93.
10 XU H, GOSSETT N, CHEN B. Knowledge and heuristic-based modeling of laser-scanned trees[J]. ACM Transactions on Graphics, 2007, 26(4): 19-31.
11 LIVNY Y, PRINK S, CHENG Z, et al. Texture-Lobes for tree modeling[J].ACM Transactions on Graphics, 2011, 30(4): 53-62.
12 XIE K, YAN F, SHARF A, et al. Tree modeling with real tree-parts examples[J]. IEEE Transactions on Visualization and Computer Graphics, 2016, 22(12): 2608-2618.
13 RUNIONS A, LANE B, PRUSINKIEWICZ P. Modeling trees with a space colonization algorithm[C]∥Proceedings of Eurographics WorkShop on Natural Phenomena, 2007: 63-70.
14 ZHANG X, LI H, DAI M, et al. Data-driven synthetic modeling of trees[J]. IEEE Transactions on Visualization and Computer Graphics, 2014, 20(9): 1214-1226.
15 唐麗玉, 張浩, 黃洪宇, 等. 基于點(diǎn)云數(shù)據(jù)的樹木三維重建方法改進(jìn)[J/OL]. 農(nóng)業(yè)機(jī)械學(xué)報(bào), 2017, 48(2): 186-194. http:∥www.j-csam.org/jcsam/ch/reader/view_abstract.aspx?flag=1&file_no=20170225&journal_id=jcsam. DOI:10.6041/j.issn.1000-1298.2017.02.025.
TANG L Y, ZHANG H, HUANG H Y, et al. Improved method for 3D reconstruction of tree model based on point cloud data[J/OL]. Transactions of the Chinese Society for Agricultural Machinery, 2017, 48(2): 186-194. (in Chinese)
16 姚遠(yuǎn), 劉志剛. 基于 Kinect 的三維重建與點(diǎn)云雕刻的實(shí)現(xiàn)[J]. 現(xiàn)代制造工程, 2017(4): 128-132.
YAO Y, LIU Z G. 3D-object reconstruction and point cloud sculpture based on Kinect[J]. Modern Manufacturing Engineering, 2017(4): 128-132. (in Chinese)
17 YANG L, ZHANG L, DONG H, et al. Evaluating and improving the depth accuracy of Kinect for Windows v2[J]. IEEE Sensors Journal, 2015, 15(8): 4275-4285.
18 袁華, 龐建鏗, 莫建文. 基于噪聲分類的雙邊濾波點(diǎn)云去噪算法[J]. 計(jì)算機(jī)應(yīng)用, 2015, 35(8): 2305-2310.
YUAN H, PANG J K, MO J W. Denoising algorithm for bilateral filtered point cloud based on noise classification[J]. Journal of Computer Applications, 2015, 35(8): 2305-2310.(in Chinese)
19 RUSU R B, MARTON Z C, BLODOW N, et al. Towards 3D point cloud based object maps for household environments[J]. Robotics and Autonomous Systems, 2008, 56(11): 927-941.
20 GENG N, MA F, YANG H, et al. Neighboring constraint-based pairwise point cloud registration algorithm[J]. Multimedia Tools and Applications, 2016, 75(24): 16763-16780.
21 姚吉利. 3維坐標(biāo)轉(zhuǎn)換參數(shù)直接計(jì)算的嚴(yán)密公式[J]. 測(cè)繪通報(bào), 2006(5):7-10.
YAO J L. Rigorous formula for direct calculating parameter in 3D transformation[J]. Bulletin of Surveying and Mapping, 2006(5):7-10. (in Chinese)
22 YU X, SONG H, WANG S. Capture of multi-view point clouds and registration of plants based on Kinect[J]. International Agricultural Engineering Journal, 2016, 25(1):74-84.
23 RUNIONS A, OUHRER M, LANE B, et al. Modeling and visualization of leaf venation patterns[J]. ACM Transactions on Graphics, 2005, 24(3): 702-711.
24 SHINOZAKI K, YODA K, HOZUMI K, et al. A quantitative analysis of plant form-the pipe model theoryⅠ. basic analyses[J]. Japanese Journal of Ecology, 1964, 14(3): 97-105.
25 SHINOZAKI K, YODA K, HOZUMI K, et al. A quantitative analysis of plant form-the pipe model theory Ⅱ. further evidence of the theory and its application in forest ecology[J]. Japanese Journal of Ecology, 1964, 14(4): 113-139.
26 ZHANG Z Y,YUAN L. Build a 3D scanner system based on monocular vision[J].Applied Optics,2012,51(11):1638-1644.
27 朱德海.點(diǎn)云庫(kù)PCL學(xué)習(xí)教程[M]. 北京:北京航空航天大學(xué)出版社,2012.
28 楊軍,林巖龍,李龍杰,等. 基于快速Delaunay三角化的散亂點(diǎn)曲面重建算法[J]. 計(jì)算機(jī)工程與科學(xué),2015,37(6):1189-1195.
YANG J, LIN Y L, LI L J, et al. A surface reconstruction algorithm for unorganized points based on fast Delaunay triangulation[J]. Computer Engineering & Science, 2015,37(6):1189-1195. (in Chinese)
29 張志翔. 樹木學(xué)[M].2版. 北京:中國(guó)林業(yè)出版社,2010.
30 胡少軍,耿楠,張志毅,等. 基于稀疏圖像的真實(shí)樹交互建模方法[J]. 農(nóng)業(yè)工程學(xué)報(bào),2014,30(9): 168-175.
HU S J, GENG N, ZHANG Z Y, et al. Interactive modeling of outdoor trees based on spare images[J]. Transactions of CSAE, 2014, 30(9): 168-175. (in Chinese)
31 HUANG H, WU S, COHEN-OR D, et al. L1-medial skeleton of point cloud[J]. ACM Transactions on Graphics, 2013, 32(4): 65:1-65:8.
32 AU O K C, TAI C L, CHU H K, et al. Skeleton extraction by mesh contraction[J]. ACM Transactions on Graphics (TOG), 2008, 27(3): 44.
33 王丹, 邵小寧, 胡少軍, 等. 基于 Kinect 的虛擬果樹交互式修剪研究[J]. 農(nóng)機(jī)化研究, 2016,38(10): 187-192.
WANG D, SHAO X N, HU S J, et al. Interactive pruning operation on virtual fruit tree based on Kinect[J]. Journal of Agricultural Mechanization Research, 2016,38(10): 187-192. (in Chinese)