病虫害识别基于matlab GUI SVM病虫害识别系统含Matlab源码 2429期

Posted 海神之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了病虫害识别基于matlab GUI SVM病虫害识别系统含Matlab源码 2429期相关的知识,希望对你有一定的参考价值。

⛄一、基于机器视觉的农作物病害识别技术

1 叶片图像采集
进行农作物病害自动检测与识别首先要对病害叶片的图像进行采集。自动识别的前提是获得数字图像, 数字图像质量的好坏决定着之后叶片病害的识别特征能否较容易地被取得, 以及提取的特征是否有效。图像质量是由图像采集装置和图像获取方法直接决定的。所以, 在进行叶片图像采集时要考虑各方面因素, 包括人为因素与外界环境因素等。

赖军臣[3]认为目前依靠植保人员定期下田并依靠肉眼识别玉米叶片病害的方法满足不了现代农业发展的需要, 提出构建玉米病害诊断专家系统。河北农业大学的刘丽娟等[4]以水稻纹枯病为例, 采用相机拍摄的方式获得320×240的水稻叶片彩色图像。宁夏大学的刘立波等[5]设计了一个内部装有6根荧光灯管的封闭采集箱, 箱体顶部留有拍摄孔用于叶片图像拍摄, 通过USB接口将数码相机与计算机相连, 通过鼠标控制数码相机进行拍照。郑姣等[6]设计了基于android手机的水稻病害识别系统来改善目前水稻病害检测与识别中依赖相机与计算机进行图像采集与处理而导致缺乏便携性与实时性的问题。方案通过将叶片夹在盖有黑色棉布的方木板 (15cm×8cm) 上并设置相机参数来进行拍摄。该方法需考虑环境因素, 且操作较繁琐。

采用机器视觉技术可以通过机器精测代替人眼粗测, 使农作物病害检测标准化。目前, 大部分研究者采用手机或数码相机对病害叶片进行图像采集, 该方法优点为便携性好, 可以实时拍摄。然而, 受外界环境影响较大, 光照、降雨等都将对获取图像的质量造成影响。不仅如此, 农作物叶片的正反面都存在病斑, 利用相机拍摄的方式只能获取单面叶片的图像, 无法准确得到病斑的全部信息。同样, 叶面卷曲对病斑造成的遮挡也会影响病斑信息的获取。也有的研究者尝试制作相关装置进行图像采集[7], 但存在较多缺陷, 如便携性差, 功能单一, 缺乏人机友好的界面等。有国外研究者使用扫描仪对叶片图像进行采集。该方法可以避免外界环境的干扰, 能够准确得到叶片完整的图像, 但是扫描速度较慢, 且只能扫描得到叶片的单面图像, 效率较低。当前的生产实践中, 还没有专门的装置用于农作物病害叶片图像的采集。开发农作物病害自动检测装置, 需要将植保专业知识与植保人员实际田间工作情况相结合, 服务于基层植保人员和种田大户, 使操作简单有效。在农作物病害叶片图像采集的研究中, 要综合各种因素, 做好从实验室环境向大田环境的转移。

2 叶片病斑分割
图像处理是把图像分割成各具特性的区域并从中提取出研究感兴趣的目标的技术和过程。在对图像的研究与应用中, 为了识别与分析研究目标, 需要将目标区域与整体图像进行分离。图像分割的效果直接影响最终图像分析与处理的结果。因此, 开发适合农作物叶片病斑的图像分割方法对农作物病害自动检测与识别的准确性与效率起着至关重要的作用。

目前的研究中主要有以下四类图像分割方法[8,9,10,11,12]。

(1) 基于像素分类的分割
该方法通过在特征空间中定义了一个将像素映射到不同类别的场合的函数来进行图像的分割。因为函数具有隶属关系, 所以分割后的图像由一组特定的像素点组成。

