基于轮廓特征的植物叶片识别系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于轮廓特征的植物叶片识别系统
文章提出了一个基于图像识别的植物叶片识别系统,采用Opencv计算机视觉库在Android平台上进行嵌入式开发,通过调用移动设备摄像头对即时拍摄的150幅植物叶片照片进行物种识别。比较了包括canny边缘检测和EM分割算法等方法,再通过自适应核的形态学操作进行后期处理,提取到较准确的叶片边缘轮廓信息。计算轮廓曲率并且统计成曲率直方图特征,最后通过SVM分类器,对特征进行分类,来达到对不同的植物叶片进行识别和分类。识别率较高,运算速度有待提升。
标签:图像处理;形态学;EM算法;直方图比对;SVM;支持向量机
引言
模式识别技术被用于计算机视觉及图像处理领域,近些年得到了飞速的发展,吸引了世界上众多学者参与研究。如何提取或者测量叶子的特征是一个长期研究中的话题[1]。这使得模式识别在这个领域的应用面临了一个新的挑战[2][13]。根据文献[2],由计算机自动获取现存植物的数据的做法还没有被实施。
而目前国内外针对植物叶片形状特征中的轮廓特征,对植物叶片轮廓提取的方法主要分为基于轮廓和基于区域[3]。文章通过对现场拍摄的植物叶片照片进行预处理,对比[4]中使用的canny边缘检测,我们采用Expectation-Maximization 算法对植物和背景进行图像分割[5],能在移动平台上以较快的速度获取相对更加准确的边缘信息。结合文章提出的自适应核植物形态学开闭运算,以达到去除叶片茎的干扰,然后提取植物叶片边缘轮廓的曲率特征。
关于特征的选择,虽然目前已经有许多方法,但大都使用了预定义的特征。而[9]中使用了一个移动中值中心超球面分类器,因为其需要大量的迭代计算,不适合在移动平台上应用。相似的做法在[2]中也提出了。他们的另外一篇论文提出了一个用于叶片形状匹配的简单的动态规划算法,相对[9]而言计算速度有一定提升。而文章采用采用的多尺度提取轮廓曲率信息,既能有很短的计算时间,通过实验筛选出最具代表性的尺度特征,相比采用”不变矩”或类似于多尺度距离矩阵[10]等尺度不变方法,不仅能保证识别的成功率,而且计算量较小。
以上的很多方法都使用了k-邻域的分类方法[2][8][9],而有些文章中采用虚拟神经网络的方法。在[11]中作者结合花和叶子的信息来分类野生的花,[12]中提出一个虚拟神经网络的运用来分类仙人掌。但是根据[9]中作者所论证的,SVM 分类将更有利于对高维特征进行更加精确的分类。
所以文章最后通过SVM训练形成的强分类器,与曲率直方图相交[5]这种方法对比,对其曲率直方图进行分类,使得系统的识别率更加稳定,达到对不同的植物叶片进行识别和分类。
1 提取叶片
由于植物在不同的季节颜色变化较大,并且叶片受光照环境的不同,很容易发生颜色的改变;如果以叶片的脉络作为特征,伴随着叶片的生长变化极大,不利于同种物种的准确识别。同时,为了模拟在真实环境中需要进行现场拍摄,所以在Android平台上进行嵌入式开发。考虑到移动平台的摄像头像素偏低,我们尽量选择高亮的背景进行拍摄,为了能够提高识别的准确率,只能通过对叶片轮廓形状上的特征进行提取。
这样的话,要获得一个描述充分准确的叶片轮廓形状就显得十分关键。与canny边缘检测比较而言,使用Expectation-Maximization算法对图像的前景和背景颜色分布进行估计,能够保证提取的轮廓闭合,完整。如果使用canny边缘检测,在叶脉比较突出的情况下,可能会检测到多个边缘,并且不一定能形成完整闭合的轮廓。通过EM训练,利用这个训练结果,对独立的每个像素进行分类。得到一个最初的分割二值图像,如果图像含有噪点可以利用中值滤波进行处理,之后通过Opencv中的FindContour方法取出轮廓,就能保证所得轮廓的完整和边缘曲率信息的精确,然后通过形态学开闭运算及根据连通性进行除去阴影区域和叶片的叶杆。
1.1 通过Expectation-Maximization算法进行初始分割
我们初始化每个高斯模型在各自的期望中心附近分布,注意到公式中的系数为0.5,当采用两个相等权重的高斯分布时,从新图像中读入数据,函数能收敛到相应的阈值。特征提取就通过EM分割,交替地使用每个像素估计当前参数,然后在使用新参数对像素点进行预测,从而更新和修正参数,反复迭代直至收敛。
我们将拍摄图片按比例缩放为400*400像素,比较了不同的采样方式。首先,采取生成随机二维数组,作为采样像素点的横纵坐标,采样点数为总像素数量的百分之一;其次,选择存储图像的矩阵中,每隔10个像素点取一个采样点,从像素点(10,10)开始,同样采样点数为总像素数量的百分之一。
结果表明,采用第二种采样的方式更有利于初始分割图像的准确性。其原因是当拍摄者在对叶片进行拍摄时,主观的会将叶片置于整幅图像的中心,而采用网格状取样方式,能对采样点的不同类型有一个全面的覆盖。
然而对于光照产生的阴影和叶片上比较薄的部分,或者由于拍摄摄像头像素过低,以至于照片模糊,有可能使得叶片边缘会有一些噪点,增加中值滤波,可以消除这一影响。
1.2 使用形态学操作去除错误预测区域
在EM处理之后,每个像素点都根据其在EM处理中和两个高斯之间的关系被认定为叶子或者是背景上的像素。这就导致了一开始的分割中有时候会存在因为不均衡的背景、阴影或者图像中多余的物体而产生错误预测区域。另外,图像
中多余的边缘信息也会导致错误分割区域,这是因为在实验时,我们通常会在叶子后面放置一张白纸来产生一个高亮的背景,之后拍摄照片,这些照片有的会拍到白纸的边缘,从而产生潜在的错误预测区域。
因为叶片的柄,较叶面而言大多都比较狭长,在进行一个形态学开运算之后,也就是一系列的膨胀和腐蚀操作过后,二值图像会分离成一系列相互不连通的区域,而去除茎不应该增加相互不连通区域的数量,所以我们认为这样的候选部分最可能是杆,所以我们通过顶帽算法将茎提取出后,在原图上修剪掉这一部分,剩下的就只剩叶面了,如图1、图2。1.4提取结果
经过以上步骤,叶片的边缘形状提取到此完成,在安卓4.0系统普通手机上需要一共运行3.27s,主要花费时间为EM预测,占总时间的72.3%。
不过这一系列操作对于没有叶柄的图1来说,去茎处理之后,会损失一定的边缘信息,应该如何解决或图像恢复,文章尚且没有做更多的研究。
2 曲率特征的计算和存储
2.1 曲率的计算
对于不同拍摄者的不同拍摄尺度选择,会使得有时叶片面积占整幅照片面积比例过小,有的过大,所以只有使用多尺度的叶片形状特征,才可以有效地分辨不同种类的植物叶片。
对于离散的点来说,要求轮廓的曲率并不能够直接求取,由于我们考虑到在移动平台上不能够进行长时间大量的运算,只能够借由在叶片轮廓上,以轮廓点为半径画圆,统计在院内的像素为叶片的像素点数,来广义的表示该点处的曲率值[13],曲率越大,园内的叶片像素点数越接近圆面积的一半,如图3、4所示。
我们尝试从叶片轮廓的某一点出发,按照顺时针顺序,选取不同的尺度,计算轮廓曲线的曲率大小,形成一组关于轮廓点序列和其在不同尺度下所对应的曲率值的向量,将其转化成矩阵形式可以在表示成横坐标为轮廓点的序号,纵坐标表示为尺度大小,而横纵坐标所对应的值就是这一点,在这一尺度下的曲率大小。我们取了1~30个像素大小的不同尺度,绘制灰度图像如图5。灰度值越高,代表该处曲率越大。如图5所示。
2.2 曲率特征的存储
完成计算后,相对应的,每一幅R-P图像的直方图信息将对应着一种植物的特征。由于在Android平台下自带Sqlite数据库,读写速度快,并且较为轻便,我们为了不丢失直方图精度,不进行归一化处理,而是将数据以32位Float型数字转化为字符串,存入数据库中,作为植物特征信息比对数据库。
3 直方图比对