唐栩超
(上海邮电设计咨询研究院有限公司,上海 200082)
随着我国农业自动化的快速发展,果实采摘机器人技术也得到了深入研究和广泛应用,例如基于区域特征的番茄果实识别技术主要利用像素灰度值的突变对图像进行分割,再对分割后的区域进行分析,从而识别果实。该技术还可以以图斑为特征变量,从不同的方向提取果实的特征,通过数据建模来估算单株果树的产量。这些方法的缺点是只能对单个果实进行识别,如果存在覆盖或者被遮挡的情况,就会导致识别率变低,从而导致出现漏摘的情况[1]。为了解决这类问题,该文提出了一种新的果实图像识别方法,将极大值作为特征进行提取和检测,通过高斯滤波原理可以确定果实的位置并提取果实的图像颜色特征[2]。为了验证该文提出的方法的正确性,该文以苹果采摘机器人为例进行一系列的测试,并与传统的Hough 变换检测效果进行对比。测试结果表明,该文提出的方法对果实的识别率更高,特别是在存在遮挡的情况下,其优势更明显。
在进行图像识别的过程中,噪声的干扰是实时存在的,因此图像特征参数就会被改变和破坏,从而对果实特征的识别和提取造成很大的影响,为了保证图像的质量,必须对图像进行降噪处理。去噪方法种类很多,常用的有中值滤波和矢量中值滤波等[3]。
该方法实际上就是一个顺序统计滤波器,其基本原理是首先在图像中确定一个小窗口。其次,按大小的顺序对窗口中的像素灰度值进行排列。最后,通过奇偶条件得到一个中间值,这个中间值就是窗口中心位置的像素值,如公式(1)所示。
式中:Y为中值滤波结果;f1~fn为一维序列。
该方法的去噪效果由区域像素点的排序决定,不需要考虑图像的整体特性,这样可以很好地保护图像的边缘区域,问题是选取的窗口越大,处理的速度就会越慢,实时性很差[4]。
均值滤波的基本原理如下:首先,在待识别的图像上确定一个区域,这个区域的特点是不但包括待处理的像素,而且还包括其相邻的像素。其次,计算该区域中所有像素的平均值,计算的结果就是待处理像素的值。因此,均值滤波是常见的线性滤波算法,该方法的优点是可以对图像进行平滑处理且速度快,缺点是经处理后的图像比较模糊,其原因是处理时是同时对图像上所有像素进行处理。该方法在一定程度上可以削弱噪声,但是并不能完全消除噪声。
其基本原理是通过中值滤波处理彩色图像中的矢量,1幅彩色图像如公式(2)所示。
式中:Ci为待处理图像;Ri、Gi和Bi分别为3 个灰度分量。
如果{WK}为某个区域中第K个矢量集合,就可以把输出的中值向量表示出来,也就是各矢量间最小距离所对应的向量,如公式(3)所示。
式中:Wj为第j个区域的矢量合集;Wi为第i个区域的矢量合集。
该方法的优点是计算简单、处理速度快且去噪效果好。因此,该文选用该方法对苹果图像进行去噪处理。
图像分割技术是图像处理的重要组成部分,其原理就是根据一些重要参数(例如灰度、色彩以及纹理等)科学、有效地将图像分割成不同的区域,再提取具体的特征[5]。应用最广泛的图像分割方法是Otsu 阈值法,该方法是利用最小二乘法的原理确定合适的阈值,再与各像素点的灰度值进行比较,最终得到像素点所在的区域,如果出现阈值大于灰度值的情况,就表明像素点属于背景区域;如果相反,就表明属于兴趣区域。该方法的优点是分割效果好,基本不受光照强度等条件的影响,以苹果图像为例,分割的效果如图1 所示。
图1 苹果图像分割效果图
边缘检测的效果直接决定图像识别的结果,边缘检测点像素的强度值可以很好地区分边缘点和普通像素点。在实际的应用中,经常会出现2 种情况,一是颜色分量会出现突变,二是灰度值会出现阶跃变化,这2 种情况都会影响边缘提取的效果,因此边缘检测方法的选择非常重要。
常用的边缘检测方法主要包括Sobel 算法、Prewitt 算法以及Canny 算法。在3 种算法里,Sobel 算法的优点比较明显,主要体现在边缘轮廓连续、清晰,同时去噪效果也比较明显[6]。苹果图像检测效果如图2 所示。
图2 Sobel 算法的检测效果
该算法的基本原理如下:对1 个3×3 的模板和需要检测的图像中的每个像素点进行卷积运算,可以得到2 个重要的参数(水平边缘和垂直边缘),通过确定的阈值就可以对需要检测图像的边缘进行提取,如公式(4)所示。
式中:a'x(x,y)为水平边缘的值;ay'x(x,y)为垂直边缘的值。
如果a(x,y)是灰度值函数,那么梯度如公式(5)所示。
要提高苹果采摘机器人的工作效率,关键就在于能够准确地提取苹果图像特征。应用较多的方法是 Hough 变换法,该方法的缺点是运算速度慢、时效性差,特别是在有遮挡的情况下,其果实识别率更低[7]。
因此,该文提出了一种新的果实图像识别方法,即基于局部极大值进行苹果图像特征提取,该方法充分利用了高斯滤波器的原理,首先,对滑动的高斯模板和需要识别的苹果图像进行卷积运算,同时在高斯滤波器的输出端输出得到的加权平均值,从而提取苹果的形状[8]。通常情况下,一维和二维高斯滤波函数如公式(6)、公式(7)所示。
式中:δ为尺度因子。
在提取苹果图像特征的过程中,需要确定一个零点,该零点的确定必须要满足2 个条件,一个是图像中心响应值最大,另外一个是灰度值突变较大的边缘的响应值最小。检测的过程分为2 步:1) 对苹果图像进行高斯滤波。2) 进行局部极大值检测,出现极大值的位置就是苹果的中心位置[9]。
如果用Q为原始图像,P为高斯响应值,那么高斯卷积相应如公式(8)所示。
高斯滤波后需要把局部极大值检测出来,选择一个合适的正方形窗口在苹果图像上滑动,滑动的目的就是检测窗口中的图像像素的灰度值,这样就可以很好地确定局部极大值的具体位置,通过公式(8)可以计算高斯卷积响应值最大的地方就是苹果的中心。确定圆心后就可以通过圆心到边缘的距离判断苹果的半径和大小。通过该方法对苹果进行检测的结果如图3 所示。
图3 局部极大值法检测结果
该方法使用编程语言C++实现,因为C++代码运行效率比较高,所以可以提高图像识别的速度,具体的方法流程如图4 所示。
图4 实现流程图
整个方法的实现流程总共分5 个步骤(第三步、第四步和第五步是核心步骤):1) 选择需要识别的苹果图像,初始化主要参数。2) 选择使用矢量中值滤波对待处理的苹果图像进行降噪处理。3) 通过Otsu 阈值法对待处理苹果图像进行分割,并判断像素点属于背景区域还是属于目标区域,如果属于背景区域,就重复操作,直到像素点属于目标区域再进行下一步操作。4) 通过Sobel 算法、公式(4)和公式(5)进行边缘检测,并清晰、连续地展现待检测图像目标区域的轮廓。5) 通过公式(6)和公式(7)进行局部极大值检测,并定位待检测目标区域的中心位置,通过公式(8)判断苹果的半径和大小,最后输出检测结果。
为了验证该文提出的方法的正确性,须进行一系列对比测试。
使用苹果采摘机器人对随机选取的288 个苹果进行测试,假设B1为无遮挡的苹果数量,B2为有遮挡的苹果数量,Z为测试的准确率;J为测试苹果的总数量;K为机器人识别出的苹果数量,那么识别准确率如公式(8)所示。
由测试数据可知,与Hough 变换法相比,该文提出的方法的采摘准确率更高,对无遮挡的苹果来说,这种方法采摘准确率差别不大,但是对有遮挡的苹果来说,该文提出的方法的优势更明显。
随着果实采摘机器人的广泛应用,对采摘准确率的要求也越来越高,如果要提高采摘准确率,就要求机器人必须能准确识别果实图像。因此,该文提出了一种果实图像识别新方法,该方法主要通过局部最大值进行特征提取,从而确定果实的中心位置,同时还能够确定果实的直径和大小。为了验证该文提出的方法的正确性,将传统的Hough 变换法与该文提出的方法应用到苹果采摘机器人中进行对比测试,由测试数据可知,该文提出的方法对苹果的识别率更高,可以广泛地应用到果实采摘机器人中。