(2) 基于边缘检测的分割
该种分割方法是基于检测图像灰度级或者结构具有突变的地方来进行分割的, 图像不同区域间像素灰度是不连续的, 灰度不连续处是一个区域的终结, 也是另一个区域的开始。

(3) 基于区域的分割
区域分割的算法是直接在图像空间域中划分满足同质性的区域, 用来提取部分特征相近或一致的像素点组成的区域。该方法是像素分类及边缘检测分割方法的组合。其主要的两类方法为区域生长与区域分裂合并。

(4) 多尺度分割
在信息分析的角度下, 一幅完整图像可由不同的区域来描述, 包含了图像的类别分量和图像的位置分量。多尺度分割就是根据图像所有尺度下的信息, 来平衡类别信息与位置信息之间的矛盾, 从而达到内存不确定性的最小化。

陈伟[13]提出了一种在复杂背景下对健康黄瓜彩色图像叶片的分割算法。对采集得到的原始图像进行抖动处理, 中值滤波后进行各向异性扩散, 最后进行分水岭分割得到所需的目标区域。其算法适用于嵌入式平台, 具有占用内存少的特点, 算法的快速性为其主要优点。湖南农业大学的童钊[14]利用基于水稻叶片卷曲度的计算机视觉测量方法来进行水稻单叶片面积的测量。使用B通道灰度化、中值滤波对图像进行平滑处理, 并使用OTSU分割法进行水稻原始图像的分割。何建斌等[15]采用K-均值聚类和数学形态学相结合的方法对小麦彩色图像进行分割, 取得了比采用灰度图像阈值法分割更好的效果。西北农林科技大学的田杰等[16]以提升高斯混合模型对小麦病叶的分割精度为目的, 研究了一种基于PCA和高斯混合模型的分割方法。该方法速度快, 比K-means等传统分割方法的精度提高许多。Kamal M等[17]讨论了不同的红树林环境设置、卫星图像的空间分辨率和光谱植被指数 (SVI) 以及LAI估计映射方法的影响, 研究了应用于WV-2图像估计的多分辨率分割尺度参数的作用。

常用的颜色空间模式有RGB模式、HIS模式、HSV模式和Lab模式等。HSV模型相比于HIS模型更加接近人类对颜色的感知, 适用于消除数字色彩与传统颜料色彩之间的沟通障碍[18,19]。安徽农业大学的刘连忠等[20]通过遍历小麦图像img的所有像素, 比较其R、G、B分量值大小来进行病斑分割。华南农业大学的吴露露等[21]采用HIS模型的H分量提取叶片正常部位信息、Canny算法对2R-G色差分量图斑进行边缘检测和形态学运算等方法来提取稻瘟病的病斑。实验结果显示该方法的正确率可达90.26%。刁广强[22]根据水稻的几种常见病害, 稻瘟病、纹枯病、白叶枯病的颜色特征和其常规的形态特征对水稻病斑的图像进行分割。利用了RGB颜色空间与HIS颜色空间的原理, 分割后基本保留了病害为害区域, 但总体偏小。

农作物叶片病斑的图像分割技术是农作物病害自动检测与识别研究中的重点、难点, 也可以说是瓶颈。目前, 许多研究中使用的图像分割算法不尽相同, 提出了数以千计的分割算法。虽然在部分农作物病害的病斑图像分割的研究中已经出现了一些成熟的分割算法, 但尚无通用分割理论, 同样也不存在判断分割是否成功的固定标准, 存在着算法可扩展性差的问题。在众多的图像分割方法中, 如果只考虑速度, 基于阈值的分割算法是最快的, 但不能直接在RGB空间或灰度图上进行, 这样的分割结果会造成分割精度不高的现象。分割时, 需要将RGB空间变换到其他色彩空间。很多文献都是将获取的图像从RGB空间转化到HSV空间进行分割, 从而较好的取得全部的病斑特性。

