賈新宇,江朝暉*,李娟,高健
(1. 安徽農業大學信息與計算機學院,合肥 230036;2. 國際竹藤中心,北京 100102)
竹子是森林資源的重要組成部分,具有較大的經濟價值、生態價值和文化價值[1]。在竹類資源中,毛竹(Phyllostachysedulis)則是分布最廣和經濟價值最高的竹種。一般來說,毛竹從出筍階段到生長至最后成竹只需2~3個月,在成竹之后其形態則基本保持不變。因此,在毛竹筍的生長發育期間,進行高生長監測研究具有重要的意義。傳統的毛竹筍高生長監測方法主要依靠卷尺、標桿等工具進行人工接觸式測量,這種方法效率低下,勞動強度較大且無法實時準確地對毛竹筍高進行高生長監測,因此迫切需要提出一種高效的毛竹筍高生長監測方法。
借助于超聲波傳感技術,Barmeier等[2]開發了超聲波移動式植物高度測量系統,將傳感器安裝在特定的車輛上,可實時測量植株的生長高度。Sun、蘇偉等[3-4]利用激光雷達分別獲取棉花和玉米的點云數據,并構建植株三維模型,進而計算棉花與玉米的高度數據。Bendig等[5]在無人機平臺上,通過DSM對大麥株高進行測量分析并建立了基于大麥株高的生物量估算模型,該方法獲得的大麥株高的決定系數為0.92。張宏鳴等[6]通過無人機獲取玉米4個生長階段的高清數碼正射影像(DOM)和數字表面模型(DSM),并利用兩者相結合的骨架算法提取植株骨架,獲取玉米高度信息。以上方法在高度檢測方面都存在或多或少的不足之處。
近年來,計算機視覺技術得到了廣泛應用,在獲取目標圖像后,利用圖像分析方法可以較好地實現農作物長勢信息的獲取[7]。Constantino等[8]利用數碼相機拍攝水稻圖像,對圖像進行處理后,將標記條的高度與初始標記條的高度相比,實現水稻高度的測量。郭新年等[9]對現有的三角測量原理進行改進,高度值的實際測量相對誤差最大值僅為2.17%。以上方法中,目標分割效果的好壞直接決定著后續高生長監測的精度。目前基因表達式[10]、人工蜂群等智能仿生算法用于解決圖像問題則是一種較新的思想。利用正弦余弦算法(SCA)對人工蜂群算法進行改進,能夠搜索空間中的不同區域,避免過早陷入局部最優,擁有較好的全局收斂性,再結合鄰域空間信息后,能夠具有較好的分割效果。
綜上,本研究以圖像技術為基礎,通過架設林間太陽能監控攝像頭實現毛竹筍非接觸式監測,在解決圖像分割問題的前提下,利用圖像像素與幾何角度對應的線性映射關系,以獲得較為準確客觀的毛竹筍實時高生長數據。
基于圖像的毛竹筍高生長監測系統,主要由圖像采集、圖像傳輸與存儲和毛竹筍高生長監測算法等三部分組成,完整的體系結構圖如圖1所示。

圖1 系統總體體系結構圖
實驗地選擇為安徽宣城市涇縣毛竹實驗林,實驗所用毛竹筍圖像采集設備為Pony公司生產的球型監控攝像機(IPC-SD7090S-30X),該球機具有防水防塵等功能,具備300萬高清像素和30倍數碼變焦。供電方式采用太陽能光伏電池板與蓄電池相結合的方式,太陽能電池板長度和寬度均為660 mm,蓄電池輸出電壓為12 V。安裝高度為5 m,拍攝時間為2019年4月13日至4月25日,拍攝時間間隔設定為1 h。毛竹筍高生長監測系統野外實物圖如圖2所示。

