基于特征点匹配的蚜虫病害图像分割与识别方法
2021-01-18苗晟董建娥钟丽辉谢裕睿
苗晟,董建娥,钟丽辉,谢裕睿
(西南林业大学大数据与智能工程学院,昆明 650224)
0 引言
传统的植物病害诊断受限于个人经验和主观意识,实时性差,效率低且容易误判。随着精准农业需求的增长和计算机视觉技术的发展,许多研究者采用图像处理技术对植物病害图像进行识别分类,取得了不错的效果[1]。对植物病害图像处理的文献较多,但是近年来针对虫害的识别文献相对较少,主要体现在:首先是病虫体型较小且形态不一,昼伏夜出,隐蔽性极强,导致单一算法识别效果不佳;其次是复杂环境下是否能够准确地分割病虫害区域是后续识别的关键因素,这也是行业内公认的难点[2]。
针对虫害复杂区域分割和定位的困难,本文研究在传统分水岭和K-means聚类分割基础上增加虫害色彩先验信息[3],在LAB空间中对细小虫害区域分割,再通过SIFT特征点匹配对蚜虫病害图像进行检测。
1 LAB特征空间的病斑分割
1.1 蚜虫病害特点
蚜虫(俗称腻虫)是全世界农林业中最具破坏性的害虫之一,其特点是繁殖快、传播广,对植物的危害主要是吸食植物叶汁、传播病毒,造成花、叶、芽的畸形。蚜虫病害的图像识别难点在于蚜虫体型较小,其虫卵只有1至10毫米,且种类较多,目前已知的蚜虫种类有十个大类,多达4700种[4]。
常见的不同植物上的蚜虫病害如图1所示,病虫斑区域可能是相互不连通的独立区域,不同蚜虫种类有其相对独特的色彩,和叶面背景形成一个对比。以不同蚜虫的色彩信息作为先验信息,设置适当阈值分离病斑和叶面背景,通常首先采用分水岭算法分割病斑,再采用K-means算法进一步聚类。
1.2 基于分水岭和K-means 算法的图像分割
在分水岭算法中,首先将图片转换为灰度图,在高度为h的一个极小区M(minimum)中,将二维灰度图像定义为一连通区域,由高度值为h的点构成,从该区域任一点出发到达某一像素点(高度低于h),其路径中至少存在一点高度大于h。
图1 常见的蚜虫虫卵和幼虫病害图片
集水盆地C(M)与极小区M相关联,其特点为:假设一滴水落到某点P上,由于重力作用,该水滴将沿一条最快下降路径下滑并最终到达极小区M。通过对M的分割,达到整副图像的分割[5]。
K-means聚类算法是最常见的无监督学习算法,在一组数据集中随机选取k个点作为质心,将其余的点归为离其最近的质心一簇。分别计算被划分的k个簇的质心(均值),以新的质心为依据,重新聚类并再次计算各簇质心,直到质心不再改变,即分类完成[6]。
如果只采用常规的分水岭分割和K-means聚类,难以达到满意的效果,因此需要在这个基础上在LAB色彩空间中进行进一步的精细划分。
1.3 LAB 特征空间的转换及色彩分类
相对于图像处理的RGB色彩空间,Lab色彩空间中色域更大,因此图像处理中一般先将图像从RGB色彩空间转换至Lab色彩空间。
鉴于蚜虫病斑细小且颜色与背景相近,为了区别不同种类的蚜虫,需要结合其自身颜色,从细微的色彩空间中寻找差异[7]。例如草蚜呈黄绿色,其和绿色背景叶片上的区别主要就在于黄色特征的提取,因此对该种类病虫的检测需要在色彩空间中通过适当的阈值对黄色分量进行提取,而在叶面中背景一般为绿色,因此黄色和绿色色差就是辨识的关键,在LAB色彩空间中,绿色和黄色色彩向量过渡图示如图2(a)所示。
图2 草芽色彩在Lab空间中的示意图
在图2(b)中,设待分析图像中对应a分量色彩向量为,a分量里面绿色分量是负值,b分量的色彩向量为B→,亮度分量L对应的向量为L→,则黄绿色差向量为:
通过对色差向量设置适当的阈值,对叶面中黄绿色差向量D⇀进行分割,达到抑制绿色分量、提高黄色分量亮度的目的,这样可以显著提取含黄色分离成分较多的病斑区域。阈值的设置依靠经验值,也可以看作是一个先验信息,一般需要大量虫害本身的色彩和叶面的图片对比度得出。
2 SIFT特征提取匹配
对于较为细小区域的识别,尺度不变特征转换(Scale-Invariant Feature Transform,SIFT)[8]是一种比较理想的选择,一般在计算机视觉算法中用来侦测与描述影像的局部性特征,在图像识别多个领域进取得了良好的效果。本文提取特征过程如下:
(1)图像模糊算法
SIFT算法在不同的尺度空间中寻找关键点,采用高斯模糊实现尺度空间的获取,唯一线性变换核即为高斯卷积核。高斯模糊作为一种图像滤波器,使用正态分布(高斯函数)来计算对应的模糊模板,并用该模板与原图像进行卷积运算,达到模糊图像的效果[9]。N维空间正态分布方程为:
其中,σ是标准方差,该值越大,平滑度越高,导致图像越模糊。r为模糊半径,如果在二维空间中用横纵坐标替代该公式,其生成的曲面等高线是从中心开始呈正态分布的同心圆:
根据σ值得到高斯模板矩阵的值,并与原图像做卷积运算,即可实现原图像的平滑(高斯模糊)效果。将模板矩阵归一化处理,确保其中的元素均在[0,1]之间。例如5×5的高斯模板如下所示:
得到不同尺度下的高斯核函数,就可以计算二维图像I(x,y)不同尺度下的表示,其中G(x,y,σ)是尺度可变高斯核函数,而σ是尺度参数。
(2)关键点的定位
得到不同尺度空间的图像后,将中间层的点和周围所有相邻点进行比较,寻找差值较大或者较小的点,同时去除边缘不稳定的响应点和对比度较小的特征点,提高抗噪声能力,增强匹配稳定性。
(3)关键点方向分配和局部图像描述
首先选取关键点周围16×16的图像区域,从中计算4×4的描述区域,即八个方向的描述序列,可以产生128维的特征描述向量,这个向量就是关键点特征。
(4)SIFT特征匹配
两幅图像采用上述算法分别得到SIFT特征向量后,用关键点的特征向量进行匹配,匹配方式一般用欧氏距离法,本文中采用归一化交叉相关系数(Normal⁃ization Cross Correlation,NCC)[10]来进行相关性计算。假设有两个矩阵,A∈Rm×n,B∈Rm×n,它们的 NCC 系数计算如下:
NCC计算得到一个相关度系数,该值越接近1则表示相关度越大,越接近0则相关度越小。
3 实验分析
对虫害图片的识别难点在于定位病虫位置。如果分割病害区域的位置过小,则容易造成匹配点过少,无法检测到大量的病虫区域;如果分割区域过大,背景去除不干净而带有大量叶面信息,导致匹配点过多,造成过检测,因此叶面病害区域和背景的分离很重要[11]。为了测试对比本文算法具体效果,首先采用几种传统图像边缘检测分割的算法对蚜虫图片进行分割和提取,分割结果如图3所示。
在图 3 中,图 3(a)是原始图片;图 3(b)是对应的灰度图片;图 3(c)和(d)分别对应的 Robert算子[12]和Sobel算子[13]的分割结果,这两种算子分割对边缘平滑的力度较大,因此分割区域过小;图 3(e)和(f)是 Pre⁃witt算子[14]和Canny算子[15]的分割结果,这两种算子分割的区域大,尤其是叶面纹路和径脉留存较多,使得后续识别受叶脉干扰较明显。
本文在分水岭分割的基础上,加入LAB色彩空间向量信息进行病害区域的提取和分离,效果如图4所示。
图3 几种常见算子对蚜虫病斑区域分割对比图
图4 基于叶面信息的蚜虫病害区域提取
图4(a)为原始图片,图4(b)是基于分水岭算法的叶面部分与背景分离后的图片,图4(c)是基于LAB色彩空间的蚜虫病害区域特征提取模板,图4(d)是基于该模板提取的蚜虫病害区域图片。
从图4(d)中可以看出,经过在LAB分水岭分割基础上增加LAB色彩空间中的阈值分割,蚜虫病斑区域得到了较好的分割,便于后续特征点匹配。
在草芽特征点匹配中,采用SIFT特征点对进行匹配,图5给出了两组匹配示意图。
图5 草蚜模板和待识别图片SIFT特征匹配图
在图5(a)中,模板和待匹配图片匹配了17对特征点,在图5(b)中匹配了28对特征点。本文中不同算子提取的模板参数对比结果如表1所示。
表1 不同算子提取的模板参数对比
特征点的匹配不是越多越好,因为需要对病虫的匹配,而不是对叶面的匹配,为了测试匹配及不同分割算子提取的模板的识别效果,采集56幅蚜虫病害图和124幅正常叶面图进行匹配,如果匹配的特征点多于10对就认为是病害图片,不同分割算子提取的模板匹配识别结果如表2所示。
4 结语
本文在传统分割算法的基础上结合SIFT特征点匹配对蚜虫病害图像进行检测,该方法能做到对旋转、亮度变化、尺度缩放保持不变,对噪声、视角变化、仿射变换也有一定程度的稳定性,有助于快速查找、实时匹配,具有可扩展性。
尽管本文提出的算法在蚜虫病害识别上出现了较好的效果,但仍然有所不足,主要是蚜虫病害图片数据量较少,结论存在局限性,因此需要更多不同种类的蚜虫病害图片进行更加广泛的测试。