我国地域辽阔, 各地区农业生产条件与生态环境差异较大, 农作物病害具有复杂多变性。大部分研究使用的图像分割算法仍停留在学术研究和实验室阶段, 没有在专门的应用系统中使用和推广。农作物叶片病斑的图像分割技术需面对从实验室环境转移到大田环境, 单一背景转移到复杂背景的挑战, 需要研究出准确度高、速度快、可靠性强的图像分割算法。

3 叶片病害特征提取
原始图像在经过图像预处理后可进行图像分割, 得到分割的图像后, 还要对物体的属性进行描述, 以便计算机能够对分割的图像进行理解进而加以判别和分类。农作物叶片病害特征的选择和提取的基本任务是提取病害信息, 目的是找出最有效的鉴别特征。特征提取是农作物叶片病害自动检测与识别中的关键步骤, 不管是害虫还是病斑, 都有其独特的特征可用于与其他虫类和健康叶片进行区分。通过特征向量来进行后续病害分类器的设计。

张芳[23]分别通过提取病斑的边界、利用彩色空间模型、采用灰度共生矩阵得到了病斑的形状、颜色、纹理特征参数。对于农作物叶片病斑来说, 其形状特征、纹理特征和颜色特征是最具代表性的识别特征[24]。其中, 几何特征是叶片的本质特征, 具有平移、旋转和缩放无变化的特点。弗里曼链码法[25]、傅里叶描述子、细胞神经网络提取叶脉等方法均可用来提取叶片的形状特征;纹理是物体表面的固有特征之一, 纹理特征可表明叶片表面颜色的规律性分布与变化。分形维数、小波变换、局域二值模式等方法常用于叶片纹理特征的提取;颜色是图像显著的底层特征, RGB (三原色光模式) , HSV (基于色相、饱和度和明度的色彩属性模式) 等都为常用的颜色模型。北京林业大学的张宁在基于图像分析的植物叶片识别算法研究[26]中详细讨论了上述几种不同的叶片特征的提取方法。Pydipati等[27]使用基于HIS的颜色共生矩阵获取病斑的纹理特征, 使用Canny边缘检测算子提取病斑轮廓, 实现了柑桔病害的识别。安徽农业大学的袁加红等[28]建立了基于RGB颜色空间的水稻秧苗表面颜色模型, 通过颜色特征对秧苗图像进行处理。研究发现, 水稻秧苗的绿色分量比例最大, 蓝色分量比列最低。毋媛媛等[29]提出了RGB和HIS颜色空间的转换公式, 提取了14个小麦叶部病害的颜色特征。西北农林科技大学的王美丽等[30]以小麦白粉病和锈病为研究对象, 将图像由RGB彩色空间转换到HSV颜色空间, 提取相关的颜色特征。并提取周长、面积、矩形度、似圆度、偏心率作为形状特征。夏永泉等[31]通过计算能量、对比度、熵、相关性这四个参量在0°、45°、90°、135°, 四个方向上的值, 将各参量的均值和方差作为纹理特征参数。张飞云[32]首先利用多重分形分析从二值化分割的小麦叶部病害图像中提取了病害的形状特征参数, 再分别利用提升小波变换和脉冲耦合神经网络从彩色分割的图像中提取了颜色、纹理特征参数, 最终组成得到小麦病害的多特征参数。然而, 在病害有效特征的优选技术的研究方面, 因为不同植物的不同病害在颜色、纹理、形状等方面的病症表现各不一样, 单独使用植物病害的颜色、纹理、形状等特征参数不能较好描述植物病害的特征, 这将影响植物病害的准确识别。扬州大学的刘涛等[33]采用了更加先进可靠的方法, 在水稻叶部病害检测与识别的流程中首先通过最直接的颜色特征来识别病害。若颜色特征无法识别, 再通过形态特征进行识别, 最终由叶片的纹理和病健交界特征来进行识别。其中, 病健交界特征是基于病斑内部、边缘以及外围色差来对相似病斑进行区分的一种叶片的特征。实验数据显示, 该方法可以准确快速地对水稻叶部病害进行识别, 降低了漏报、错报率, 对提高病害识别精度起到了重要的作用。

