趙建敏, 薛曉波, 李 琦
(內蒙古科技大學信息工程學院,內蒙古包頭 014010)
基于機器視覺的馬鈴薯病害識別系統
趙建敏, 薛曉波, 李 琦
(內蒙古科技大學信息工程學院,內蒙古包頭 014010)
設計出一種基于機器視覺的馬鈴薯病害識別系統,該系統主要包括病害識別部分、服務器端、客戶端。識別部分采集病害葉片圖像,并進行小波去噪。利用OTSU閾值算法分割圖像,提取病害的顏色、形狀、紋理特征并利用SVM分類器進行識別。基于VS 2010搭建服務器端,提供包含REST API的Web Service與客戶端進行信息交互。基于Android SDK設計病害識別系統的手機客戶端,通過3G或無線網絡對服務器端進行訪問。通過實地測試,能準確識別出馬鈴薯的幾種主要病害,且識別率大于92%。
機器視覺;特征提取;分類器;REST API;Android SDK;馬鈴薯病害
基于機器視覺的圖像識別系統,一般采用CCD或CMOS攝相機攝取檢測圖像并轉化為數字信號,再采用先進的計算機硬件與軟件技術對數字圖像信號進行處理,從而得到所需的各種目標圖像特征值,并由此實現識別或缺陷檢測等多種功能。
近年來大量學者做了相關研究,陳佳娟等通過對棉花葉片上的空洞及邊緣的殘缺處理來測定棉花蟲害的受害程度[1];邱道尹等研究出一套關于大田中農作物害蟲實時檢測的系統[2]。機器視覺技術多集中用于工業領域[3],農業方面處于嘗試探索階段。
2015年5—6月,在大田開放環境下采集馬鈴薯健康、早疫病、晚疫病、炭疽病、灰霉病等病害圖像樣本,4種病害癥狀見圖1。
本研究基于VS 2010搭建病害識別系統,主要功能是對病斑進行分割、特征提取,然后采用支持向量機的分類器進行識別。用WCF REST Service構建服務器端,提供REST風格的服務與客戶端實現數據共享,客戶端采用美國谷歌(Google)公司推出的手機開發平臺Android SDK[4]等來實現。另外,增加了檔案管理系統,記錄馬鈴薯病害的檔案和信息,系統結構見圖2。
軟件結構主要分為驅動層和應用層,軟件架構見圖3。
驅動層包括客戶端的Android SDK、JDK、Eclipse,Mysql數據庫,以及OpenCV。應用層包括基于VS 2010的病害識別各部分,構建的WCF REST Service以及病害信息管理等。
病害識別部分是本研究的核心部分。通過設計算法程序實現病斑分割的各環節,并且搭建病害識別系統,具體過程見圖4。
2.1 預處理
采集到的圖像存在的缺點主要是噪聲干擾。與Fourier變換相比,小波變換是空間(時間)和頻率的局部變換,因而能有效地從信號中提取信息。
在VS 2010中調用Opencv函數DWT()和IDWT(),前者完成任意層次的小波變換,后者完成任意層次的小波逆變換,變換后的結果直接保存在輸入圖像中。小波變換將圖像分解成高頻部分和低頻部分,濾除圖像中的低頻成分,再通過小波逆變換還原圖像,病害部位的圖像得到增強,同時也消除了圖像中低頻背景的干擾。
void DWT(IplImage*pImage,int nLayer);
void IDWT(IplImage*pImage,int nLayer)。
2.2 圖像局部顯示及分割
通過目標與背景的二值化圖像與原圖作乘法運算得到良好的局部圖像。圖像局部顯示的關鍵是獲得良好的二值化圖像,本研究采用OTSU閾值分割算法來獲得。
OTSU分割法,即大津法,又叫最大類間方差法,是一種自適應的閾值確定方法。按圖像的灰度特性,將圖像分成2個部分,稱之為部分0和部分1(即通常意義的背景與目標)。其主要的實現原理如下:
(1)建立圖像灰度直方圖(共有L個灰度級,每個出現概率為p);
(1)
(2)計算背景和目標的出現概率,計算方法如下:
(2)
式中:假設t為所選定的閾值,A代表背景(灰度級為0~N),B為目標。
(3)計算A和B2個區域的類間方差如下:
σ2=PA(ωA-ω0)2+PB(ωB-ω0)2。
(3)
式中:第1個表達式分別計算A和B區域的平均灰度值;第2個表達式計算灰度圖像全局的灰度平均值;第3個表達式計算A、B2個區域的類間方差。
利用上述算法得到二值化圖像(圖5)。
圖像的乘法操作是點對點的像素點進行操作。如果記輸入圖像為A(x,y)和B(x,y),輸出圖像為C(x,y),則有:
C(x,y)=A(x,y)×B(x,y)。
(4)
利用二值化圖像與原圖作乘法運算得到良好的局部圖像(圖6)。
2.3 分類特征提取
馬鈴薯病態葉片在顏色和紋理上與正常葉片有較大的區別,而且不同種類的病害病斑顏色和形狀也不同。試驗中,將對馬鈴薯葉片病斑的顏色、紋理、病斑形狀這3個特征進行提取研究。
2.3.1 顏色特征提取 RGB顏色模型中的R、G、B分別代表圖像顏色在紅(Red)通道、綠(Green)通道、藍(Blue)通道上的灰度值。基于病害圖像的顏色特征進行數值計算。在分割后圖像中分別統計病害部位R、G、B分量的平均值,其計算公式如下:
(5)
(6)
(7)
式中:Total為病害像素點總數,N為病害圖像的像素點數。環境光照強度的不同會導致R、G、B的變化幅度很大,因此以G分量的均值為參照值,用R、B分量均值與G分量均值之比作為病害特征參數,即
r=R/G。
(8)
b=B/G。
(9)
式中:r為紅色分量均值比,b為藍色分量均值比。由于r、b值對光照的變化不敏感,能夠有效地提高算法的性能。
RGB顏色分量特征值提取結果見表1。
表1 RGB顏色分量特征值提取
HSV顏色空間是一種比較直觀的顏色模型。其中H、S、V分別代表色調、飽和度、亮度。同樣可以得到HSV顏色分量特征提取結果見表2。
表2 HSV顏色分量特征提取
2.3.2 形狀特征提取 形狀特征提取需要在二化圖像中提取病斑輪廓。調用Opencv中相關函數進行算法編程,以提取病斑輪廓特征。
cvFindContours():從二值圖像中檢索輪廓,并返回檢測到的輪廓個數,用來統計病斑數目;用法為int contour_num=cvFindContours(src,storage,/&contour,sizeof(CvContour),CV_RETR_EXTERNA/L,CV_CHAIN_APPROX_SIMPLE)。cvContourArea():計算整個或部分輪廓的面積,用來計算病斑面積;用法為:tmpArea=fabs(cvContourArea(contour))。cvDrawContours():用于在圖像上繪制外部和內部輪廓,這里只需要得到病斑的外部輪廓即可;用法為:cvDrawContours(dst,contour,color,color,-1,1,8)。cvArcLength():計算輪廓線的長度;用法為:tmpLength=cvArcLength(contour)。編寫程序在VS 2010上運行,提取病斑輪廓的相關信息,結果見圖7。
幾種形狀特征參數:周長指病斑部位輪廓線上像素間距離之和。面積指計算葉片圖像病斑部位所含的像素數。形狀參數(圓形度):圓形度C用來描述病斑接近圓形的程度,計算公式為:
C=4πA/L2。
(10)
式中:圓形度C取值最大為1;病斑的外形越復雜越偏離圓形,其圓形度C的值越小。
利用輪廓的面積與周長等數據信息可以得到病斑的形狀特征值見表3。
表3 病斑形狀特征值
2.3.3 紋理特征提取 灰度共生矩陣是計算紋理特征的基礎。在計算得到共生矩陣之后,計算紋理特征量,筆者經常用反差、能量、熵、相關性等特征量來表示紋理特征。
(1)反差又稱為對比度,反映了圖像的清晰度和紋理的溝紋深淺。
(11)
(2)能量是灰度共生矩陣各元素值的平方和,反映了圖像灰度分布均勻程度和紋理粗細度。
(12)
(3)熵是圖像包含信息量的隨機性度量。熵最大,熵值越大,圖像越復雜。
(13)
(4)相關性也稱為同質性,用來度量圖像的灰度級在行或列方向上的相似程度,值越大,相關性也越大。
(14)
利用上述算式計算特征量,紋理特征提取結果見表4。
表4 紋理特征提取結果
2.4 分類器設計
功能較完善的識別系統在進行模式識別之前,需要學習[5-6]。支持向量機是一種基于統計學習理論的機器學習算法,SVM算法在解決非線性、小樣本以及高維模式識別問題中表現出很多獨特的優勢。OpenCV是一個開源的計算機視覺庫[7],在OpenCV中,SVM是作為一個類來定義接口的,本研究選用SVM分類器,分類器的構造與識別流程見圖8。
采集4種病害與健康葉片共250個樣本,構成馬鈴薯病害信息的數據文件。首先對病害信息數據進行歸一化處理。對每種病害的紅色分量均值比r、藍色分量均值比b、色調H、飽和度S、亮度V、圓形度C、離散指數P、能量、熵、反差、相關性歸一化到[0,1]后,再選擇合適的內核函數。由于徑向基核函數的計算復雜度不隨參數的改變而改變,同時在整個參數空間中Mercer條件均成立,是SVM方法中最常用的核函數,因此本研究選取徑向基核函數,其數學表達式為:
(15)
式中:ψ為輸入特征值;ψi為該特征值ψ對應的結果;σ為徑向基核函數參數,σ>0。
選擇每類20個樣本共計100個作為分類器的訓練樣本,構建分類器模型。分類識別中主要用到的程序為svmtrain和svmpredict。svmtrain的主要功能是對訓練數據集進行訓練,獲得SVM模型;svmpredict的主要功能是根據訓練獲得的模型,對數據集合進行預測。語法為:svmtrain[options]training_set_file model_file,svmpredict[options] test_file model_file output_file;其中,options表示操作參數。用建立的SVM模型再對150個樣本進行測試。
本研究采用基于VS 2010的WCF REST Service構建服務器端,提供REST風格的服務,用以提供PUT、POST、GET、DELETE 等方法的用法,請求服務器端傳遞信息或操作資源,與客戶端實現數據共享。
3.1 服務器端
在VS 2010創建新的項目,使用Online Templates中的WCF REST Service Template提供項目模板。項目中不再有SVC文件,這樣就不能每次都通過xx.svc/users/1訪問,而是通過URL Routing配置。項目通過在Global.asax中配置Routing進行URL重定向。通過ServiceRoute類進行URL重定向,配置了1個名為Service1的Resource,指定到Service1類上。默認生成的Resource:Service1代碼,是1個完整的RESTful結構,有著Get、Put、Post、Delete的完整支持。
3.2 客戶端
利用簡單、友好的人機交互界面,指引用戶挖掘出理想的決策規則,是農業智能診斷系統實現有效推廣應用的重要前提[8]。系統客戶端人機交互界面的設計充分結合了Android SDK提供的LinearLayout類、RelativeLayout類和AbsoluteLayout類各自的優勢,并采用其提供的多種更具人性化、操作簡單的Android常用和高級控件,完成系統人機交互界面的設計。本研究構建了客戶端開發環境,在Windows操作系統下,由“JDK(Java development kit)+Eclipse+Android SDK(Software development kit)+ADT(Android development tools)”構建。其中,JDK是整個Java的核心,包括Java運行環境、Java工具和Java基礎的類庫;Eclipse是作為Android應用程序開發IDE(integrated development environment)使用的;Android SDK是由Google提供的完全開放源代碼的Android專屬軟件開發工具包;ADT是支持Android工程和工具的通用插件,使得創建、運行和調試Android更加快速簡單[9-11]。
基于VS 2010搭建病害識別系統,主界面見圖9。
基于Android SDK設計的客戶端界面見圖10。
試驗中將采集到的馬鈴薯葉片圖像中的150幅選作測試樣本,其中健康葉片圖像29幅、早疫病36幅、晚疫病34幅、炭疽病25幅、灰霉病26幅,利用識別系統進行識別,其識別結果見表5。
從識別結果可以看出,對健康葉片的識別率可達100%,除了晚疫病的識別率為88%以外,其他病害識別率均可達到92%左右。
表5 病害識別結果
本研究基于機器視覺的馬鈴薯病害識別方法,以 VS 2010 為開發環境設計病害分割、局部顯示、特征提取等算法并實現各部分功能,從而得到幾種病害信息的主要特征值,生成馬鈴薯病害信息數據,訓練分類器模型,并對病害進行識別。構建識別系統,通過REST風格的Web Service與客戶端連接,客戶端基于Android SDK實現。通過測試,病害識別率總體在92%以上,基本達到了研究目的,滿足了識別要求,說明系統設計合理。這對機器視覺技術在農作物病害識別方面的應用具有積極意義。
[1]陳佳娟,趙學篤. 采用計算機視覺進行棉花蟲害程度的自動測定[J]. 農業工程學報,2001,17(2):157-160.
[2]邱道尹,張紅濤,劉新宇,等. 基于機器視覺的大田害蟲檢測系統[J]. 農業機械學報,2007,38(1):120-122.
[3]李 斌. 基于計算視覺的奶牛體型線性測量系統設計[J]. 計算機測量與控制,2012,20(12):3213-3215.
[4]胡 君,程 京,王 敏. 基于XML的REST API設計與實現[J]. 微計算機信息,2010(9):166-167.
[5]李宏東. 模式分類[M]. 北京:機械工業出版社,2003:7-13.
[6]孫即祥. 現代模式識別[M]. 長沙:國防科技大學出版社,2002:1-5.
[7]彭艷芳. 視頻運動目標檢測與跟蹤算法研究[D]. 武漢:武漢理工大學,2010.
[8]李 偉,蘆東昕,柳長安. 基于Windows Mobile的智能終端上自動化測試研究[J]. 計算機工程與設計,2006,27(21):4055-4057.
[9]大 山. Android 操作系統應用推薦[J]. 個人電腦,2011,17(3):82-91.
[10]尚明華,秦磊磊,王風云,等. 基于Android智能手機的小麥生產風險信息采集系統[J]. 農業工程學報,2011,27(5):178-182.
[11]吳亞峰,索依娜. Android核心技術與實例詳解[M]. 北京:電子工業出版社,2010:22-25.
10.15889/j.issn.1002-1302.2017.02.058
2015-11-14
內蒙古自治區高等學校科學研究項目(編號:NJZY144)。
趙建敏(1982—),男,內蒙古包頭人,碩士,講師,主要從事人機交互、模式識別的研究。E-mail:418405748@qq.com。
薛曉波,碩士研究生,主要從事機器視覺、圖像處理的研究。E-mail:418405748@qq.com。
S435.32;TP391.4
A
1002-1302(2017)02-0198-04
趙建敏,薛曉波,李 琦. 基于機器視覺的馬鈴薯病害識別系統[J]. 江蘇農業科學,2017,45(2):198-202.