文獻標識碼: A
文章編號: 0258-7998(2015)04-0036-04
0 引言
精準農業(Precision Agriculture)作為當今世界農業發展的新潮流,通過信息技術支持,可以實現定位、定時、定量的現代化農事操作技術實施與管理,以最節省的投入得到更高的收入,并高效地利用各類農業資源為目的[1]。在這一應用背景下,一種可超低空作業,具有重量輕、折疊尺寸小、操作距離遠等優點的新型多旋翼飛行器——“農藥噴霧飛行器”應運而生。它特別適合于山地丘陵、地塊小、間作套種地塊多的農作物病蟲害防治。但是這種飛行器一般采用人工遙控控制,這就需要技術人員時刻觀察并判斷飛行器是否飛出農田邊界,這不僅造成人力資源的浪費,而且效率相對較低,易出現誤判[2],尤其當農作物過高,飛行器超低空飛行時,工作人員的視角容易受到限制,這個問題就表現得更加突出。
針對上述問題,本文設計了一個能夠自動檢測農藥噴霧飛行器是否越界的智能控制系統。本系統融入了嵌入式技術、圖像處理技術和測控等技術,并以Contex-A8為內核的S5PV210作為核心平臺, 在第三方庫OpenCV、Qt的基礎上通過混合高斯模型、形狀特征提取等算法實現了運動目標的檢測、識別和定位,最終實現了農藥噴霧飛行器越界檢測,并通過無線模塊控制農藥噴霧飛行器智能飛行,無人操控。實驗結果表明,該系統能夠很好地識別到飛行器并準確地控制農藥噴霧飛行器飛行,減輕了工作人員的體力勞動,同時提高了工作效率。
1 飛行器越界控制系統農田作業分析
假設矩形ABCD為一塊農田的模擬圖,如圖1所示,表1為設置的農藥噴霧飛行器飛行參數。農藥噴霧飛行器的運動方向越界判定分析如下:
假設農藥噴霧飛行器的飛行軌跡為從農田的BC邊界飛入,垂直飛到AD邊界再折返,以此類推。由表1的參數可知攝像頭標定的邊界應在農田ABCD的內部(至少距邊界1 m內),如直線fg和eh所示。
當農藥噴霧飛行器從攝像頭2前飛過,系統根據越界檢測算法可以檢測到農藥噴霧飛行運動軌跡,并判斷飛行方向為從右向左(如圖2所示),即進入農田,此時不發出控制信號;當飛行器飛至攝像頭1前,即eh線時,根據運動軌跡判斷飛行方向向左,即要飛出邊界,此時發出控制信號,使飛行器沿eh向下平移并折返;當飛行器折返后再次飛至線fg時,運動軌跡判斷飛行方向向右,即要飛出邊界,此時發出控制信號。以此類推,直至控制農藥噴霧飛行器完成整個農田噴藥作業。
2 越界控制系統方案設計
2.1 總體結構設計
系統的核心平臺是以Contex-A8為內核的S5PV210主板,利用USB高清攝像頭實時捕獲農田邊界的視頻信號,然后視頻信號經Contex-A8分析和處理后實現農藥噴霧飛行器這個運動目標的檢測、識別和定位,進而判斷其是否越過農田邊界,最終系統通過無線模塊nRF24L01實現對農藥噴霧飛行器智能控制。系統整體結構圖如圖3所示。
2.2 USB高清攝像頭
USB高清攝像頭采用的是TTQ甜甜圈的USB2.0高速廣角超高清監控攝像頭,其采用CMOS傳感器,CS標準卡口,最大分別率為1 024×768,像素為1 200萬,每秒可以采集30幀圖像,視頻幀的格式是YUV422或者MJPG。鏡頭采用的是焦距為2.8~12 mm,通光口徑為1.4 mm,視場角為25°~103°的廣角攝像頭,清晰成像距離可達到800 m。
2.3 無線收發模塊
nRF24L01是一款工作在2.4~2.5 GHz世界通用ISM頻段的單片無線收發器芯片,具有125個可選工作頻道,數據傳輸率為1(或2) Mb/s,SPI接口數據速率為0~8 Mb/s,工作電壓為1.9~3.6 V,擁有自動應答及自動重發功能[3]。
3 越界檢測控制程序設計
農藥噴霧飛行器越界檢測控制程序是基于QT和OpenCV開發,運行環境為ARM-Linux嵌入式操作系統,核心算法主要包括對圖像的預處理、基于混合高斯模型的運動目標檢測、基于形狀特征的目標識別定位、基于質心位置和運動方向的目標越界檢測等,最終實現對農藥噴霧飛行器的越界判斷和通過無線模塊對其的控制。農藥噴霧飛行器越界檢測控制程序設計框圖如圖4所示。
3.1 第三方計算機視覺庫OpenCV的移植
OpenCV是由Intel公司發起并參與開發且在近年來迅速普及的計算機視覺研究工具,是一個跨平臺的計算機視覺庫[4]。它源代碼開放,輕量高效,并提供了非常豐富的幀提取函數和視覺處理算法,使開發者可以在其視頻開發或圖像處理項目中直接進行算法移植或將其添加自己編寫的程序中,達到事半功倍的效果[5]。移植過程為,首先從官網上下載源碼包,然后根據嵌入式ARM系統安裝步驟安裝交叉編譯器、參數配置和編譯,經測試最終使用的版本為OpenCV2.4.2。
3.2 圖像預處理
考慮到圖像處理涉及到大量的矩陣操作和S5PV210的性能以及監控區域的復雜性,預處理線程首先采用人工標定的方法對視頻的每一幀進行ROI(感興趣區域)提取,然后使用OpenCV的blur()和GaussianBlur()等庫函數對圖像進行去噪、消除模糊和增強對比度等處理,最終得到一個有利于后期處理的圖片。整個過程如圖5所示,其圖像中的豎直黑線表示界線。
3.3 混合高斯模型[6]目標檢測算法實現
高斯模型是一種用高斯概率密度函數來量化對象并將其分解為由若干個高斯概率密度函數所組成的模型。基于高斯模型的背景提取建立在像素級,不同于單高斯模型的是,混合高斯模型將圖像的每個像素設計成由若干個(一般為3~5個)高斯模型根據各自的權值加和共同產生的[7]。然后將采集到的圖像像素與這幾個高斯分布分別進行匹配,以確定哪些像素屬于背景。又因為監控區域時刻都會有變化,比如風吹樹動、人員流動或物體的進入等,使最初得到的背景不再具有可信度,因此還需要不斷地對各個高斯分布的權值、均值和方差進行實時更新,這樣處理有助于抗噪,比如光照變化、樹葉晃動等,以達到背景模型的更準確表達。其中混合高斯像素點判為背景的概率計算公式如下:
其中Xt的概率p(Xt)是該像素分別屬于K個高斯分布的概率加權和;K為高斯模型的數量(3~5個);(k,t)分別表示t時刻第k個高斯模型的權重、均值和方差,表示t時刻第k個高斯模型的概率密度函數。
混合高斯參數更新函數為:
其中,M(k,t)=1,匹配成功
0,匹配不成功,a(取值0~1之間)為各個高斯分布權重的更新率;?籽為參數的更新率,?籽越大,參數調整越快。
混合高斯背景更新函數為:
其中H表示經過以上步驟的調整得到的K個高斯分布并取前H個高斯分布作為新的背景;T表示屬于背景高斯分布的權值和占總權值的最小比例;b是滿足T的最合適的高斯分布數。
根據以上理論,基于OpenCV實現混合高斯模型目標檢測算法的關鍵代碼為:
BackgroundSubtractorMOG mog;//定義混合高斯
mog(frame, foreground, 0.02); //更新背景圖片并且輸出前景
threshold(foreground, foreground, 128, 255,
THRESH_BINARY_INV);
3.4 目標的識別定位算法
運動目標識別定位算法如圖6所示,其中形態學濾波是為消除細小的噪聲干擾又能填充物體內細小的空洞,有利于目標輪廓提取,質心坐標是根據連通域的幾何距求出。一幅數字圖像的階2-D距定義為:
其中M和N分別是圖像的高和寬,p和q是非零正整數,mpq為(p+q)矩。根據式(4)的mpq可求出連通域質心坐標,質心的計算公式為:
其中x表示質心的橫坐標,y表示質心的縱坐標。最后將質心(x,y)坐標輸出,為目標越界判斷和控制提供依據。
運動目標識別定位算法的實現代碼如下:
(1)調用OpenCV的庫函數dilate()和erode()函數,實現二值形態學閉運算。具體實現代碼為:
dilate( foreground, foreground, element);//膨脹
erode( foreground, foreground, element); //腐蝕
其中每一個函數中第一個foreground表示輸入圖像,第二個表示經函數處理后輸出圖像,element表示用于腐蝕和膨脹處理的模板。
(2)調用函數:find_Contours(foreground, outgroud, con-
tours, point_num, MAX_CON) 提取二值圖像中有效輪廓存于contours中。其中foreground表示輸入待提取輪廓的圖像;outgroud表示輸出圖像;contours是一個容器變量,用以存放輪廓的數量、長度和每個輪廓的坐標;point_num和MAX_CON分別表示有效輪廓的下限和上限,濾除無效輪廓。
(3)調用函數:get_barycenter(contours,barycenter)實現從有效輪廓變量contours中計算形狀描述符和識別有效的輪廓,并將最終質心的坐標存儲到barycenter中,其類型是cv::Point,表示一個坐標為整數的二維點。
3.5 目標越界判斷及控制
目標越界判斷的兩個條件是運動目標質心位置和運動方向,且運動方向由質心的運動軌跡可求出。因此,判斷農藥噴霧飛行器是否在右邊界越界的條件表達式如下:
其中crossAlarm越界標記,1為越界;flag表示運動方向標號,規定從左向右為0,從右向左為1;是質心坐標,g(k,y)表示界線函數(k為常數)。通過異或(0^flag,1^flag)可有效地解決雙向越界報警,實現單方向越界報警。左邊界越檢測算法和右側的類似。程序中的主要函數為judge_barycenter(barycenter,B_left,B_right),其中bary-
center為質心坐標,B_left 和B_right分別表示左、右邊界函數常數k,返回值為0或1,存于crossAlarm。
當檢測到農藥噴霧飛行器越界crossAlarm=1,程序馬上通過軟中斷控制無線模塊nRF24L01發送控制命令給農藥噴霧飛行器。為了保證控制的正確率,控制命令采用包含校驗和的數據包發送,并且農藥噴霧飛行器解碼后要做出答復,數據包的格式為:包頭+包長度+命令+校驗位,校驗方式為和校驗。
4 系統的測試
本文設計的基于ARM的農藥噴霧飛行器越界控制系統主要由Contex-A8圖像檢測控制系統、nRF2401無線控制模塊、高清攝像頭捕獲終端和三腳架等部分組成,且最終在農田進行測試。首先用三腳架將攝像頭抬升到一定高度使攝像頭前無遮擋物,然后啟動農藥噴霧飛行器飛躍農田的邊界,經混合高斯和目標的識別定位算法處理過程產生的效果如圖7~10所示,其中圖7是由圖5(c)經混合高斯模型算法處理得到的。
為了驗證系統的可靠性,根據農藥噴霧飛行器工作的天氣條件,系統分別在晴朗微風、晴朗中風、陰天微風3種條件下進行測試,測試的數據如表2所示。
現場測試的實驗結果表明,基于ARM的農藥噴霧飛行器越界控制系統能夠正確檢測、識別定位和判斷農藥噴霧飛行器是否越界,并控制其正確飛行完成農田作業。同時分析得:雖然光線的強弱和風速對系統有一定的影響,但在不同的天氣環境測試該系統時正確率也可達到92.85%。因此本系統可以滿足客戶需求,實現對農藥噴霧飛行器農田作業的智能控制,在精準、智能農業中具有一定的推廣價值。
參考文獻
[1] 胡承鍵.加速寧夏農用無人機開發應用促進精準農業發展[J].寧夏農林科技,2014,55(5):8-10.
[2] 林蔚紅,孫雪鋼,劉飛,等.我國農用航空植保發展現狀和趨勢[J].農業裝備技術,2014,40(1):6-10.
[3] 樊冬雪,成怡,海林,等.四軸飛行器視覺導航系統設計[J].計算機技術與應用,2014,40(8):142-146.
[4] 尹俊超,劉直芳.基于OpenCV的運動目標檢測與跟蹤[J].計算機工程與設計,2011,32(8):2817-2820.
[5] 劉瑞幀,于士琪.OpenCV教程基礎篇[M].北京:北京航空航天大學出版社,2007.
[6] Gan Xinsheng,Zhao Shubin.Comparison on background subtraction algorithms for moving target detection[J].Command Control & Simulation,2008,30(3):45-50.
[7] 李娟,邵春福,楊勵雅.基于混合高斯模型的行人檢測方法[J].吉林大學學報(工學版),2011,41(1):41-45.