劉 剛 張偉潔 郭彩玲
(1.中國農業大學現代精細農業系統集成研究教育部重點實驗室, 北京 100083;2.中國農業大學農業農村部農業信息獲取技術重點實驗室, 北京 100083; 3.唐山學院機電工程系, 唐山 063000)
葉冠是果樹光合作用的主要場所,其空間形態結構直接影響冠內的光照分布、光合生產力及枝葉器官的生理狀態,進而影響果實品質和產量[1-2]。葉片作為葉冠的主要組成部分,獲取其空間分布規律及生長參數對獲取精確的葉冠結構具有重要的研究價值,也是進一步研究冠層光照分布計算的基礎[3],可為果樹的自動化修形剪枝提供技術支持[4-6]。
葉片的識別方法多局限于二維空間中,雖然存在運算速度快等優點[7-8],但難以進一步提取生長參數。地面三維激光掃描儀在農業領域的應用[9-12]使得快速獲取果樹冠層三維空間信息成為可能,進而可實現冠層葉片的自動分割及生長參數的提取,能在較大程度上減少人力,提高作業效率[13-15]。
國內外研究人員對點云分割方法進行了大量研究,主要分為6類[16]:基于區域邊界的分割方法適用于邊界明顯、分布規則的數據[17-18];基于區域增長的分割方法適用于有明顯分布差異的點云[19];基于圖的分割方法和基于模型匹配的分割方法對規則點云有很好的聚類效果[20];基于機器學習的分割方法對訓練樣本的要求較高[21];基于聚類的分割方法采用特征聚類,根據不同的點云分布特征,選擇適當的特征檢測方法[22-23]。果樹葉片空間分布相對密集,枝葉連續生長難以區分,因此利用特征聚類實現葉片分割較為合理。
葉片生長參數提取研究中,吳升等[24]通過計算葉片點云法向量與XOY坐標平面的夾角,實現點云在XOY坐標平面的正投影,進而將葉片幾何參數求解降維到二維空間上;鄭一力等[25]采用主成分分析與線性評判分析相結合的方法,實現了葉片的多特征降維計算。降維法計算葉片生長參數簡單快速,但忽略了葉片的三維空間特性。針對以上問題,本文提出一種葉片點云聚類分割算法,融合局部凹凸性算法(Locally convex connected patches,LCCP)并改進K-means算法,動態獲取K值,進而研究葉片的生長參數提取方法。
隨機選取中國農業大學蘋果樹采摘機器人試驗基地(北京市昌平區南口鎮辛力莊村)的1棵富士蘋果樹作為研究對象,樹高3.1 m,樹齡4年,采用美國Trimble 公司TX8型地面三維激光掃描儀(具體參數如表1所示)進行點云掃描。由于試驗果樹周圍還生長有其他果樹,遮擋較多,為了獲得高質量的點云,數據獲取試驗采用5站掃描,如圖1所示。其中的s1~s5為5個掃描點位,掃描儀的工作位置與被測果樹樹干的距離為3.5~5 m,c1~c6為用于配準定位的6個標靶球(標準直徑100 mm),分布于試驗果樹周圍,保證在每站掃描能識別3個以上標靶球,以便多站點云的配準,掃描實地場景如圖2a所示。本試驗不考慮環境(如風速、溫濕度、光照度等)的影響。

表1 Trimble TX8型掃描儀產品參數Tab.1 Product parameters of Trimble TX8

圖1 掃描儀布置示意圖Fig.1 Scanner layout diagram