农作物叶片病斑具有对环境变化不敏感的相对特征值较少的特点。不同环境下适用的颜色、纹理和形状特征存在着差异, 同一种病害在不同发病时期的特征也不完全相同。部分研究者采用了将多种特征组合在一起的方法, 进行了从单一特征识别到多特征识别的尝试, 并取得了不错的效果。发病初期是农作物病害发病的关键时间段, 目前的植保工作中存在发病初期对农作物病害种类难以准确诊断的问题。在发病初期精确检测与识别病害的种类能够有效提高预防病害的能力, 减少经济损失。在进行农作物病害特征提取时要综合考虑多种因素, 从应用的角度将技术进行优化, 实现对农作物病害类型的及时检测, 符合生产的需要。

1.4 病害类型识别
模式识别的主要任务是通过分类器利用提取的特征数据来完成的。分类器的设计决定了模式识别系统性能的好坏。常用的分类器有支持向量机分类器、人工神经网络分类器、贝叶斯分类器和基于模糊理论的分类器等[34,35,36]。其中, 支持向量机分类器是目前机器视觉技术在农作物病害自动检测与识别中的研究热点之一。支持向量机 (Support Vector Machine, 简称SVM) 是Corinna Cortes和Vapnik等于1995年首先提出的一种能够用于分类的有监督的机器学习方法。因为SVM基于统计学习理论中的结构风险最小化原理, 能够在有限样本中寻求模型复杂性与学习能力之间的最佳折衷, 具有较强的泛化能力, 在解决小样本、高维数、非线性模式识别问题时具有较大的优势。

因为受季节和病害发生情况的影响, 田间直接获取的农作物病害图像的样本数量相对较少。袁媛等[37]采用Lib-SVM对提取的水稻纹枯病的特征数据进行分类训练与测试, 分类方法采用C-SVC, 核函数选用径向基函数, 取得了较好的效果。赵开才等[38]利用多分类支持向量机对急性型、慢性型及白点型三种类型的水稻稻瘟病进行识别。研究中, 选择了病斑面积、周长、个数以及面积个数比作为区分三种稻瘟病的形状特征参数。并选取了区分效果较好的HSI空间中的H分量、I分量的均值, NTSC空间中Y分量均值以及YCb Cr空间中的Cr分量方差作为识别三种稻瘟病的颜色特征参数。最终, 采用SMO算法对构造的三个二分类SVM模型进行训练, 选择径向基函数作为核函数并通过网格搜索法确定其参数C、δ。仿真结果表明, 平均正确识别率达到93.3% (最佳模型参数:C=1, δ=50) 。中国农业大学的李冠林等[39]根据优选的26个小麦条锈病和叶锈病的特征参数, 利用以径向基函数作为核函数的支持向量机对病害图像进行识别, 识别率达96.67%。而黑龙江八一农垦大学的杨昕薇等[40]使用工业摄像头拍摄的水稻叶片图像作为研究样本来训练贝叶斯分类器, 进行对水稻稻瘟病、纹枯病、白叶枯病的识别。研究中, 选用了形态、颜色、纹理特征并使用逐步判别分析法剔除了纹理特征中冗余的参数, 保留饱和度与色度纹理参数。研究显示, 因水稻稻瘟病和纹枯病的病害在形态和颜色上相似, 所以通过形态、颜色特征不能准确识别。而纹理特征识别效果较好, 准确率达到96.7%。水稻白叶枯病的病斑细长、面积大且颜色明显, 因此, 三种特征下均有良好的识别准确率。Rong Zhou等[41]将SVM应用于甜菜叶斑病的检测。Pujari等[42]利用支持向量机和人工神经网络对植物病害进行检测、量化和识别。管泽鑫[43]通过比较贝叶斯、神经网络、支持向量机分类器对6种水稻病害的4个不同特征参数进行识别分类的效果, 结合结果的准确性并综合考虑各方面因素, 最终选定支持向量机分类器对水稻病害进行识别。西北农林科技大学的胡秋霞[44]也采用了支持向量机对植物叶部病害进行识别, 通过遗传算法自动获取了SVM的参数, 为SVM模型中参数难以确定的问题提供了一种解决途径。东北林业大学的谢永华[45]分别选用了BP神经网络和支持向量机分类器进行分类识别。在支持向量机分类器中, Tamura纹理与多分辨率分形维的识别准确率均高于BP神经网络分类器。

