陳 釗,趙玉清,楊陸強(qiáng),周 橋,高彥玉,劉存瑞,王子輝,時(shí) 玲
(云南農(nóng)業(yè)大學(xué) 機(jī)電工程學(xué)院,昆明 650201)
計(jì)算機(jī)視覺技術(shù)作為一種常用的圖像處理技術(shù),被廣泛地應(yīng)用于工業(yè)、醫(yī)療保健、航空航天、軍事等領(lǐng)域。其針對(duì)視頻圖像中連續(xù)運(yùn)動(dòng)物體的分析是最具應(yīng)用前景的一個(gè)發(fā)展方向,在機(jī)器人導(dǎo)航、智能視覺監(jiān)控系統(tǒng)、醫(yī)學(xué)圖像分析、工業(yè)檢測(cè)、視頻圖像分析及軍事雷達(dá)視頻信號(hào)的處理上占有舉足輕重的地位[1]。OpenCV作為一種開源的計(jì)算機(jī)視覺庫(kù),可用于解決包括人機(jī)互換、物體識(shí)別、圖像分區(qū)、人臉識(shí)別、動(dòng)作識(shí)別、運(yùn)動(dòng)跟蹤及機(jī)器人在內(nèi)等方面的問題[2]。自發(fā)布以來,其就被廣泛地應(yīng)用于諸多領(lǐng)域產(chǎn)品的研究及開發(fā),如衛(wèi)星地圖和電子地圖的拼接、掃描地圖對(duì)齊、醫(yī)學(xué)圖像去噪、安全和入侵檢測(cè)系統(tǒng)、自動(dòng)監(jiān)視和安全系統(tǒng),以及制造業(yè)中的產(chǎn)品質(zhì)量檢測(cè)系統(tǒng)、攝像機(jī)標(biāo)定、軍事應(yīng)用、無人飛行器、無人汽車和無人水下機(jī)器人等[3]。依托于自身良好的開源性,近10年來它已成為發(fā)展最為迅速的圖像識(shí)別技術(shù)之一。
近年來,隨著國(guó)家對(duì)農(nóng)業(yè)的不斷重視,各種應(yīng)用于農(nóng)業(yè)方面的新科技、新方法層出不窮。在我國(guó),背負(fù)式噴霧器噴霧施藥目前依然是藥農(nóng)實(shí)施施藥作業(yè)的主要方式。在施藥過程中,藥農(nóng)常以經(jīng)驗(yàn)噴灑農(nóng)藥,由于不同藥農(nóng)在田間行走時(shí)的步伐大小、行走頻率和噴桿擺動(dòng)頻率存在一定差異,或者操作三輪(四輪)噴桿式噴霧機(jī)的習(xí)慣、土地松軟程度的不同等情況常導(dǎo)致施藥不均,進(jìn)而導(dǎo)致殺蟲滅菌不徹底、控長(zhǎng)增產(chǎn)類藥物需重新噴灑、除草類藥物除草不盡等不良結(jié)果。這不僅造成了人、財(cái)、物的浪費(fèi),而且還在一定程度上削減了作物的經(jīng)濟(jì)效益。為此,提出了一種根據(jù)植株表面積實(shí)施精量噴霧的技術(shù)。在實(shí)驗(yàn)室條件下,該技術(shù)實(shí)現(xiàn)了作物圖像的實(shí)時(shí)處理,并計(jì)算出了圖像區(qū)域中的待施藥植株的表面積,能夠?yàn)閲婌F設(shè)備的精量噴霧提供依據(jù)。
本系統(tǒng)的主要功能是利用噴霧設(shè)備采集植株圖像并對(duì)其實(shí)時(shí)處理,通過串口通信技術(shù)的單工方式將處理后的相關(guān)數(shù)據(jù)傳送至末端執(zhí)行機(jī)構(gòu)。噴霧設(shè)備的信息流如圖1所示。
該設(shè)計(jì)方案以Microsoft Visual Studio 2013為開發(fā)工具,實(shí)現(xiàn)對(duì)原始圖像的灰度化處理、去噪和其他前期操作;使用OpenCV視覺庫(kù)完成對(duì)植株的邊緣檢測(cè)、輪廓繪制、面積及長(zhǎng)度的計(jì)算;而后,利用Windows API(Windows Application Programming Interface)函數(shù)進(jìn)行編程,并將面積信號(hào)發(fā)送給單片機(jī)。其中,單片機(jī)利用接收到的數(shù)字來調(diào)節(jié)PWM的占空比,進(jìn)而控制噴霧器所噴灑的藥量,最終實(shí)現(xiàn)根據(jù)圖像中植株表面積的大小進(jìn)行精量噴霧。圖像識(shí)別系統(tǒng)功能模塊如圖2所示。
OpenCV的全稱是Open Source Computer Vision Library,直譯就是“開源計(jì)算機(jī)視覺庫(kù)”,可在Windows、Linux、Mac、OS、Android、iSO、Maemo、FreeBSD、OpenBSD等操作系統(tǒng)上運(yùn)行[4]。OpenCV由一系列的C函數(shù)和C++類構(gòu)成,具有輕量、高效的特點(diǎn)。強(qiáng)大的OpenCV除了用C/C++語言進(jìn)行開發(fā)和使用外,還支持C#、Ch、Ruby等匯編語言,同時(shí)提供了對(duì)Python、Ruby、MatLab等語言的接口,搭建了圖像處理和計(jì)算機(jī)視覺在很多方面的通道[5-6]。常用的OpenCV模塊如表1所示。
圖1 噴霧設(shè)備的信息流整體結(jié)構(gòu)圖
圖2 圖像識(shí)別系統(tǒng)功能模塊圖
模塊功能描述calib3d相機(jī)校準(zhǔn)和三維重建等內(nèi)容core核心功能模塊imgproc圖像處理模塊features2d2D功能框架highguiGUI函數(shù)庫(kù)ml機(jī)器學(xué)習(xí)模塊objdetect目標(biāo)檢測(cè)模塊stitching圖像拼接模塊
OpenCV的優(yōu)點(diǎn)主要體現(xiàn)在以下兩個(gè)方面:一是執(zhí)行速度快,能實(shí)時(shí)應(yīng)用;采用優(yōu)化的C/C++代碼編寫,能夠充分利用多核處理器的優(yōu)勢(shì)。二是移植性好,可跨多種平臺(tái)運(yùn)行。OpenCV由一系列的C函數(shù)和C++類構(gòu)成,擁有500多個(gè)C函數(shù)跨平臺(tái)的中高層API[7-9]。
因?yàn)楸驹O(shè)計(jì)使用的上位機(jī)為32位操作系統(tǒng),所以選用Windows API串口通信方式。利用其編程將OpenCV程序計(jì)算得到的植株表面積傳送給單片機(jī),該設(shè)計(jì)的實(shí)質(zhì)是調(diào)用計(jì)算機(jī)操作系統(tǒng)提供的一系列底層例程來完成串口通信。通信的具體步驟可以分為以下幾步:打開串行端口,配置串行端口,讀/寫串行端口,關(guān)閉串行端口[10]。其主要通過CreateFile、GetCommState、SetCommState、BuilderCommDCB等函數(shù)的使用完成串口通信。
程序開頭部分與單變量定義:
#include
sbit jdq=P1.0; //繼電器1.0
unsigned char b=0;
//函數(shù)聲明
void uart_init();
void jdqpwm();
串口初始化函數(shù),單片機(jī)接受PC串口發(fā)送的數(shù)據(jù)前需要進(jìn)行串口學(xué)初始化。
void uart_init()//串口初始化
{
TMOD=0x20;//使用定時(shí)器1,工作方式2
TL1=0xfd;
TH1=0xfd;
SCON=0x50;//方式1打開,接受允許
ES=EA=1;//打開串口中斷允許和總中斷允許位,
TR1=1;
}
串口中斷入口函數(shù):
串口中斷入口函數(shù)。函數(shù)將串口中斷標(biāo)志位清零。并將接受的數(shù)據(jù)賦值給b。
void uart_inter() interrupt4
{
RI=0;
b =SBUF;
}
本設(shè)計(jì)以普通USB攝像頭為信息采集設(shè)備,像素為1 200萬,最大分辨率為640×480,最大幀率為30幀/s,上位機(jī)PC采用Intel Core(處理器i5-3210,主頻2.5GHz,4G內(nèi)存),系統(tǒng)類型為32位。采用VS2013軟件編程,OpenCV版本為2.47。實(shí)驗(yàn)對(duì)象為采集得到的1張銀杏葉,如圖3所示。
圖3 銀杏葉原始圖
圖像采集過程中,光線的角度、噴霧操作導(dǎo)致的植株擺動(dòng)、信號(hào)輸入設(shè)備的震動(dòng)、田地中的其他物質(zhì)及攝像頭上的灰塵或者雨滴等會(huì)致使圖像失真或者腐蝕。所以,必須對(duì)圖像進(jìn)行預(yù)處理,主要包括圖像修補(bǔ)、灰度化處理、邊緣檢測(cè)和噪聲去除等操作,如圖4所示。
圖4 灰度圖與輪廓圖
3.1.1 圖像修補(bǔ)
常用的圖像修補(bǔ)方法是基于快速行進(jìn)的修補(bǔ)算法(FMM),由Alexandru Telea[11]在2004年首次提出。核心思想是先處理待修復(fù)區(qū)域邊緣上的像素點(diǎn),然后擴(kuò)大區(qū)域進(jìn)行遍歷,直至修復(fù)完所有待修復(fù)的圖像像素[12]。采用此法進(jìn)行圖像修補(bǔ),結(jié)果如圖5所示。
圖5 腐蝕圖與修補(bǔ)后的圖
3.1.2 圖像濾波
圖像濾波主要是指在盡量保持圖像細(xì)節(jié)特征的條件下對(duì)目標(biāo)圖像的噪聲進(jìn)行抑制,是圖像預(yù)處理中不可或缺的操作。消除圖像中的噪聲或其他成分的操作叫作圖像的平滑處理或?yàn)V波操作。通常情況下,信號(hào)或者圖像的能量大部分集中在幅度譜的低頻或者中頻段,而在較高頻段有用的信號(hào)經(jīng)常被噪聲淹沒。所以,濾波的一個(gè)手段就是降低高頻段幅度[13]。
在不破壞圖像的輪廓或者邊緣等重要信息的情況下,濾波能消除數(shù)字化過程中所混入的噪聲,將抽出特征模式轉(zhuǎn)化為識(shí)別特征模式,并使圖像的清晰度及顯示效果變好;而對(duì)于濾波器,可以把濾波器看作一個(gè)加權(quán)系數(shù)的薄紗,用濾波器處理圖像時(shí)透過薄紗會(huì)清楚地看到想看到的圖像特征。常用的濾波器主要有方框?yàn)V波、均值濾波、高斯濾波、中值濾波和雙邊濾波等(從左到右依次見圖6)。中值濾波是圖像處理中的常用步驟,它對(duì)于斑點(diǎn)噪聲(Speckle Noise)和椒鹽噪聲(Salt-and-Pepper Noise)來說尤其有用[14],而斑點(diǎn)噪聲又比較常見。所以,本設(shè)計(jì)采用的中值濾波。
圖6 5種濾波圖
3.1.3 噪聲去除
何凱明等在2010年首次提出導(dǎo)向?yàn)V波,而在后續(xù)研究中又改善了相關(guān)算法,使得快速導(dǎo)向?yàn)V波得以實(shí)現(xiàn)[15-16]。單向?yàn)V波不但能夠保證雙邊濾波的邊緣平滑,而且對(duì)于邊緣附近的檢測(cè)也有很好的效果。導(dǎo)向?yàn)V波具體分為以下幾步:①利用boxFilter濾波器完成均值計(jì)算,包括導(dǎo)向均值、原始均值、互換相關(guān)均值及自相關(guān)均值;②根據(jù)均值計(jì)算出相關(guān)的系數(shù)參數(shù),包括自相關(guān)與互相關(guān)方差;③計(jì)算窗口線性參數(shù)a、b;④根據(jù)公式計(jì)算參數(shù)a、b的均值;⑤利用參數(shù)得到導(dǎo)向?yàn)V波輸出輸出矩陣;⑥圖像通過輸出的矩陣顯示完成導(dǎo)向?yàn)V波。
3.1.4 HSV顏色轉(zhuǎn)換與提取輪廓
HSV(Hue,Saturation,Value)是根據(jù)顏色的直觀特性由A.R.Smith在1978年創(chuàng)建的一種顏色空間,也稱六角錐體模型(Hexcone Model)[17]。HSV色系對(duì)用戶來說是一種直觀的顏色模型,如圖7所示。(R,G,B)分別是一個(gè)顏色的紅、綠和藍(lán)坐標(biāo),它們的值在0~1之間構(gòu)成了立方體。HSV六棱錐模型是從RGB立方體演變過來的,參數(shù)H表示色彩信息,也就是所處的光譜顏色的位置,這個(gè)參數(shù)用角度來表示。紅、綠、藍(lán)分別相隔120°,互補(bǔ)的顏色相差180°;純度S為比例值,范圍為0~1,用來表示所選的顏色的純度與該顏色最大純度之間的比率;V表示色彩的明亮程度,范圍為0~1。HSV是一種比較直觀的顏色模型,既然待噴灑的植株是綠色的,又因?yàn)镽GB不適合顏色的比較,通過查閱資料,得到綠色的H值大概在35~90之間;通過遍歷圖像中所有像素,留下在此區(qū)間內(nèi)飽和度和色調(diào)較高的像素,其余的當(dāng)作噪聲和腐蝕等。提取顏色及閉運(yùn)算后的輪廓如圖8所示。
圖7 HSV色彩空間
圖8 綠色(HSV)提取以及輪廓
3.1.5 作物面積計(jì)算
計(jì)算原理:在攝像頭與拍攝物體距離為定長(zhǎng)且與被拍攝物體平行的條件下(見圖9),由于兩邊都是相似三角形,所以鏡頭距離物體長(zhǎng)度a、定長(zhǎng)b、圖片中物體的長(zhǎng)度c與物體的實(shí)際長(zhǎng)度d有以下幾何關(guān)系,即
(1)
圖像中物體的面積S1與物體的實(shí)際面積S有如下關(guān)系,即
(2)
由式(1)和式(2)可得
(3)
所以,在固定鏡頭距離物體的長(zhǎng)度a的情況下,物體的實(shí)際面積與計(jì)算面積存在一定的比例關(guān)系。通過 OpenCV中的contourArea()和arcLength()函數(shù)計(jì)算出輪廓的面積和長(zhǎng)度,由此搭建了該精量噴霧系統(tǒng),如圖10所示,OpenCV的計(jì)算結(jié)果如圖11所示。
a.鏡頭距離物體長(zhǎng)度 b.定長(zhǎng) c.圖片中的長(zhǎng)度 d.物體實(shí)際長(zhǎng)度圖9 原理圖
圖10 系統(tǒng)圖
圖11 面積計(jì)算(1)
相對(duì)于實(shí)際情況,考慮到由于各種誤差的存在,對(duì)公式(3)進(jìn)行修訂,則
(4)
總的來說,在采用固定型號(hào)的攝像頭及攝像頭距離物體長(zhǎng)度a保持不變的情況下,實(shí)際面積與計(jì)算面積呈如下比例關(guān)系,即
S=KS1
(5)
本設(shè)計(jì)所采用的攝像頭距離物體的距離a=10cm,通過繪制1cm2的小方格,在同等條件下改變閾值,測(cè)算得到4組數(shù)據(jù):5 873、5 868.5、5 002、4 995;可得面積為1cm2時(shí),其在系統(tǒng)中被表達(dá)為5 434.6;通過求取平均值及等比例關(guān)系,計(jì)算得銀杏葉的表面積為13.490cm2,如圖12所示。利用細(xì)鉛筆將銀杏葉的輪廓描繪在紙上,再數(shù)出繪制的1mm2的小網(wǎng)格個(gè)數(shù)(組數(shù)據(jù)見表2),得出銀杏葉的表面積為13.444cm2。綜上所述,計(jì)算得表面積誤差為3.4%。
圖12 面積計(jì)算 (2)
試驗(yàn)次數(shù)測(cè)量值/個(gè)試驗(yàn)次數(shù)測(cè)量值/個(gè)1133021345313504134651350613457135381336
該系統(tǒng)采用綠色(HSV)等提取方法,顯著地消除了圖像噪聲。但分析過程中,由于受實(shí)驗(yàn)場(chǎng)景、光線、田地中其他物質(zhì)等的影響,USB攝像頭采集到的圖像中存在很多雜質(zhì),對(duì)計(jì)算結(jié)果產(chǎn)生了一定的影響;同時(shí),繪制實(shí)物輪廓時(shí),由于操作誤差的存在,在一定程度上放大了實(shí)物的測(cè)繪面積,對(duì)計(jì)算結(jié)果的誤差存在一定的影響。若采用分辨率更高的光譜攝像機(jī),將有助于提高圖像的清晰度,優(yōu)化該系統(tǒng)的處理結(jié)果。
本設(shè)計(jì)通過利用微攝像頭的測(cè)距原理,通過contourArea()和arcLength()函數(shù)計(jì)算出了植株圖像中的輪廓的表面積,與實(shí)際測(cè)算的結(jié)果相比較,雖存在一定的誤差,但為植株精準(zhǔn)施藥的前提——待施藥面積計(jì)算提供了一種方法。但是,由于像素或者畫面的清晰度等問題,本設(shè)計(jì)受到了一定的局限;同時(shí),采用的一些圖像處理手段,也會(huì)對(duì)最終的表面積計(jì)算帶來影響。高分辨率的光譜攝像機(jī)的使用有助于優(yōu)化處理結(jié)果,但也提高了成本。與此同時(shí),為了統(tǒng)一操作方便,攝像頭要距離植株的要大致相等。在實(shí)際田野中,難免會(huì)有個(gè)別植株特別高大與矮小,而且現(xiàn)實(shí)之中植物的葉面也不是理想的處在同一平面下,這也是本設(shè)計(jì)的不足之處。
參考文獻(xiàn):
[1] 吳曉陽.基于OpenCV的運(yùn)動(dòng)目標(biāo)檢測(cè)與跟蹤[D].杭州:浙江大學(xué),2008.
[2] 矣昕寶,全海燕,許伶俐.一種基于OpenCV的多扇區(qū)圓檢測(cè)方法[J].科學(xué)技術(shù)與工程,2011,16(11):3698-3701.
[3] 艾倩.三維模型構(gòu)建與動(dòng)態(tài)目標(biāo)識(shí)別算法設(shè)計(jì)與實(shí)現(xiàn)[D].沈陽:東北大學(xué),2011.
[4] 辛軍.基于視頻流的人群目標(biāo)識(shí)別和跟蹤的研究[D]. 沈陽:東北大學(xué),2011.
[5] 毛星云.OpenCV3編程入門[M].北京:電子工業(yè)出版社,2015.
[6] 胡廣勝,王青,單清群. 紅外與可見光雙攝像機(jī)標(biāo)定方法研究[J]. 科技創(chuàng)新與應(yīng)用,2017(4):9-11.
[7] 尹俊超,劉直芳.基于OpenCV的運(yùn)動(dòng)目標(biāo)檢測(cè)與跟蹤[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2011(8):2817-2820.
[8] 劉立強(qiáng),蔡曉華,吳澤全.基于OpenCV的除草機(jī)器人圖像處理技術(shù)[J].農(nóng)機(jī)化研究, 2013,35(12):162-165.
[9] 高素文.基于OpenCV的實(shí)時(shí)人臉識(shí)別系統(tǒng)研究與實(shí)現(xiàn)[D].保定:華北電力大學(xué),2015.
[10] 吳芳.基于MATLAB燃料電池半實(shí)物仿真系統(tǒng)設(shè)計(jì)[D].武漢:武漢理工大學(xué),2012.
[11] Alexandru Telea.An Image Inpainting Technique Based on the Fast Marching Method[J].Journal of Graphics Tools, 2004,9(1):23-34.
[12] 李景峰,潘恒,楊麗娜,等.VisualC++串口通信技術(shù)詳解[M].北京:機(jī)械工業(yè)出版社,2013.
[13] 董輝.視頻中運(yùn)動(dòng)物體檢測(cè)與跟蹤的實(shí)現(xiàn)[D].合肥:安徽理工大學(xué),2012.
[14] 詹燈輝,周杰.基于視頻的交通流量的統(tǒng)計(jì)方法[J].儀表技術(shù),2011(7):42-44.
[15] K He, J Sun,X Tang.Guided image filtering[J].European Conference on Computer Vision, 2010,35(6):1-14.
[16] K He, J Sun, X Tang.Guided Image Filtering[J].Pattern Analysis & Machine Intelligence IEEE Transaction on, 2013, 35(6):1397-1409.
[17] 景林,林耀海,溫永仙,等.結(jié)合色彩特征和空域特征的成捆原木輪廓識(shí)別[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013(7):196-199.
[18] 郭孟杰,陳麗君,楊帆,等. 基于USB攝像頭的田間圖像采集方法研究[J].農(nóng)機(jī)化研究,2015,37(12):240-244.
[19] 劉龍申,沈明霞,孫玉文,等. 基于FPGA的農(nóng)田圖像采集與3G無線傳輸系統(tǒng)設(shè)計(jì)[J]. 農(nóng)業(yè)機(jī)械學(xué)報(bào),2011(12):186-190.
[20] 王偉,張剛,劉九慶,等. 農(nóng)業(yè)信息采集機(jī)器人設(shè)計(jì)及試驗(yàn)研究[J]. 農(nóng)機(jī)化研究,2016,38(9):206-209.
AbstractID:1003-188X(2018)06-0194-EA
Abstract: In order to achieve the precise spray and spray equipment effectively save pesticide use, this paper proposes a precise spray image processing technology based on open source computer vision technology. Through the extraction, identification of green plants, calculation the area of green areas, and on this basis, carried on the experiment,results show that the system can realize in high-speed processing of plant image, and can calculate the surface area of the image .The precision of system laid the foundation for the spray equipment.
Keywords: spray equipment; image processing technology; openCV; a serial port communication