蘇寶峰 劉易雪 王 琮 米志文 王方圓
(1.西北農(nóng)林科技大學(xué)機(jī)械與電子工程學(xué)院, 陜西楊凌 712100; 2.農(nóng)業(yè)農(nóng)村部農(nóng)業(yè)物聯(lián)網(wǎng)重點實驗室, 陜西楊凌 712100;3.西安交通大學(xué)機(jī)械工程學(xué)院, 西安 710049)
提高植物表型的獲取效率是研究植物生理機(jī)制過程亟待解決的問題。植物表型數(shù)據(jù)的缺失限制了研究人員對數(shù)量性遺傳性狀分析的能力[1-2]。借助智能化設(shè)備鑒定植物表型是智慧農(nóng)業(yè)的重要組成部分[3-4]。葉面積的測定是植物生理機(jī)制研究中一項基本測定,無損鑒定植物的葉面積可為研究植物的光合效率等生理機(jī)制提供數(shù)據(jù)支撐[5]。
目前較為流行的葉面積測定方法為使用手持設(shè)備、通過單一圖像處理的方式測定葉片面積[6-7]。然而,從單一圖像測定葉面積的方法不能滿足表型數(shù)據(jù)高通量獲取的要求,利用三維重建結(jié)構(gòu)技術(shù)獲取葉片形態(tài)成為研究無損估測葉面積的新方向[8-11]。
目前常見的三維點云獲取設(shè)備主要有基于激光掃描原理的FastScan、Vivid9i,利用結(jié)構(gòu)光獲取對象深度信息原理的Microsoft Kinect、3D Scanner等儀器以及基于雙目相機(jī)的立體視覺系統(tǒng)[12-22]。文獻(xiàn)[16]通過三維掃描儀完成了對蘋果葉片的三維重建。文獻(xiàn)[17]使用FastScan對煙草植株進(jìn)行掃描,得到煙草植株的三維結(jié)構(gòu)。文獻(xiàn)[18]把獲取的深度信息和顏色信息進(jìn)行配準(zhǔn)后,獲得了包含顏色和紋理信息的油菜三維重建模型。文獻(xiàn)[19]改進(jìn)了使用Kinect重建植株三維點云的配準(zhǔn)方法。文獻(xiàn)[20]使用消費級深度相機(jī)對玉米植株進(jìn)行了三維重建,并提出了去噪方法。文獻(xiàn)[21]使用Kinect重建了玉米的三維模型,并提出了有效去除離群點的方法。文獻(xiàn)[22]提出了一種基于雙目視覺的能量最低模型,以此估計植物的葉面積、高度及地上生物量。
然而,這些方法均存在成本較高、對應(yīng)用環(huán)境要求苛刻等問題。使用激光掃描儀雖然可以獲得精確的三維點云,但所需成本高,數(shù)據(jù)處理過程繁瑣,適用性不強;基于結(jié)構(gòu)光的深度圖像系統(tǒng)對光照環(huán)境的配置要求高;雙目立體視覺系統(tǒng)使用前需人工校正相機(jī)。運動恢復(fù)結(jié)構(gòu)算法的提出降低了對點云獲取設(shè)備和環(huán)境的要求,可基于消費級相機(jī)獲取的多幅圖像實現(xiàn)三維重建[23]。文獻(xiàn)[24]使用運動恢復(fù)結(jié)構(gòu)算法對株高大于50 cm大豆和向日葵進(jìn)行三維重建,并對整株植株進(jìn)行了分割。雖然詳細(xì)地描述了點云獲取過程,然而針對點云分割處理的問題,僅分割出植株上的葉片,未能分割出單一葉片。
針對上述問題,本文提出面向智能手機(jī)平臺獲取圖像進(jìn)行植物3D表型信息提取的方法。該方法通過運動恢復(fù)結(jié)構(gòu)(Structure from motion,SfM)對智能手機(jī)獲取的圖像進(jìn)行處理,獲取點云數(shù)據(jù),針對點云數(shù)據(jù)處理問題,采用顏色特征閾值分割算法實現(xiàn)點云去噪,采用聚類算法實現(xiàn)點云分割;針對離散點云的表面重建問題,采用滾球算法對點云進(jìn)行表面重建,得到網(wǎng)格模型,以實現(xiàn)葉片面積的計算。
以3株株高約為30 cm的盆栽赤霞珠葡萄植株為對象,編號1、2、3,1號植株葉片數(shù)量為5,葉片重疊率較低;2號植株的葉片數(shù)量為9,葉片重疊率適中;3號植株的葉片數(shù)量為10,葉片重疊率較高,如圖1所示。
圖1 實驗用盆栽赤霞珠葡萄植株Fig.1 Potted Cabernet sauvignon grape
本文使用圖像采集平臺為iPhone xs Max。依賴其f/1.8光圈的1 200萬像素主廣角鏡頭采集圖像。為保證圖像采集平臺的可替代性,拍攝模式采用默認(rèn)的自動對焦方式,禁止閃光,禁止獲取HDR圖像。先經(jīng)過預(yù)備實驗,手持手機(jī)在距葡萄樹苗0.5 m的范圍內(nèi)連續(xù)采集圖像以獲取更多的細(xì)節(jié)信息。采集的圖像尺寸為3 024像素×4 032像素,圖像的文件格式為JPG。1號植株采集了78幅圖像,記為1號圖像集;2號植株采集了65幅圖像,記為2號圖像集;3號植株采集了109幅圖像,記為3號圖像集。
針對使用普通消費級相機(jī)重建目標(biāo)三維模型的問題,運動恢復(fù)結(jié)構(gòu)算法是一種常見的三維重建方法,是一種利用存在信號耦合的圖像序列估測目標(biāo)物體三維結(jié)構(gòu)的攝像測量技術(shù)。
運動恢復(fù)結(jié)構(gòu)算法使用SIFT算法完成圖像特征點匹配。SIFT算法通過提取局部圖像特征處理圖像平移、旋轉(zhuǎn)尺度變換的干擾問題,降低對圖像拍攝的要求。提取特征點(基于高斯差分法的尺度空間極值點)后對提取到的特征點附加詳細(xì)信息,再通過兩幅圖像間的特征點找出匹配對,建立物體間的對應(yīng)關(guān)系[25-26]。檢測兩幅圖像的所有特征點,計算第2幅圖像特征點的特征向量集合與第1幅圖像特征點特征向量集合的歐氏距離,然后對獲得的所有歐氏距離進(jìn)行比較,其中最小的歐氏距離對應(yīng)特征向量的特征點就是兩幅圖像所匹配的特征點[27]。
使用光束平差算法優(yōu)化后,對稀疏點云對應(yīng)的特征點周圍像素進(jìn)行擴(kuò)展,形成密集點云。
目前能實現(xiàn)運動恢復(fù)結(jié)構(gòu)算法的軟件有OpenVMS、Pix4D Mapper、Agisoft PhotoScan等。本文選擇Agisoft PhotoScan軟件進(jìn)行點云獲取。將3個圖像集分別導(dǎo)入Agisoft PhotoScan對3株葡萄進(jìn)行三維重建,重復(fù)驗證本文所提方法。使用Agisoft PhotoScan中的長度測量工具測量標(biāo)尺長度,與實際值換算得出點云數(shù)據(jù)的比例尺。
處理點云數(shù)據(jù)實現(xiàn)葉面積的計算過程如下:①分割背景點云。②基于HSV顏色空間使用閾值分割法去除植株點云的噪點。③使用K-means聚類算法對點云的三維坐標(biāo)矩陣進(jìn)行分類,實現(xiàn)單片葉片點云的分割。④基于滾球算法重建了葉片的表面網(wǎng)格模型。⑤通過計算網(wǎng)格面積求得葉片面積。
1.3.1背景點云分割
針對密集點云數(shù)據(jù)繁雜背景分割的問題,使用MeshLab中的濾波器工具提取葡萄盆栽的點云,去除背景點云。
1.3.2植株點云去噪
噪點主要存在于葉片表面周圍以及下側(cè),主要源自葉片表面反光導(dǎo)致的特征點匹配錯誤產(chǎn)生的錯誤點以及在葉片遮擋下枝干的特征點匹配錯誤產(chǎn)生的錯誤點。噪點的顏色特征區(qū)別于葉片點云特征,因此將顏色特征作為閾值區(qū)分出噪點。使用Matlab Color Threshold工具箱提取葉片的顏色閾值創(chuàng)建掩膜函數(shù)。選取HSV顏色空間作為特征,在Color Threshold可視化界面中,提取葉片顏色特征邊界值,通道1的閾值范圍為[50.623,83.666],通道2的閾值范圍為[-41.963,-12.479],通道3的閾值范圍為[-25.137,39.775],創(chuàng)建掩膜矩陣BW。以點云數(shù)據(jù)的顏色矩陣C為對象,生成新的顏色矩陣R。以掩模矩陣BW為索引,生成這些點新的坐標(biāo)矩陣L。將矩陣R、L寫為點云格式,得到去噪后的植株點云。
1.3.3單個葉片點云分割
根據(jù)葉片在植株上的分布情況,任意兩片葉片間存在一定距離,采用無監(jiān)督聚類算法完成單片葉片點云的分割工作。對經(jīng)過去噪處理后的植株點云使用K-means算法對點云數(shù)據(jù)的三維坐標(biāo)矩陣進(jìn)行分類。K-means算法的目標(biāo)是把n個樣本點劃分到k個不同類簇里,在樣本中隨機(jī)選取k個初始中心,然后對靠近它的點進(jìn)行歸類,通過迭代的方法,每次在每個聚類中重新計算中心值,然后再比較聚類中心間的距離,直到達(dá)到所設(shè)定的收斂條件后聚類結(jié)束。對應(yīng)不同的植株,在分割時將k值設(shè)置為對應(yīng)的葉片數(shù)量。
1.3.4葉片點云表面重建
為了還原不規(guī)則葉片表面形狀,針對葉片表面卷曲不平整的問題,以單個葉片離散點云為對象,使用滾球算法(Ball pivoting)重建葉片的表面網(wǎng)格模型。滾球算法的原理是首先在點云中隨機(jī)尋找到一個種子三角形,然后滾球算法會在這個種子三角形邊界內(nèi)滾動一個預(yù)先給定直徑的小球,當(dāng)這個小球碰到三角形邊界外的另外一個點時就組成另外一個三角形。滾球算法的收斂條件是當(dāng)所有的邊界都被滾動到且沒有多余的點再組成三角形[27]。根據(jù)點云的密集程度,設(shè)置收斂條件為小球半徑為聚類半徑的20%,最大閾值角度為90°,在MeshLab中實現(xiàn)這一算法。
1.3.5葉片面積計算
通過統(tǒng)計葉片表面的三角網(wǎng)格面積計算出葉片的表面積。使用Matlab處理點云表面模型,基于海倫凱勒公式計算得到單個網(wǎng)格三角形的面積以求得葉片面積。計算網(wǎng)格面積公式為
根據(jù)表4中數(shù)據(jù)可知,以FPS的大小評估算法的檢測速度,可知Faster-RCNN不能滿足無人車障礙物檢測系統(tǒng)所需的實時性;以mAP值評估算法的檢測精度,可知表4目標(biāo)檢測算法中DSSD算法檢測精度最高,且在任一類別的目標(biāo)檢測上,DSSD算法均優(yōu)于其它算法。當(dāng)FPS滿足20時即可保持畫面的流暢[13],故DSSD算法可以保證無人車障礙物檢測系統(tǒng)的檢測準(zhǔn)確率和實時性需要。
(1)
式中A——每個三角網(wǎng)格的面積,cm2
r——三角網(wǎng)格序號
S——植物葉片的總面積,cm2
n——三角網(wǎng)格總數(shù)
通過植物的三維模型比例尺的比例變換得出植物葉片面積的計算值。
使用1.2節(jié)中的點云獲取方法獲取葡萄植株的三維點云數(shù)據(jù)與相機(jī)姿態(tài)如圖2所示。
圖2 三維重建結(jié)果Fig.2 Result of 3D reconstruction
對于1號植株,校對78幅圖像后,生成34 508個特征點,得到了3 329 326個密集點云;對于2號植株,校對65幅圖像后,生成了33 791個特征點,得到了3 566 248個密集點云;對于3號植株,校對109幅圖像后,生成了79 567個特征點,得到了4 017 324個密集點云。由結(jié)果可以看出,使用運動恢復(fù)結(jié)構(gòu)算法處理可見光圖像可以恢復(fù)出目標(biāo)的三維實景模型,重建效果好。這種三維重建的方法對原始圖像采集平臺以及采集方式的要求低,便于操作。
單個葉片分割結(jié)果如圖5所示。從分割結(jié)果來看,本文所提分割方法適合離散分布的葉片點云的分割。
葉片表面重建結(jié)果如圖6所示。重建結(jié)果表明,使用滾球算法可以滿足還原葉片的形狀的需求,得到接近實際的葉片表面模型。
圖3 葡萄葉片提取結(jié)果Fig.3 Extraction results of plant point clouds
圖4 植株點云去噪結(jié)果Fig.4 Denoising results of plant point cloud
圖5 葉片點云分割結(jié)果Fig.5 Results of leaf point cloud segmentation
圖6 葉片表面重建結(jié)果Fig.6 Result of leaf surface reconstruction
為了評估實驗結(jié)果,本文對比了目前常見的葉面積測定方法。分別使用葉形紙稱量法[30-31]、掃描葉片法[32]測定了3株葡萄的葉片面積并對比測定結(jié)果。
在使用葉形紙稱量法進(jìn)行測量時,選用標(biāo)準(zhǔn)A4紙,用分析天平準(zhǔn)確稱量后,得出A4紙的面積質(zhì)量比。用鉛筆在紙上準(zhǔn)確勾勒出每片葡萄葉片的形狀后剪出并稱量,經(jīng)過換算得到了葉片面積。
在使用掃描葉片法進(jìn)行測量時,采摘葉片后將葉片平鋪放置于打印機(jī)的掃描面板上,使用的打印機(jī)型號為Brother MFC-7860DN Printer,二值化處理掃描圖像后,統(tǒng)計得出每株葡萄的葉片面積值。
將上述兩種方法得到的結(jié)果與本文方法得出的結(jié)果進(jìn)行比較,見表1。
表1 葉片面積計算結(jié)果Tab.1 Calculation results of leaf area cm2
通過對比計算結(jié)果可知,本文方法的計算結(jié)果貼近其他兩種常見的葉面積測定方法。相比這兩種通過直接收割葉片測定面積的方法,本文方法沒有破壞性。1、2、3號植株的葉片重疊情況不等,但就處理結(jié)果來看,本文方法具有一定的穩(wěn)健性。1、2、3號植株的葉片面積大小不一,面積最小的葉片僅有1 cm2左右,但結(jié)果表明,本文方法的計算結(jié)果與其他兩種方法對比的誤差仍然很小。使用其計算結(jié)果與使用掃描法測定的面積相比,1號植株的平均誤差為1.67 cm2,誤差占葉片面積的平均百分比為6.39%;2號植株的平均誤差為1.16 cm2,誤差占葉片面積的平均百分比為4.41%;3號植株的平均誤差為0.79 cm2,誤差占葉片面積的平均百分比為3.21%。3次重復(fù)實驗結(jié)果平均誤差為1.21 cm2(平均百分比4.67%);與葉形紙稱量法測定值相比,1號植株的平均誤差為1.58 cm2,誤差占葉片面積的平均百分比為4.51%;2號植株的平均誤差為1.66 cm2,誤差占葉片面積的平均百分比為8.96%;3號植株的平均誤差為1.00 cm2,誤差占葉片面積的平均百分比為4.67%。3次重復(fù)實驗結(jié)果平均誤差為1.41 cm2(平均百分比6.05%)。誤差分析如表2所示。
表2 葉片面積誤差分析Tab.2 Error analysis cm2
目前在田間無損測定植物的葉面積主要采用手持設(shè)備獲取單一圖像并對圖像處理的方法[31-33]。在本文中,使用圖像處理法估測3株植株的葉面積以作對比。使用1.3節(jié)中同樣的手機(jī)采集每株葡萄的圖像,在采集過程中放置面積為25 cm2的黑色方格紙作為參照標(biāo)志。首先使用Matlab中Image Labeler工具對黑色方格紙進(jìn)行標(biāo)記,并使用Canny算子提取出黑色方格紙的輪廓,腐蝕填充后統(tǒng)計像素數(shù)。使用閾值分割法對葉片進(jìn)行分割,選取L*a*b顏色空間作為特征,設(shè)置通道1的閾值范圍為[0.555,0.647],通道2的閾值范圍為[0.431,0.497],通道3的閾值范圍為[0.503,0.497 4],使用Canny算子提取葉片的輪廓,腐蝕填充后得到葉片的像素數(shù),換算得出每株葉片的估測值。
使用單一圖像法處理得到的植株整株葉面積之和估測值與本文方法及葉形紙稱量法、掃描法的結(jié)果對比如表3所示。結(jié)果表明,在獲取整株植株的葉片面積時,使用單一圖像處理方法估測的葉面積結(jié)果與葉形紙稱量法相比,3次重復(fù)實驗的平均誤差為53.05 cm2;與掃描法相比,3次重復(fù)實驗的平均誤差為80.10 cm2。使用三維重建法估測的結(jié)果與葉形紙稱量法相比,3次重復(fù)實驗的平均誤差為37.93 cm2;與掃描法相比, 3次重復(fù)實驗的平均誤差為5.07 cm2。一方面來看,誤差來源可能是在實際情況中大多數(shù)葉片是彎曲的、不平整的。基于圖像處理的方法可能很難解決不在同一平面內(nèi)的扭曲葉面的面積估測問題,然而這為基于三維點云的葉面積估測方法帶來了機(jī)遇。從另一方面來看,在處理從單一視角獲取的植株圖像時,基于Canny算子提取葉片區(qū)域的方法無法很好地解決葉片間的重疊問題,在處理重疊的葉片時,會被誤認(rèn)為這是一個聯(lián)通的區(qū)域,而非分離的區(qū)域,如圖7所示。這也是偏差較大的原因之一。
表3 與圖像法結(jié)果對比Tab.3 Comparison results between proposed methods and image processing cm2
結(jié)果表明,針對整個植株的單個葉片面積測定問題,本文無損精確測定葉片面積的方法是可靠的。相比處理單一圖像來估測葉面積的方法,本文方法更能處理葉片重疊、葉片卷曲等現(xiàn)象導(dǎo)致計算有誤的問題。相比其他方法重建植株的三維點云模型的方法,本文方法不需要搭載復(fù)雜的系統(tǒng),也不需要對相機(jī)進(jìn)行校正,操作更加簡便且成本低廉。
圖7 葉片區(qū)域提取過程Fig.7 Leaf area extraction based on image processing
(1)使用運動恢復(fù)結(jié)構(gòu)算法處理智能手機(jī)所獲取的植物圖像,對植物進(jìn)行三維點云模型重建,提出了一種葉片點云分割、表面重建方法及葉片面積無損估測的方法。該方法適用于日常圖像獲取平臺,成本低廉,操作簡單,且獲取的點云數(shù)據(jù)還原度較高。
(2)相比常規(guī)測定葉片面積的方法,本文方法的計算結(jié)果與掃描葉片法測定值相比平均誤差為1.21 cm2,誤差占葉片面積的平均百分比為4.67%;與葉形紙稱量法測定值相比平均誤差為1.41 cm2,誤差占葉片面積的平均百分比為6.05%。表明該方法具有較高的可靠性。