圖2 點云數據采集Fig.2 Point cloud acquisition
利用基于標靶球提取的算法[26]配準多站點云,點云數據獲取過程中由于外界環境干擾和設備自身的誤差,產生大量的噪點,采用前期研究成果[27]——基于距離均值計算的方法,剔除噪點。點云密度大且分布不均勻,采用均勻網格法完成抽稀處理,最終所得的蘋果樹冠層點云數據如圖2b所示,圖2a中白色小球為標靶球。
本研究算法由C++語言編寫實現,點云處理庫為點云庫(Point cloud library,PCL)。獲取的點云數據以三維坐標(x,y,z)的形式存儲,數據量龐大,約有115萬點。為了簡化果樹葉片點云的搜索和存儲,創建新的葉片點云PCD存儲格式,每條記錄存儲一個葉片節點,包括的屬性有葉片中心點Li(xi,yi,zi)、葉片法向量Ni、葉長Lleni和葉寬Lwidi。
本文研究方法流程主要分為4部分(圖3):數據獲取、點云預處理、葉片點云聚類分割和葉片生長參數提取。數據獲取試驗需在晴朗無風條件下進行;點云預處理主要包括點云配準、去噪和抽稀;采用基于動態K閾值的算法,融合LCCP算法和改進的K-means算法,隨機選取冠層的一個枝條,作為研究對象,進行葉片點云聚類分割;葉片生長參數提取方法采用PCA方法和邊界提取方法,分別實現葉片生長角度和葉長葉寬參數值的獲取。

圖3 葉片點云分割及生長參數提取流程圖Fig.3 Flow chart of apple tree point cloud segmentation and growth parameters extraction
1.2.1葉片點云的聚類方法
葉片點云聚類分割,采用基于動態K閾值的算法,融合LCCP算法,并采用改進的K-means算法,實現K閾值的動態獲取。該算法主要包含以下過程:超體聚類、LCCP聚類[28]、K閾值獲取和K-means分割。
超體聚類是一種過分割方法,過分割涉及的參數有體素距離Rv、晶核距離Rs。八叉樹初始化點云,過分割生成獨立的超體素塊pi=(xi,ni,Ei),其中pi為超體素索引、xi為體素中心、ni為體素法向量、Ei為鄰接體素邊集合,計算鄰接體素相似度完成超體聚類
(1)
式中D——體素合并的概率
wc、ws、wn——顏色、空間、法向量的信息權重
Dc、Ds、Dn——顏色、空間、法向量容差
以超體聚類所得體素集合為研究對象,建立體素索引向量,采用CC(Extended convexity criterion)和SC(Sanity criterion)方法判定鄰接體素凹凸性關系完成LCCP聚類。
(2)

(3)
β=∠(n1,n2)
(4)
式中 CCb(pi,pj)——鄰接體素塊凹凸性
n1、n2——鄰接體素塊法向量
βT——法向量角度偏差閾值
i、j——體素索引號
當鄰接體素面不連接時,CC的判定準則不適用,此時需要使用SC準則對鄰接體素關系進行判定,SC判定依據為
(5)
其中θ(pi,pj)=min(∠(d,s),∠(d,-s))=
min(∠(d,s),180°-∠(d,s))
(6)
(7)
s=n1×n2
(8)
式中 SCb(pi,pj)——鄰接體素凹凸性

conv(pi,pj)=CCb(pi,pj)∧SCb(pi,pj)
(9)
式中 conv(pi,pj)——pi、pj的凹凸性
動態K閾值的獲取主要分為兩個步驟:一方面計算K=4時,K-means聚類后各點集三維質心間歐氏距離;另一方面計算葉片中心點到擬合直線的距離均值,作為距離閾值。動態獲取K閾值的具體方法如下:
(1)根據LCCP所得類簇,設定K=4,進行K-means聚類分割,并計算4個點群的中心點Ckm(xm,ym,zm)。
(2)計算4個中心點之間的6組歐氏距離(其中m、n為類簇中心點編號)

(10)
(3)手動截取枝條葉片點云,計算所有葉片點云中心點Cs(xs,ys,zs),根據所得點云中心點擬合直線L,計算葉片中心點到直線L的距離均值,作為距離閾值Dt,此閾值為統計結果,不需要重復計算。
(4)將步驟(2)所得的中心點歐氏距離,與距離閾值Dt進行比較,大于、小于距離閾值的個數分別為a、b,根據a與b的大小關系,確定此點群需要分割的點群個數K,其中K值的選定準則為
