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