劉永波,雷 波,胡 亮,唐江云,曹 艷,尹亞琳
(1四川省農業科學院農業信息與農村經濟研究所,成都 610011;2四川農業大學,成都 611130)
稻瘟病是水稻最常見的病害之一,稻瘟病可能引起水稻大幅度減產,該病在世界范圍各水稻種植區均有發生。水稻是中國第一大糧食作物,研究如何防治稻瘟病具有重要意義。稻瘟病因發病部位不同分為苗瘟、葉瘟、節瘟、穗頸瘟、谷粒瘟,其中葉瘟發病期主要呈現為葉片出現大小不同的病斑??蒲腥藛T根據稻瘟病病斑面積占葉片面積的比例將稻瘟病病害程度分為5 個等級[1]。在研究過程中由于病斑大小不一、形狀不規則,無法通過標尺或儀器精確測量病斑面積,因此稻瘟病病程分級主要依靠有經驗的研究人員目測判定。該方法主觀性強、精確度低,且嚴重依賴于科研人員的經驗水平[2],無法滿足對病斑區域的精確測量和分級判定。
目前基于機器視覺的圖形識別、圖形測量等技術在農業領域廣泛應用,為實現稻瘟病病程精確分級判定提供了新的可能。莫洪武[3]等利用計算機視覺技術有效識別出水稻空行,提高了雜交種產量和純度。鐘平川[4]等以機器視覺技術原理結合OpenCV 編程成功提取原木最大輪廓,計算出原木切面最大面積,提高原木出材率。汪成龍[5]等采用機器視覺與SVM 支持向量機算法模型成功判定馬鈴薯是否畸形。張楠等[6]基于softmax 分類器實現對水稻稻瘟病的自動識別。從上述文獻可知,利用機器視覺技術可快速、有效的實現對農作物的檢驗、測量、識別等操作。本研究設計了一套基于GrabCut、高斯濾波、OTSU二值化、顏色空間轉換、反向閾值切割等處理的水稻稻瘟病分級判定算法模型。該算法模型利用OpenCV 與python 語言實現,以反向閾值切割為核心策略分離葉片與病斑,再以循環遍歷模式統計像素點得出病斑面積占比,實現對稻瘟病的快速、精確分級。
試驗所使用的水稻稻瘟病圖片均采集自四川省成都市蒲江縣水稻基地,圖像采集設備為華為P20、小米mix2s 手機,拍攝環境為自然光照條件下的開放式大田。試驗模型需通過算法提取葉片與病斑的特征區域,因此拍攝時將完整的水稻葉片置于鏡頭中央,并引入標尺為參考系,便于驗證算法準確性。本試驗采集稻瘟病人工判定分別為1~5級的圖片共計189張。
為實現研究人員能夠在大田環境中方便快速的獲得稻瘟病分級結果,本試驗算法采用手機端APP作為圖像采集前端。系統架構由服務層、控制層、計算存儲層三部分構成。其中服務層負責將手機采集圖像數據源通過傳輸API傳入MiniServer統一傳到控制層??刂茖影篋ataSource、Workflow、Operator、Model操作4 個部分,負責后端各個功能模塊的調度。計算存儲層包含HDFS數據存儲模塊,圖像算法處理模塊,數據庫模塊,該層負責實現試驗算法,并將原始圖片和結果存儲進數據庫[7]。系統整體架構如圖1所示。
本試驗研究目標是通過機器視覺技術獲取稻瘟病圖片中病斑占葉片總面積的比例,將結果對應稻瘟病分級標準,最后獲得分級結果。首先從試驗圖片中提取感興趣的目標區域,將水稻目標葉片從背景中分離出來;然后對目標區域圖片預處理,降低目標圖片噪音干擾,將降噪后的圖片轉換為HSV 通道,對目標圖片在HSV顏色通道下的色彩分布進行分析,確定閾值范圍,最后反向閾值切割圖片獲取病斑區域計算面積占比。具體稻瘟病分級判定算法流程如圖2所示。
1.3.1 目標圖像與背景分割 常用的圖像目標區域分割方法包括顏色閾值分割、分水嶺算法、GrabCut 算法、輪廓檢測等[8]。由于水稻葉片較小,為保證采集圖像的質量需在手機微距模式下拍攝,微距模式下水稻葉片作為目標圖像會有較高的清晰度,而葉片外遠景會呈現相對模糊的狀態。因此本研究采用GrabCut算法對稻瘟病葉片進行提取,GrabCut 算法對于分離前景清晰背景模糊的圖像具有良好的效果,算法原理如圖3所示。
將圖像中的每一個像素看成圖中的1 個節點,然后在Graph 中增加2 個Node,分別為F 和B,F 代表Foreground 前景,而B 代表Background 背景,每2 個相鄰像素點用1條邊相連,每1個像素點和F點用1條邊相連,每1個像素點和B點也用1條邊相連。最后將圖像切割分成兩部分,第1 部分的像素點和F 相連為前景,第2部分的像素點和B相連為背景[9]。整幅圖像的Gibbs能量函數可以表示為公式(1)。
其中,其中U函數部分表示能量函數的區域數據項,V函數表示能量函數的光滑項(邊界項),參數α 代表分離后的前景或背景,αn=0或1(背景或前景);參數k是一個向量,k={k1,k2......kn},每個kn屬于{1,2...k}集合,對應著k個高斯分量;θ代表每個高斯分量中參數;參數z是一個向量,z={z1....zn},每個zn代表著每個像素的灰度值。圖像分割的過程就是使式(1)不斷減小的過程,當它不能再減小,即趨于某一個恒定的值時,就表示圖像分割完成。
1.3.2 圖像預處理 在高清設備采集的水稻葉片圖像上,即使健康的葉片也并非是完全光滑的綠色,葉片表面會存在一些細微的紋理,這些紋理后期會對圖像處理產生一定干擾。圖像預處理的目的在于增強我們需要的信息,排除干擾的部分。常用的圖像預處理包括高斯濾波、雙邊濾波、中值濾波等。水稻葉片邊緣一般呈自然彎曲的形態,無需保留直線邊緣,因此選擇通用性較好的5x5卷積核的高斯濾波器[10-12]。
1.3.3 病斑特征提取 普通相機或手機拍攝的圖像通常為RGB 通道,但RGB 通道并不能很好地反映出物體具體的顏色信息,相對于RGB 空間,HSV 空間能夠非常直觀的表達色彩的明暗、色調、以及飽和度,方便進行顏色區間的獲取。因此本文對稻瘟病病斑的提取方式采用HSV顏色空間下的閾值切割實現,閾值切割通常是對HSV 顏色空間下一定取值范圍內的顏色進行捕捉,但經觀察可發現稻瘟病的病斑往往不是單一的黃色。較大的病斑通常邊緣呈現黑色,病斑內部枯黃色,較小的病斑呈現淡黃色沒有黑色邊緣。若直接對黃色范圍內的顏色分割會產生較大的誤差,因此本研究提出反向閾值切割法,將葉片健康的綠色部位作為閾值搜索范圍,切割去掉病斑部分的葉片圖像標記為img_n,將完整全葉圖像標記為img_N,兩者相減所得差即為病斑部分。具體實現步驟如下:
(1)顏色空間轉換。顏色閾值切割需在HSV顏色空間下進行。通過手機拍攝的圖片通常為RGB通道,可利用OpenCV 中的cv2.cvtColor 函數實現圖像由RGB轉為HSV通道[13-15]。
(2)反向閾值切割。閾值切割需明確給定閾值范圍,定義切割范圍最小值為Lower_green,最大值為Upper_green,將閾值切割所得部分圖像生成掩模,原圖與掩模部分作圖像與運算即可獲得去除病斑部分的葉片。
(3)OTSU二值化。OTSU算法又名最大類間方差法,其原理為利用閾值將原圖像分成前景,背景2個圖像。用ω0、ω1分別表示前景點、背景點所占比例,μ0、μ1分別表示前景、背景灰度均值,則有μ值,見公式(2)。
前景與背景的方差為公式(3)。
將公式(2)帶入公式(3)則得公式(4)。
在本文中主要利用OTSU 算法將步驟(2)中切割所得圖像二值化為白色底片,因此將OTSU 算法中的閾值設定為0(即圖中所有有效像素點轉化為白色)[16-17]。
1.3.4 計算機面積比 在機器視覺技術中,若沒有參考系通常無法直接計算圖形的真實面積,但可以通過一種抽象的方式獲得圖像的面積參數,即圖像的像素點個數。經過二值化處理的圖像都呈現白色,設i為像素橫坐標、j為縱坐標,[i,j]代表某個有效像素點。利用嵌套循環遍歷每個像素點,并判斷當該像素點為白色時,則像素點個數加1。以此方法分別計算出全葉像素點面積Img_N 和去掉病斑的像素點面積Img_n,病斑面積可表示為(Img_N-Img_n),病斑占葉片的面積比result即可表示為公式(5)。
采用1.3.1 節所述的GrabCut 算法對背景實施分離。經試驗發現,由于圖像前景部分除水稻葉片外還存在其他干擾信息,直接對原圖全局GrabCut 切割的效果不理想。為提高背景分離準確度,在手機端傳入圖片時實現用戶手動框選一個矩形區域Rect(x,y,w,h)作為參考域,其中x、y為矩形起點坐標,w、h為起點相對坐標[18]。手機端操作界面如圖4所示。
兩組稻瘟病葉片經GrabCut算法分離后的效果如圖5所示。由圖5可看出,試驗過程雖然加入了少量的人機交互,整個操作過程在5 s 內可完成,但經過Rect區域約束后圖像切割較好的保留了葉片邊緣的信息。
HSV 顏色空間下H、S、V三者的取值范圍分別為H:[0,180];S:[0,255];V:[0,255]。利用1.3.3 節中提出的反向閾值切割法提取病斑,需得到HSV顏色空間下綠色的閾值范圍,在標準化HSV空間中綠色的取值范圍為H:[35,77],S:[43,255],亮度V對綠色影響較小,可適當擴大搜尋范圍[19-21]。經試驗發現,使用標準化綠色閾值范圍切割所得結果誤差較大,綠色部分獲取不夠完整,導致所得病斑面積大于實際面積。為獲得精確的閾值范圍,提高模型可靠性,筆者選擇了4組人工分級分別為1、2、3、5級的稻瘟病葉片繪制色調與飽和度關系直方圖[22],其中縱坐標H代表色調,橫坐標S代表飽和度,其結果如圖6所示。
圖6a 中1 級稻瘟病葉片病斑非常小,直方圖中色彩集中分布在H值40左右的綠色區域,未出現明顯的色彩界限。圖6d由于病程達到最高的5級,葉片表面幾乎全部被病斑覆蓋,綠色區域與病斑的黃色區域連成一片,無法分辨明顯的色彩界限,參考價值較低。觀察圖6b和圖6c可知,綠色部分集中分布在H色調值為[30,60],S飽和度為[50,200]區間,30 以上存在黑色的陰影區,到H值為20 又出現部分較為集中的色彩分布,通過查詢HSV 顏色空間分布值可知,H值20 左右為橙、黃色區域,因此可推斷該部分色彩為病斑分布區。
為驗證此推斷,試驗設定反向閾值切割的取值范圍為色調H=[30,60],飽和度S=[50,200],亮度V=[0,255],將設定好的參數模型分別測試不同的稻瘟病葉片,測試結果如圖7所示。
由圖7可知在該取值范圍內反向閾值切割法效果良好,黃色病斑、黑色病斑以及較大的病斑均成功從葉片中分離,同時可觀察到病斑分布密集時,算法對于病斑的邊緣控制與原圖存在細微的誤差。
經反向閾值切割分離病斑后,通過1.3.3節提到的二值化操作分別計算出全葉像素點面積Img_N和去掉病斑的像素點面積Img_n,再將兩者帶入公式(5)運算得到面積占比值,最后將面積占比值對應稻瘟病分級標準得出分級結果。按照稻瘟病測報調查規范GB/T 1570—1995國家標準稻瘟病葉瘟可分為5級[23-24],如表1所示,分級標準如下。