早期的植物叶部病害识别系统中使用的是传统的模式识别方法, 多为线性分类器, 对噪声敏感且不能保证准确找出合适的拟合分界线。目前, 大多数植物叶部病害识别系统中使用的模式识别方法为支持向量机。支持向量机是一种处理两类分类问题的方法, 需要提取的特征数量大, 存在处理多类识别问题精度不高, 对噪声较为敏感的缺点。应用中可以采用将多类分类问题转化为多次二类分类问题的方法来提高病害分类的准确度, 通过多个二类分类器, 每次准确分类一种病害, 直到所有病害都通过。基于神经网络的分类方法和支持向量机相比, 神经网络算法的设置更多的依赖设计者的经验, 容易出现过学习导致的过拟合现象, 使分类精度下降。

⛄二、部分源代码

function varargout = GUI(varargin)
% GUI MATLAB code for GUI.fig
% GUI, by itself, creates a new GUI or raises the existing
% singleton*.
%
% H = GUI returns the handle to a new GUI or the handle to
% the existing singleton*.
%
% GUI(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in GUI.M with the given input arguments.
%
% GUI(‘Property’,‘Value’,…) creates a new GUI or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before GUI_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to GUI_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help GUI

% Last Modified by GUIDE v2.5 27-Feb-2023 21:27:01

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @GUI_OpeningFcn, …
‘gui_OutputFcn’, @GUI_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin1)
gui_State.gui_Callback = str2func(varargin1);
end

if nargout
[varargout1:nargout] = gui_mainfcn(gui_State, varargin:);
else
gui_mainfcn(gui_State, varargin:);
end
% End initialization code - DO NOT EDIT

% — Executes just before GUI is made visible.
function GUI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to GUI (see VARARGIN)

% Choose default command line output for GUI
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes GUI wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% — Outputs from this function are returned to the command line.
function varargout = GUI_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout1 = handles.output;

% — Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
button=questdlg(‘确定退出系统吗?’,‘确认’,‘No’); %当按回车键时,返回default值default 必须是yes,no或cancel 之一。
if strcmp(button,‘Yes’)
close all;
end

% — Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global A
[filename,pathname] = uigetfile(‘*.jpg’,‘选择图片’);
path=[pathname filename];
A = imread(path); % 读入叶子图像
axes(handles.axes1); %显示原图
imshow(A);title(‘原图’)

⛄三、运行结果




⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]袁小昊,郭志波.机器视觉在农作物病害自动检测中的应用研究[J].淮阴工学院学报. 2017,26(03)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于病虫害识别基于matlab GUI SVM病虫害识别系统含Matlab源码 2429期的主要内容,如果未能解决你的问题,请参考以下文章

毕设题目:Matlab疾病识别与分类

疾病分类基于matlab农作物叶子虫害识别与分类含Matlab源码 624期

本草视界图像识别病虫害1.0版内部公测

Coding-Party 基于飞桨的农作物智能识别系统病虫害识别

Coding-Party 基于飞桨的农作物智能识别系统病虫害识别

手势识别基于matlab GUI SIFT+SVM算法手势识别含Matlab源码 1789期