圖2 太陽能球型監控攝像機實物圖
該系統首先通過太陽能4G監控網絡攝像機采集真實林間環境下的毛竹筍圖像,然后將采集的實時圖像上傳至阿里云的FTP服務器中(IP地址為:47.107.184.25,端口號為:21)。當計算機從服務器中下載毛竹筍圖像后,對圖像進行圖像分割處理,實現復雜環境下的毛竹筍目標提取。統計出圖像中提取的毛竹筍的像素數后,結合網絡攝像機幾何角度與像素之間的關系,計算毛竹筍的實際高度,實現毛竹筍高的生長監測。
基本人工蜂群算法是一種基于蜜蜂群體智能的優化算法[11],其通過模擬蜂群分工合作尋找最優食物源的行為來求解函數優化問題。算法的實現主要分為以下4個步驟:
步驟1:初始化蜂群。在D維空間下,隨機生成N個可行解(x1,x2,…,xN),具體公式為:
xi,j=Lmin,j+rand(0,1)(Umax,j-Lmin,j)
(1)
其中:i=1,2,3…N;j=1,2,3…D;Umax,j和Lmin,j分別表示第j維的上限和下限。可行解即食物源的適應度函數值Fi由式(2)得出,其中fi為可行解的目標函數值。
(2)
步驟2:引領蜂階段。在蜜源附近進行鄰域搜索,搜索公式如下所示:
Vij=xij+φij(xij-xkj)
(3)
其中:φij為[-1,1]之間的隨機數;i,k∈1,2,3…N且i≠k,j。
步驟3:跟隨蜂階段。跟隨蜂基于輪盤賭原則,根據式(4)選擇其將要跟隨的引領蜂。
(4)
步驟4:偵查蜂階段。在所有的引領蜂和跟隨蜂完成搜索后,舍棄長期未更新的食物源,與之對應的跟隨蜂也將轉變為偵查蜂,并按照式(5)隨機搜索新的食物源。
xi=bl+rand(1,d)×(bu-bl)
(5)
其中:bu和bl分別為解的上限和下限;rand(1,d)表示產生一個1行d列的矩陣,d∈(1,2,3…D)。
傳統的人工蜂群算法在搜索過程中會產生無價值和無規則的搜索,會大大地降低最優解的收斂速度。因此,本研究在這里提出結合正弦余弦優化的人工蜂群和模糊局部C均值聚類分割。從基本人工蜂群算法的搜索方式以及適應度函數兩個方面進行改進。
引入正弦余弦算法[12],并用其改進傳統人工蜂群算法中的引領蜂階段,能夠更加合理地探索和利用搜索空間,具有更高的搜索效率和全局優化能力。改進后的引領蜂搜索方式如式(6)所示:
(6)

適應度函數直接影響著圖像分割的優劣。本研究在模糊C均值的目標函數的基礎上,引入相似度測量因子Gij[13],其中測量因子Gij具體表達公式如式(7):
(7)
其中:djk表示鄰域像素xk與中心像素xj的空間歐氏距離;n表示圖像的像素個數;m為聚類時的模糊指數;uik是像素點xk到聚類中心i的隸屬度;‖xk-vi‖代表像素點xk與聚類中心vi之間的歐氏距離。
改進后的人工蜂群目標函數如式(8)所示,并以此改進人工蜂群的適應度函數。
(8)

首先設置預試驗,獲取圖像中單位像素對應的實際角度,進而實現后續毛竹筍實際高生長監測。已知太陽能監控球形攝像機的安裝高度為H,待監測的毛竹筍距離攝像機的水平距離為L,參照物高度為h;設參照物頂端距離攝像機光軸水平位置的距離為h1,攝像機從光軸水平位置到參照物頂端的夾角為α,攝像機從參照物底端與水平地面的夾角為γ,攝像機從參照物頂端到底端的夾角為β,參照物的像素坐標為(x1,y1)和(x2,y2),具體示意圖如圖3所示。

圖3 預試驗測量原理
參照物所對應的圖像像素m:
(9)
圖像中單位像素對應的實際角度t為:
t=β/m
(10)
其中,β=γ-α,γ和α可由三角關系得出。
毛竹筍的實際高生長監測原理如圖4所示,其中毛竹筍的像素坐標為(x3,y3)和(x4,y4)。

圖4 毛竹筍高生長監測原理
毛竹筍對應的圖像像素n和實際角度β1如式(11)和式(12)所示:
(11)
β1=t×n
(12)
毛竹筍高度hm如下式所示,其中攝像機光軸與毛竹筍頂端的夾角α1=γ1-β1。
hm=H-L×tanα1
(13)
若毛竹筍高度高于攝像機安裝高度,毛竹筍高度hm為:
hm=H+L×tanα1
(14)
其中,攝像機光軸與毛竹筍頂端的夾角為α1=β1-γ1。
為了驗證正弦余弦優化的人工蜂群算法(SCA-ABC)的有效性,選擇國際通用的連續基準函數進行測試,并與飛蛾火焰算法(MFO)[14]、正弦余弦算法(SCA)、粒子群算法(PSO)[15]等3種群體智能優化算法進行了比較。實驗環境為:PC機,Windows 7操作系統,Intel i5-4590處理器,主頻3.30 GHz,8.00GB內存,開發軟件為MATLAB R 2016b。
選取國際上通用的13個連續的基準函數作為本研究的測試函數[12],限于篇幅限制,這里僅列出F3、F4、F5等3種測試函數的適應度值的迭代收斂曲線,具體如圖5所示。從圖5可以看出,正弦余弦優化的人工蜂群算法在求解精度和收斂速度等方面都領先于3種對比算法。

