柳文祥 常清銀
摘 要:棉花是新疆地區(qū)種植最為廣泛的經濟作物,利用MATLAB圖像識別技術將相機采集到的患病棉花葉面經過圖像灰度化、圖像增強、圖像二值化、圖像形態(tài)學處理、圖像填充、圖像分割等預處理后用函數(shù)算法對患病區(qū)域面積進行特征參數(shù)識別。經試驗,在病蟲害發(fā)生期間,用MATLAB圖像識別技術對患蚜蟲病棉花葉面檢測準確度為87.0%、枯萎?。S萎病)81.0%、棉鈴蟲80.0%,說明在實際監(jiān)測時存在誤差,但準確率均達80.0%以上,可用于預防監(jiān)測。
關鍵詞:MATLAB圖像識別;圖像處理;函數(shù);算法;特征參數(shù)
引言:棉花病蟲害種類繁多,危害各不一樣,根據(jù)發(fā)病時期大致可分為苗、蕾、花鈴三個時期。棉花病蟲害的早期識別和適時防治是棉花高產的重要環(huán)節(jié)。葉面識別技術的研究就是在機器視覺檢測技術的基礎上應用而生的,由于機器視覺系統(tǒng)可以快速獲取大量信息并自動處理,容易同設計信息以及加工控制信息集成。利用計算機圖像處理技術對農產品進行檢測已是一種主流技術,在實現(xiàn)農作物葉面疾病識別的的自動化方面,圖像識別技術有實時、無損、客觀等優(yōu)點。本文引入工程類 MATLAB軟件,編寫程序,通過其強大的圖像處理技術,利用患病棉花葉面特征參數(shù)設計的函數(shù)算法有效識別患病棉花對棉農及時防控病蟲害提供有效依據(jù)。
1.葉面圖像采集
棉花葉面圖像采集利用像素為4800萬的攝像頭拍攝得到格式為JPG圖像,采集方法簡單,沒有較高的條件限制,便于該技術大范圍推廣使用。MATLAB中提供的imread()函數(shù)用于實現(xiàn)圖像的讀取操作,可讀取JPG、TIF、GIF、HDF、XWD和 CUR等多種圖像格式,經過MATLAB圖片工具處理后形成可被函數(shù)讀取的圖片并形成形成與圖片對相應得矩陣,由此得到后期可被程序處理的相應矩陣圖片。
2.葉面圖片預處理
2.1彩色圖像灰度化處理
收集到的彩色圖象(R紅色、G綠色、B藍色),三分量色彩基色多包多,軟件處理信息量太大,為避免出現(xiàn)大量計算誤差,我們對對葉面彩圖進行灰度化處理以后只得到葉面圖片亮度信息。所謂灰度化是將原圖各像素點的三分量信息壓縮成1個字節(jié),具體采用加權平均法對三分量分配不同的權值,灰度圖像是一種特殊的三分量彩圖,其中一個像素點的變化范圍為255種?;叶然幚砗蟮幕叶葓D片在常規(guī)256級灰度圖下有256種不同灰度級顏色構成,其屬性為一個由個體值數(shù)據(jù)構成的矩陣,類型為雙精度矩陣,閾值是[0,1],類型為 unite8 類型,其閾值是[0,255],矩陣中的每個元素值均代表不同的亮度級和灰度級,當亮度值為0時表示黑色,當亮度值為1(或者 unite8 類型的255)時表示白色。計算公式為PGV=0.229×R+0.587×G+0.114×B,其中PGV為Pixel Gray Value像素灰度值縮寫,R紅色、G綠色、B藍色為三分量基色。
上述算法的部分MATLAB代碼如下:
clear all
im=imread('E:\柳文祥\蚜蟲.jpg');
figure('NumberTitle','off','name','原圖');
imshow(im);
[x,y,z]=size(im);
immax=ones(x,y);
for i=1:x
for j=1:y
immax(i,j)=max(im(i,j,:));
end
end
im(:,:,1)=immax;
im(:,:,2)=immax;
im(:,:,3)=immax;
figure('NumberTitle','off','name','最大值灰度圖像');
imshow(im);
2.2圖像增強
灰度化處理后的圖像會出現(xiàn)部分像素孤立點,相當于信號傳輸中出現(xiàn)的噪聲干擾,而圖像增強就是消除信號干擾的濾波器,圖像增強意味著有選擇性的突出了程序需要判斷的特征參量,提高了圖像對比度,抑制了圖片上存在的沒用像素點,減少后期函數(shù)算法帶來的不精確性。對比度的增加,使得所選圖片區(qū)域色差更加明顯,量的越亮,暗的越暗,其根本意義就是提取顏色分量最大值最小值,其公式為:(1)對比度 (Contrast)為: Con=∑ L-1 i=0 ∑ L-1 j=0 i-j kPij, 其中,δ (i,j) =|i-j|相鄰像素間的灰度差;Pδ? (i,j)相鄰像素間的灰度差是δ的像素分布概率。
2.3圖像二值化
二值化就是通過非零取一等不同的閥值化變換方法,使灰度圖變換成黑白二值圖像,從而將我們所需特征參量圖像從復雜目標背景圖片中提取出來。其操作過程即先由用戶指定或通過算法生成一個閥值,如果圖像中某圖像素的灰度值小于該閥值,則將該像素的灰度值設置為0或255,否則灰度值設置為255或0。假設輸入圖像為f(x,y),輸出圖像為f'(x,y)則:? ? 閥值θ即為比對臨界點,小于他就是黑。次變換函數(shù)為階躍函數(shù),只需給出閥值點θ,經過閥值處理后,圖像變成了一幅黑白二值圖。
2.4圖像形態(tài)學處理
由于噪聲干擾影響,閾值化后所的圖像邊界達不到理想中的平滑程度,利用圖像形態(tài)學處理的鄰域運算形式的特殊形式:“結構元素”(Structure Element),根據(jù)像素與二值圖像對應的關系進行邏輯運算,結果為輸出圖像相應像素。
給定二值圖像I(x,y)和作為結構元素的二值模板T(i,j),服飾與膨脹運算公式為:
腐蝕:
膨脹:
腐蝕是消除邊界點,使邊界向內部收縮。可用來消除小和無意義的物體。膨脹將物體接觸的所有背景點合并到該物體中,使邊界向外部擴張。可用來填補物體中空洞。先腐蝕后膨脹稱為開運算,確保不改變其面積情況下以此消除細小、纖細點分離平滑較大物體。先膨脹后腐蝕叫做閉運算,用來填充細小空洞、連接臨近物體平滑較大物體邊界且不改變其相應面積。連續(xù)的開運算和閉運算有效消除了圖像上的明亮細節(jié),填充了閾值化后的噪聲空洞,是后期運算效果更加理想。
軟件運行代碼如下:
se=strel('disk',1);%定義方形結構元素
imeBW=imerode(bm,se);%圖像腐蝕
figure('NumberTitle','off','name','圖像腐蝕');
imshow(imeBW);
imdBW=imdilate(imeBW,se);%圖像膨脹
figure('NumberTitle','off','name','圖像膨脹');
imshow(imdBW);
2.5圖像填充
通過局部填充得到物體與背景明顯區(qū)分開的圖像,填充邊緣輪廓達到降低噪聲的效果,采用BWfill=imfill(BW,holes)語句,使缺陷部位像素點呈白色。其算法操作分兩部:首先由左至右逐行掃描圖形,輸出像素值為0則背景不做改變繼續(xù)往后掃描直到遇到像素值為1的點為止。如果這個點的下一個點的像素值為0,表示掃描到了最左邊的輪廓點,這時設置一個標記從這個點往后所有像素值為0的點全部置1,直到再次遇到像素值為1的點為止。此過程將這兩個邊界點之間的區(qū)域填充起來,然后接著掃描后面的點,當再次遇到像素值為1的點時重復以上步驟,這樣一行行的掃描填充,整幅輪廓圖就被填充起來了。
2.6圖像分割
介于之前圖像填充的不足之處,對圖像又進行了圖像分割,只把患病葉面部分分割出來。分割前對其進行反色處理,把背景和其他莖葉部分都剔除。過程為先把莖葉部分進行標記,然后去除標簽部分,最終運用基于閾值的圖像分割方法將棉花葉面患病部分分離出來。
利用可以反映圖像內容特征的區(qū)域提取方法從顏色、紋理、形狀等方面提取圖像的基本特征。本次實驗在其上對目標圖像進行提取,只需區(qū)分不同區(qū)域性質,去掉標記的莖葉部分,只剩葉面患病區(qū)域和背景。此方法程序使用bwlabel函數(shù),用于對二維二值圖像中每個分離部分進行標注。選取的閾值為之前二值化圖像得出的閾值結果為0.37,這時將葉面患病部分標記出來,便可對選中部分進行分割。
3.實驗結果
仿真實驗在2.5GHz,RAM為8GB的計算機上進行,采用MATLAB2018a軟件編寫代碼。部分樣本圖像經處理后的病蟲害原始圖像和特征分割圖像結果如圖1所示。
4.總結
基于MATLAB軟件的圖像處理,調用函數(shù)方便,程序設計高效。首先通過圖像預處理去除無用信息,接著將Hough變換算法降維進行葉面受損區(qū)域的定位,最后搜索定位,求出受損區(qū)域坐標,根據(jù)反映圖像特征與樣本患病葉面程序對比得出棉花葉面患病名稱,用MATLAB圖像識別技術對患蚜蟲病葉面監(jiān)測準確率為87.0%、枯萎?。S萎?。?1.0%、棉鈴蟲80.0%,說明在實際監(jiān)測中存在誤差,但準確率均達80.0%以上。
參考文獻:
[1]賴特.基于模板匹配及人工神經網(wǎng)絡算法的圖像識別應用——MATLAB實現(xiàn)機動車牌號碼辨識[J].智能建筑與智慧城市,2017(11):45-48+52.
[2]朱玥凝.基于Matlab圖像識別的交通信號燈智能控制[J].信息通信,2016(11):94-95.
[3]王蔚揚,丁嘉月,汪鵬洪,盧正勇.基于MATLAB的靶紙圖像識別研究[J].計算機時代,2016(11):17-20+24.
[4]丁功瀛,徐大衛(wèi).MATLAB圖像識別技術在彩漿薄層瀝青路面油污評價中的應用[J].大連交通大學學報,2016,37(02):73-76.