APP下载

基于机器视觉的马铃薯病害识别系统

2017-03-01赵建敏薛晓波

江苏农业科学 2017年2期
关键词:服务器端病斑特征提取

赵建敏, 薛晓波, 李 琦

(内蒙古科技大学信息工程学院,内蒙古包头 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。

1 总体结构

本研究基于VS 2010搭建病害识别系统,主要功能是对病斑进行分割、特征提取,然后采用支持向量机的分类器进行识别。用WCF REST Service构建服务器端,提供REST风格的服务与客户端实现数据共享,客户端采用美国谷歌(Google)公司推出的手机开发平台Android SDK[4]等来实现。另外,增加了档案管理系统,记录马铃薯病害的档案和信息,系统结构见图2。

软件结构主要分为驱动层和应用层,软件架构见图3。

驱动层包括客户端的Android SDK、JDK、Eclipse,Mysql数据库,以及OpenCV。应用层包括基于VS 2010的病害识别各部分,构建的WCF REST Service以及病害信息管理等。

2 病害识别系统

病害识别部分是本研究的核心部分。通过设计算法程序实现病斑分割的各环节,并且搭建病害识别系统,具体过程见图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个样本进行测试。

3 服务器端与客户端

本研究采用基于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]。

4 试验结果分析

基于VS 2010搭建病害识别系统,主界面见图9。

基于Android SDK设计的客户端界面见图10。

试验中将采集到的马铃薯叶片图像中的150幅选作测试样本,其中健康叶片图像29幅、早疫病36幅、晚疫病34幅、炭疽病25幅、灰霉病26幅,利用识别系统进行识别,其识别结果见表5。

从识别结果可以看出,对健康叶片的识别率可达100%,除了晚疫病的识别率为88%以外,其他病害识别率均可达到92%左右。

表5 病害识别结果

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.

猜你喜欢

服务器端病斑特征提取
Linux环境下基于Socket的数据传输软件设计
改进自适应分水岭方法分割棉花叶部粘连病斑
一种桑轮纹病病叶发病程度的评价指数
基于Daubechies(dbN)的飞行器音频特征提取
9种药剂防治山核桃干腐病试验研究
浅析异步通信层的架构在ASP.NET 程序中的应用
Bagging RCSP脑电特征提取算法
基于Qt的安全即时通讯软件服务器端设计
基于MED和循环域解调的多故障特征提取
网页防篡改中分布式文件同步复制系统