时间:2024-05-25
范振军,李小霞*
(1.特殊环境机器人技术四川省重点实验室,四川 绵阳 621010;2.西南科技大学信息工程学院,四川 绵阳 621010)
【研究意义】在农业灾害中,农作物病虫害占据很大一部分。随着农业信息化的推进,基于计算机视觉和图像处理的识别技术在农作物病害图像识别[1-2]、农作物品质检测[3]等领域得到广泛应用。马铃薯是世界第三大粮食作物[4],然而病害是影响马铃薯产量及品质的重要因素之一。因此,如何快速准确地识别出马铃薯病害类型,以便采取相应的防治措施,对确保马铃薯的丰收具有十分重要的意义。【前人研究进展】目前,国内外众多学者运用计算机视觉和图像处理等技术,对小麦、黄瓜和玉米等多种农作物病害识别做了很多研究,提出了一些好的解决方法,为农作物病害图像智能识别和精准农业提供了科学的理论依据和技术支持。邓继忠等[5]针对小麦的3种病害识别提取了形状和纹理特征,并对最小距离法、反向传播神经网络和支持向量机(Support vector machine, SVM)3种分类器进行了对比实验,总体识别率达到82.9 %。王献锋等[6]提出了一种融合颜色、形状和纹理特征的基于统计分析系统的判别分析方法,对黄瓜的霜霉病、褐斑病和炭疽病3种叶部病害的识别率高达90 %以上,为田间开放环境下实现作物病害图像的快速自动识别提供了依据。Nunes D和Werly C等[7]基于源元数据和模式识别技术实现了番茄疾病的早期识别,识别率达到94.12 %。许良凤等[8]对玉米病害图像利用GrabCut算法获得病害区域后提取颜色和纹理特征,并构建基于SVM的多分类器线性加权融合的识别方法,对7种玉米病害的识别率达94.17 %。赵建敏等[9]利用Otsu分割算法提取病斑区域,综合颜色、纹理和形态特征,设计了基于SVM的分类器,对马铃薯4种主要病害样本并加入负样本(健康叶片)进行测试,总体识别率达到92 %。上述农作物病害识别方法都是仅针对其某一部位病害,且病害种类较少,部分方法没有分割病害区域,直接在原病害图像整体上提取特征,增加了计算量,且引入了冗余噪声,最终降低了识别率,采用GrabCut算法提取病害区域时需要人工交互,且速度慢,在1 s及以上。近年来,基于感兴趣区域(Region of interest, ROI)的目标识别或图像检索方法得到广泛应用,但有效选取图像ROI是其成功的关键。肖志涛等[10]提出通过提取角点得到凸包区域的低层次图像信息与使用超像素聚类得到显著图的中层次图像信息,并将这两个层次的信息相结合的自底向上的ROI检测方法。刘成云等[11]提出通过颜色增强技术提取自然场景下的交通标志ROI,并提取梯度直方图和多通道局部二值模式(Histogram of Oriented Gradient and Multi-radius Block Local Binary Pattern, HOG-MBLBP)特征来识别交通标志的方法。叶海建等[12]提出一种通过提取RGB颜色分量的显著图来识别黄瓜病害的方法,平均识别率达93.12 %,平均运行时间为0.6614 s。薛锋等[13]提出一种基于SURF(Speed Up Robust Features)特征贡献度矩阵的图像ROI选取方法,并用于图像检索中,效果较好。上述ROI检测方法虽效果较好,但检测方法较复杂,且时间性能欠佳。【本研究切入点】在基于视觉注意机制的ROI检测方法中,大多视觉注意点通常是局部特征点。主流的局部特征检测算法有:Lowe[14]提出的SIFT(Scale Invariant Feature Transform)、Rubee等[15]提出的ORB(Oriented FAST and Rotated BRIEF)等。SIFT具有尺度不变性、旋转不变性及光照不变性等优点,已被证明是有效的特征提取方法,但其存在计算量大的缺点,难以进行实时应用。ORB算法是一种高效的特征检测算法,具有计算速度快和稳定性好的优点。【拟解决的关键问题】为准确快速分割出马铃薯病害区域,提出了基于ORB和SIFT关键特征点的病害ROI快速检测方法;为提高病害识别的准确率,构建了融合颜色和纹理特征的基于非线性SVM的病害识别方法。其主要创新点是:在检测病害ROI时,只提取ORB特征点或者SIFT特征点而不用生成特征描述向量,加快了病害ROI检测的速度,具有时间优势;通过计算K个近邻点的均值来确定病害区域的坐标点,提高了ROI检测的精确度,有效降低了特征提取时的计算量,并大幅提高了病害识别的速度。
笔者从中国农业医院网、郑州市病虫害数据库、世纪农药网和百度百科等渠道获得自然环境下的马铃薯病害原始图像,然后通过从原始图像中截取子图像的方式,构建了马铃薯病害图像库(彩色图像,格式为JPG)。该图像库包括:叶部病害(早疫病、晚疫病、病毒病)、果实部病害(粉痂病、疮痂病、白绢病、干腐病)和茎部病害(黑胫病、环腐病、青枯病)共10类主要病害,每类病害54幅,总计540幅图片。
1.2.1 ORB算法思想 ORB算法首先利用FAST算法[16]检测角点,然后利用BRIEF算法[17]提取ORB特征描述子,即ORB算法是对这2种算法的改进,兼有良好的鲁棒性和实时性。
在图像特征点检测时,ORB算法通过使用灰度矩心的方法将FAST改进为有向的Oriented-FAST,其特征点的主方向由角点的灰度矩和灰度矩心之间的偏移量的方向确定。
图像角点邻域的灰度矩为:
(1)
其中,I(x,y)为点(x,y)处的灰度值,p和q决定了灰度矩的阶数。
灰度矩心为:
(2)
于是,可构造角点中心O到矩心C的向量OC,则该FAST角点邻域的主方向为:
θ=atan2(m01,m10)
(3)
描述特征点时,ORB算法把所提取角点的主方向应用于BRIEF,将其改进为旋转不变的Rotated-BRIEF,更多描述参考文献[15,17]。本文重点研究基于ORB特征点的病害ROI检测,关于SIFT算法的详细描述参考文献[14]。
1.2.2 基于关键特征点的病害ROI快速检测方法 ORB算法是一种高效的局部特征点检测算法,具有稳定性和实时性,而SIFT算法实时性较差。通过实验分析发现,ORB特征点较SIFT特征点的分布更为集中(图1)。
当ORB特征点数目比SIFT特征点数目较少时,其ROI选取效果较差,图2给出了晚疫病在该情况下的ROI选取效果对比图。
为避免上述情况对病害区域ROI选取精度的影响,本文提出融合ORB和SIFT特征点的病害图像ROI检测方法,主要思想为:以ORB特征点为主、SIFT特征点为辅的原则,首先提取病害图像的ORB特征点,根据特征点数目与给定阈值比较的结果决定是否提取SIFT特征点;然后对所提取特征点按水平和垂直方向进行排序,通过计算K个近邻点的均值确定病害区域的坐标,从而得到病害图像ROI(图3)。
图1 早疫病特征点分布对比图Fig.1 Early blight characteristic points distribution comparison image
图2 晚疫病害图像ROI对比图Fig.2 Late blight disease image ROI comparison image
(1)提取ORB特征点。从马铃薯病害图像库输入病害图像,生成金字塔影像并提取ORB特征点。考虑到基于FAST算法提取的特征点不具有尺度不变性,参考文献[18]所述,以比例因子为1.2对病害图像降采样,生成8层金字塔影像,在金字塔影像上提取特征点,使算法具备尺度不变性。
(2)计算病害区域坐标点。①初始化。假设提取的病害图像特征点的数目为S,保存特征点坐标值的矩阵记为FK,大小为S×2,初值为零,即:
(4)
②保存特征点坐标值。当SORB≥T时(T为是否提取SIFT特征点而设定的阈值),经实验分析,本文中取阈值T=20。将步骤1中提取的ORB特征点的坐标值存入矩阵FK中,此时FK变为:
(5)
否则,提取病害图像的SIFT特征点,并存入矩阵FK中,则FK变为:
(6)
式(5)中,m为ORB特征点的数目,式(6)中,n为SIFT特征点的数目,其中,xi、yi分别表示特征点在垂直方向和水平方向的坐标值。③计算病害区域的坐标值。抽取矩阵FK′中的xi值和yi值,分别组成向量X=[x1,x2,…,xm]和Y=[y1,y2,…,ym];对向量X和Y进行升序排列,得到有序向量X′=[x1′,x2′,…,xm′]和Y′=[y1′,y2′,…,ym′];从排序后的向量X′和Y′中分别选择前k个值和后k个值作为候选坐标值(k为近邻点的数目),同时存入向量KPx=[x1′,…,xk′,xm-k+1′,…,xm′]和KPy=[y1′,…,yk′,ym-k+1′,…,ym′];假设病害区域左上角与右下角的绝对坐标分别为O1(x00,y00)和O2(x11,y11),其值按公式(7)计算:
图3 病害ROI检测方法流程Fig.3 The disease image of ROI detection method
(7)
公式(7)的含义为:当局部特征点的数目小于给定阈值t时,选择k=1并分别以xi和yi的最小值与最大值作为病害区域的坐标点;否则,选择k>1个近邻点并计算其均值作为病害区域的坐标点。其中,t为选择k=1或k=torb/k=tsift而设定的阈值。经实验分析,本文中取torb=400,korb=3;tsift=100,ksift=10。
(3)提取病害图像ROI。根据步骤2计算得到的病害区域的绝对坐标点O1和O2,可得病害图像ROI的相对坐标点为O1′(x00,y00)和O2′(x11-x00,y11-y00),即可根据O1′和O2′坐标点确定的矩形框区域作为病害图像的ROI。
为了直观显示该算法的效果,图4(a)~(f)给出了使用上述算法提取的病害图像ROI,其中,红色矩形区域为基于ORB特征点提取的ROI,蓝色矩形区域为基于SIFT特征点提取的ROI,图片中左上角数字表示所提特征点的数目。
1.3.1 颜色特征提取 马铃薯病害区域包含着丰富的颜色信息,其颜色特征能很好的反映病害特性,是区分各种马铃薯病害图像的重要特征之一。RGB颜色空间并不符合人们对颜色相似性的主观判断,而HSV颜色空间不但最接近于人眼的视觉系统,而且具有降低颜色特征维数却不丢失颜色信息的优点。此外,为了消除马铃薯病害图像在自然光照下的亮度影响,也需要将RGB颜色空间转化为HSV颜色空间,其转换关系见参考文献[19]。
图4 马铃薯病害图像ROIFig.4 The disease image ROI extracted by this method
本文基于HSV颜色空间,利用颜色直方图法描述马铃薯病害图像ROI中颜色的全局分布,该方法具有旋转不变性。
(1)颜色空间转换:将ROI的RGB图像转化到HSV颜色空间。
(2)颜色量化:对HSV图像分别按H、S、V3个通道划分成若干个颜色区间,本文中将H分成30级,S、V分别分成10级,共50个区间。
(3)计算小区间直方图:
(8)
式(8)中,ni为第i个小区间内的像素数量,N分别为H、S、V各分量图像的像素数。
(4)生成HSV直方图特征向量:先将步骤(3)中的小区间直方图归一化,再把3个颜色通道的直方图合并成大小为1×50的一维特征行向量C。
1.3.2 纹理特征提取 基于统一模式的局部二值模式(Uniform Pattern Local binary pattern, UPLBP)[20]是一种原理简单、计算高效的非参数局部纹理特征描述子,在图像分析和模式识别等领域得到广泛的应用[21]。因其具有旋转不变性和灰度不变性等显著的优点,LBP方法尤其适合描述病害图像的局部纹理特征。
本文采用基于UPLBP算子的纹理特征直方图法来描述马铃薯病害图像的局部纹理特征。
(1)预处理:先将ROI转换为灰度图像,然后对灰度图像进行中值滤波,再进行直方图均衡化操作,增强图像对比度。
(2)计算LBP特征:先采用原始LBP算子,在3×3窗口邻域内,计算原始LBP值;然后采用UPLBP算子(取R=3,P=8)进行等价LBP编码,共有59种模式类[20],由此可得到ROI的纹理特征图。
(3)计算ROI纹理特征图的直方图:①将UPLBP特征图按8×8的方式分成64个子块;②计算每个子块区域的直方图;③将②中计算的子块区域直方图按分块的空间顺序依次排列成一行,形成UPLBP直方图特征行向量T。
从图5可以看出,UPLBP特征图像整体偏暗。其主要原因是使用UPLBP算子描述纹理特征时,将59个模式类的256个LBP值中的非等价模式类编码为零,等价模式编码为1~58的灰度值,故UPLBP特征图像相比原始LBP特征图像偏暗。
图5 干腐病纹理特征Fig.5 Texture feature of dry rot
考虑到本文研究对象(马铃薯病害图像)样本集比较少,共有10种类别,且样本类别与特征存在非线性情况,是一个典型的小样本多分类的非线性问题。而支持向量机分类算法是一种基于统计理论和最小结构化风险的机器学习算法,对小样本的分类识别任务效果良好,且能解决非线性映射的分类问题。
采用不同的核函数(如多项式核函数、径向基核函数和Sigmoid等)可以得到不同的非线性支持向量机。由于径向基核函数(radia basic function, RBF)的计算复杂度不随参数的变化而变化,且能够将非线性样本映射到高维空间,故本文使用以RBF为核的SVM,其数学表达式为:
(9)
其中,x为输入特征值,x′为该特征值x对应的预测结果,σ>0为RBF对应的核参数。
根据上述病害图像ROI检测及其病害特征提取方法,分别提取训练集中马铃薯叶部、果实和茎部病害图像ROI的HSV颜色直方图特征与UPLBP纹理直方图特征并融合成特征向量,组成病害图像特征库,训练得到非线性SVM分类器。对测试集病害图像,使用相同方式获得病害图像ROI的特征向量,然后利用训练好的SVM分类器进行病害识别(图6)。
图6 马铃薯病害图像识别流程Fig.6 Flow of image recognition of potato disease
为验证本文算法的性能,对马铃薯病害图像库中每类病害图像按1∶1比例随机选取300幅图片作为训练集样本,对剩余的240幅图片组成测试集样本。实验时,将原始输入病害图像尺寸统一调整为150×150,并使用3×3窗口进行中值滤波,以便较好地保留病害图像的纹理和边缘细节信息,然后按上文所述方法得到病害ROI,最后融合颜色和纹理特征作为病害识别阶段的输入向量。
(1)不同训练参数实验。由于SVM对训练参数比较敏感,尤其是惩罚因子C和高斯核参数σ2,C的大小决定了分类超平面向离群点位置偏移的程度,σ2反映了特征数据波动的大小。当C取较大的值时,可能会导致过拟合。通过反复实验,确定SVM病害识别模型最终的参数为:以RBF为核函数,惩罚因子C=100,高斯核=0.09,迭代次数为1000。
从表1看出,在训练样本比较少的情况下,基于SVM识别方法的病害识别准确率都比较高。从实际训练效果看,径向基核函数识别性能最好且比较稳定;从识别运行时间上看,各类核函数的SVM的识别速度相差不大。所以,基于径向基核函数的SVM适合用于本文对10类马铃薯病害识别的情形。
表1 不同核函数的识别结果
表2 马铃薯病害识别结果
表3 各阶段平均运行时间
(2)马铃薯病害识别实验。从表2可以看出:本文方法在自建的马铃薯病害图像库上各类病害的平均识别准确率达到95.83 %。其中有少许病害被误识别,可能原因有:①存在病害区域ROI选取不完全的现象,使得病害图像ROI丢失部分特征信息,降低了识别准确率;②部分病害区域ROI的颜色比较相近或纹理差异不大,使得特征直方图相似度比较高,导致识别错误;③训练样本量较少或不具有代表性,SVM分类模型的训练参数没有达到最优,影响了识别准确率。从总体上看,病害识别准确率最低在91.67 %以上,最高达100 %;平均运行时间为0.083 s。
(3)时间性能测试实验。根据表1中的训练参数,按本文算法对540幅病害图像进行实验,其各阶段运行时间的统计结果如表3所示。
从表3看出,使用本文方法提取病害区域ROI时,速度非常快,平均时间为13 ms,占算法总运行时间的15.66 %;特征提取时间稍长,SVM识别时间仅为3 ms。
结果表明,以ORB特征点为主,SIFT特征点为辅的提取局部特征点的方式,充分利用了ORB算法的快速性和稳定性的优势,以及SIFT特征点尺度不变性的优点,保证了对病害图像感兴趣区域提取的速度和精确性。
如今,马铃薯已成为世界第三大粮食作物[4],然而病害仍然是影响马铃薯产量及品质的重要因素之一,每年都会造成巨大的经济损失。随着信息化技术的快速发展,使用计算机视觉、模式识别和图像处理等技术实现对马铃薯病害的智能诊断可大幅度提高其产量,减少经济损失。
其他学者[5-7]针对小麦、黄瓜、玉米等作物的自动病害识别进行了研究,文献[9]基于区域分割和SVM的方法对马铃薯4种病害的识别进行了研究,为本文研究提供了参考。通常作物的病害位置不固定,病害程度也不一致,造成的危害程度自然不一样。本文通过对马铃薯叶部、果实和茎部3个部位共10种主要病害图像进行研究,发现病害区域的准确提取能进一步提高病害的识别准确率[12]。实验研究中对比了多种病害区域提取方法,采用基于局部关键特征点的方法可有效确定病害区域且速度很快。文中采用了ORB特征点与SIFT特征点相结合的思路来提取病害区域,主要考虑了这两种特征点检测方法对在自然环境下获得的具有复杂背景的病害图像具有较好的鲁棒性。文中所提到的十类马铃薯病害识别属于多分类的问题,而SVM算法可以有效解决多分类、高维非线性问题。经过实验对比研究,找到了适合本文问题的SVM模型的参数,获得了较高的识别准确率,可满足工程应用。
总体上看,本文方法对病害图像ROI检测的精度和速度都达到预期要求,且病害识别准确率高、速度快、鲁棒性好。在实际应用研究中,自然环境下的作物病害图像很容易受到光照、遮挡、倾斜、背景噪声等因素的影响,深入研究上述复杂场景下的作物病害识别是下一步研究的重点。
本文针对马铃薯叶部、果实和茎部三个部位共10种主要病害的识别问题,提出了一种基于ROI快速检测与融合特征的病害识别方法。在本文实验条件下,通过仿真实验,得到如下结论。
(1)基于ORB和SIFT局部特征点的病害图像ROI快速检测方法原理简单,易实现,每幅病害图像ROI平均检测时间为13 ms;
(2)本文方法能准确识别马铃薯不同部位的10种主要病害,其平均识别准确率达95.83 %,平均运行时间为0.083 s。
在小样本情况下,本文方法的病害识别准确率高,速度满足工程上的实时性要求,且对马铃薯病害识别的种类数增加到10类,为其它农作物的病害识别研究提供了参考价值。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!