圖5 3種測試函數4種算法的收斂曲線
本試驗以毛竹實驗林中隨機生長的8株毛竹筍為試驗對象,在拍攝期間內不間斷地監測其高生長參數指標,試驗采集的部分圖片如圖6所示。

圖6 試驗采集圖片
在林間環境下,通過攝像頭采集毛竹筍圖像,由于攝像頭視場等原因,拍攝到的圖像含有較多干擾物,后續的毛竹筍分割較為困難。因此,為減弱周邊環境中復雜干擾物的影響,從原始采集圖像中選取部分區域作為感興趣區域,同時為減小光照因素影響,對感興趣區域進行圖像增強,如圖7所示。

圖7 試驗圖像感興趣區域
本研究分割算法主要參數經實驗后設置為:聚類分割目標數為4,種群大小N為20,個體維數D為4,最大開采次數Limit為100,最大循環次數MCN=50,下限bl和上限bu分別為1和256,測量因子Gij的鄰域窗半徑r=3。圖8為本研究算法與模糊C均值聚類分割(FCM)以及基于人工蜂群優化的模糊C均值(ABC-FCM)分割的比對結果。
由圖8可以看出,本研究算法在結合圖像中的局部空間信息與灰度信息后,能夠較好地抑制其他干擾物的干擾。結合數學形態學處理后,能夠完整地將毛竹筍從圖像中分割出來。

圖8 算法分割結果對比
為客觀評價本研究算法對圖像中毛竹筍目標分割的有效性,選用錯分率(ME)作為評價函數[16]。具體計算公式如式(15):
(15)
其中:Bt和Ft分別為測試圖像分割后的背景與目標區域的面積;Bo和Fo則分別為參考圖像分割后的背景與目標區域的面積,面積大小以區域內像素的總數表示,參考圖像的背景與目標區域由人工手動分割獲取。
ME的值越小表示錯分率越低,算法分割效果越好。對于毛竹筍圖像,FCM、ABC-FCM和本研究算法的ME值分別為15.2%、4.13%和0.5%。可以看出,本研究算法相比其他兩種對比算法在分割精度上具有較大優勢。
在監測期間,為驗證毛竹筍高生長監測方法的有效性,每天對實驗選取的8株毛竹筍進行數次人工測量高度。在人工測量時,采用精度為1 mm的卷尺進行測量,同時為盡可能減小誤差,取多次測量的平均值作為毛竹筍高度的實測值。然后將利用圖像監測方法計算得到的結果與人工測量的毛竹筍高度值進行對比。表1列出了其中4株人工測量與圖像測量在部分時間段的毛竹筍高度數據以及兩組數據之間的誤差。

表1 林間毛竹筍高度計算值
由表1可以看出,筆者試驗提出的毛竹筍高生長監測方法在測量毛竹筍高度時,由于受拍攝角度等環境因素的影響和圖像分割算法的局限性,其計算值與實際測量值之間存有一定的偏差,平均測量誤差為4.17%,符合高度監測誤差標準,能夠有效地實現林間環境下毛竹筍的高生長監測。
在毛竹筍的生長階段,部分竹筍會出現竹子退筍現象,即自然生長的竹筍或未出土的竹筍在中途停止生長或者死亡。在監測期間,通過獲取到的毛竹筍高度數據亦可實現毛竹筍的退筍監測,設置時間閾值為2 d,若在1 d內毛竹筍高度的增量小于2%,則假定毛竹筍處于退筍狀態,在第2天,毛竹筍高度相對增量仍小于2%,則判斷該毛竹筍已退筍。
針對通過人工方式獲取毛竹的生長信息難度較大且工作量較多的問題,提出了一種基于圖像的毛竹筍高生長監測方法。通過在林間架設太陽能4G監控球形攝像機實時獲取毛竹筍的生長圖像,然后提取毛竹筍圖像,最后通過幾何角度原理計算圖像中目標的像素數與攝像機旋轉角度對應的線性映射關系,實現毛竹筍實際高度的獲取。其中為解決在林間環境下毛竹筍分割較為困難的問題,首先在模糊聚類的基礎上引入了局部空間信息,然后利用正弦余弦算法優化的人工蜂群對初始聚類中心進行尋優,在獲得聚類中心后對圖像進行二次分割,實現了林間毛竹筍的分割。正弦余弦算法優化后的人工蜂群相比于PSO、ABC、MFO等算法,具有更加優異的尋優性能。相比于FCM和ABC-FCM,本研究分割方法也具有更強的抗噪性能和更高的分割精度。今后工作的研究重點將是如何實現夜間的毛竹筍高生長監測。