表1 稻瘟病分級標準
將試驗采集的189 張1~5 級稻瘟病圖片分別編號測試算法,所得分級結果與人工判定統計結果對比如表2所示。

表2 樣本分級測試結果
從表2算法測試結果可知稻瘟病分級為1級時,判定結果與人工判定結果一致,準確度較高。分級為2、3級的樣本中有2組分級結果與人工分級不同。4、5級的樣本中有6 組分級結果不同,將分級結果出現偏差的圖像樣本測試數據單獨列出到表3。表3數據顯示,1、2號樣本面積占比均接近5%,介于2、3級臨界值,人工判定存在一定主觀性,造成與機器算法約1%的誤差。4~8 號樣本經模型運算面積占比均超過50%,但人工判定為4 級,經筆者對比原圖發現,4~8 號樣本除病斑區域外,葉片自身主體部分呈現枯黃色,但未生長病斑,模型將該區域識別為病斑區域因此與人工分級不同,根據GB/T 1570—1995 國家標準,5 級稻瘟病呈現病斑占比大全葉枯死,因此4~8 樣本判定為5 級也符合文件標準。

表3 與人工分級結果不同的樣本
本算法對稻瘟病病斑分割效果較好,但也存在以下問題:(1)當葉片上存在其他病害和客觀因素造成葉片枯黃時,算法會將枯黃部分識別為病斑區域影響判定結果。因此,該算法目前適用范圍限定在僅發生稻瘟病單一病害的水稻上。(2)GrabCut分離目標背景時候引用了參考域,該方法有效提高了分離精確度,但降低了算法的智能化程度。
在未來的研究中,考慮在背景分離時通過算法定位到葉片區域自動生成參考域,減少人機交互,同時在算法識別時,加入病害種類識別功能,優先判斷是否為稻瘟病再計算病斑面積比,提高算法的準確性和適應性。
本研究基于計算機視覺技術提出一種在HSV 顏色空間下的閾值切割法,可有效實現水稻稻瘟病的病斑分離和病程分級判定。經試驗驗證該算法模型與專業研究人員人工判定的結果匹配度達95.77%,且不依賴專業儀器設備,用戶只需使用智能手機拍照,即可實時獲得稻瘟病精確的分級結果,提高了稻瘟病分級判定的精確性和客觀性[25]。該算法在處理因其他因素造成水稻葉片枯黃時存在一定誤差,同時智能化程度也有提升空間,這將是未來課題研究的重點。