杨 帆,李鹏飞,刘 庚,王伟斌
(西安理工大学 机械与精密仪器工程学院,陕西西安710048)
至2025年,我国水果总产量有望突破3亿吨[1],但我国的果蔬产业自动化水平偏低,大多依赖于人工操作。同时,农村人口老龄化以及大量农民涌入城区务工,将使得果蔬产业面临劳动力不足的问题,所以研发采摘机器人具有重要的现实意义。
近年来,国内外学者在果蔬采摘机器人的目标识别方面已经展开了研究,Wachs等[2]通过采集到的红外图像和彩色图像对目标进行识别。Xiang等[3]利用目标轮廓与遮挡部分轮廓曲率差异,过滤掉具有异常曲率的轮廓点,并利用剩余轮廓信息构建新的轮廓,完成对番茄目标的识别。王海青等[4]采用最小二乘支持向量机算法,分割温室大棚里的黄瓜图像。徐越等[5]提出了一种基于重叠目标的识别算法。Nuske等[6]设计了一种可以穿梭在葡萄园中进行葡萄产量预测的装置。现有文献主要是针对单一果实的识别与抓取,在处理多个果实的识别与定位时,采摘机器人无法准确、有效地摘取果实。
本文以复杂背景下多个橘子目标为研究对象,针对传统边缘检测算法的不足,提出采用K-means聚类算法与Canny边缘检测算法相结合的方法对橘子目标轮廓进行识别。运用单目立体视觉平移测量模型对多个橘子目标进行定位,并进行实验验证,为采摘机器人实时摘取多目标技术的研究提供参考。
目标轮廓是图像中灰度值发生剧烈变化的像素构成的集合,包含了目标形状的所有信息。通过检测目标的轮廓,可以完成对目标的识别。在图像处理中,常用的微分边缘检测算法有Robert算子[7]、Prewitt算子[8]、Sobel算子[9]等。这些算法选择不同的模板遍历图像中的每个像素点,对像素点灰度值分别沿x和y方向求偏导,得到偏导分量后,采用不同的范数计算该像素点梯度矢量的幅值,以该幅值作为目标边缘检测的依据。
例如采用Robert算子对原始图像图1(a)和(c)中橘子目标进行边缘检测,其效果图分别如图1(b)和(d)所示。从该效果图中可以看出,图像中背景线条边缘与橘子目标边缘糅杂在一起,无法检测到完整的橘子轮廓。这是因为图像背景中含有较多的枝叶,严重干扰了橘子轮廓的检测。
图1表明传统的边缘检测算法不能有效地检测出所需的目标轮廓,无法对图像中复杂背景下橘子目标进行有效识别。故本文采用K-means聚类算法将目标物从复杂背景中提取出来,再运用Canny边缘检测算法进行边缘检测,以获得完整的目标轮廓。
图1 原始图像及边缘检测效果图Fig.1 Original images and edge detection results
为提高照片质量,降低图像中的噪声,凸显感兴趣区域,采用噪声过滤措施。中值滤波是一种非线性数字平滑技术,对于处理斑点噪声和椒盐噪声非常有效,并且能消除孤立点的干扰。通过对橘子果实图像的观察,发现噪声主要为斑点噪声,因此选用中值滤波为本研究去噪。
滤波窗选取可以根据目标物的大小形状和希望达到的效果选用线形、正方形、圆形以及十字形等。对于缓慢变化的轮廓,使用方形或者圆形窗口较为理想。橘子果实外观轮廓具有缓慢变化且延长的特性,所以本文采用3×3的正方形窗口进行中值滤波。从处理结果可以看出,中值滤波能有效地去除背景和果实表面的斑点噪声,使果实更加凸显[10],如图2所示。
图2 中值滤波橘子果实图像Fig.2 Median filter image of oranges
K-means聚类算法可将复杂背景下多果图像处理成二值区域图像和彩色区域图像,能够完整、清晰地分割出目标轮廓,为目标轮廓的边缘检测提供有效保障。
K-means聚类算法的原理是通过迭代过程把原始图像的像素数据集划分为不同的类别,使得评价聚类性能的准则函数达到最优,生成的每个聚类(又称簇)类内紧凑、类间独立[11]。
平均误差准则函数是常用的聚类准则函数,其定义为:
(1)
式中,E为平均误差;P为橘子图像中像素点的像素值;mj为橘子图像中簇Cj的像素值的平均值;Cj为橘子图像中第j个像素聚类;k为像素点聚类的数目。
K-means聚类算法的具体步骤为:
1) 给定大小为n的数据集,令迭代次数I=1,选取k个初始聚类中心Zj(I),j=1,2,… ,k;
2) 计算出橘子图像中每个像素坐标(xi,yi)与聚类中心的距离D[(xi,yi),Zj(I)],i=1,2,… ,n;
如果满足:
D[(xi,yi),Zk(I)]=minD[(xi,yi),Zj(I)],I=1,2,…,n
(2)
则(xi,yi)∈Ck,Ck为橘子图像中像素聚类点数目。
3) 计算k个新的聚类中心
(3)
4) 判断:
若Zj(I+1)≠Zj(I),则I=I+1,返回步骤2;否则算法结束。
针对图1(a)和(c),图中主体颜色为橘黄色和绿色,经多次试算,将图像中的像素数据划分为两类,聚类数目k取值为2,应用K-means聚类算法对原始图像进行聚类处理。
分割后,获得枝叶遮挡下橘子目标的二值区域图及彩色区域图分别如图3和图4所示。
从图3和图4可以看出,采用K-means算法可以有效地分割出复杂背景下橘子目标的轮廓区域。
图3 双果分割图像Fig.3 Segmentation image of double oranges
图4 多果分割图像Fig.4 Segmentation image of multiple oranges
图3和图4显示,虽然对橘子的目标区域进行了有效分割,但并没有提取橘子目标的轮廓信息。
由于果实所处的自然环境是随机、开放的,选择一种合适的轮廓提取方法非常重要。轮廓提取方法主要有数学形态学边缘提取法、boundaries边缘追踪法以及Canny边缘检测法等方法,其中Canny边缘检测算法具有较好的信噪比、较高的定位精度以及边缘响应次数较少的性能[12],可以提高检测边缘的敏感性,且能很好地抑制图像中的噪声[13]。因此,本文选用Canny边缘检测算法对橘子图像轮廓进行检测,效果如图5所示。可以看出,图像中背景边缘线条得到有效去除,处理效果得到进一步改善。
对图5中的图像局部放大后,发现目标轮廓内部仍有部分孔洞存在,如图6所示。这些细小的孔洞噪声会影响机器视觉系统对目标识别定位的精确度。
图6 局部图像Fig.6 Part of orange contour image
孔洞定义为由前景像素相互连接的边界所包围的背景图像。针对橘子目标物由于光照和果实本身斑点造成的孔洞提出利用一种膨胀、求补和交集的方法。令A表示一个包含子集的集合,其子集的元素是区域的8连通边界点,每个边界包围一个背景区域(即一个孔洞)。确定出孔洞面积阈值,用8连通域模板遍历整副图像,寻找需要填充的孔洞。
定义图像中第一个像素点X0,形成一个阵列从X0开始逐行遍历图像填充孔洞,其过程为:
Xl=(Xl-1⊕B)∩Acl=1,2,3,…
(4)
式中,B为膨胀结构元;Ac为集合A的补集。
接下来对果实重叠部分的轮廓进行分离,以双果图像为例,图3(a)中数据所对应的矩阵为D=(aij)mn,图5(a)中数据所对应的矩阵为E=(bij)mn(i=1,2,…,m,j=1,2,…,n),其中m、n为矩阵的行数与列数。将图3(a)和图5(a)中的数据按式(5)进行叠加,叠加后可得到图7所示的图像。
(5)
仿真结果显示,通过以上操作有效地去除了噪声斑点干扰。
对图1(a)和(c)中原始橘子图像若不进行图像分割,直接采用Canny边缘检测算法进行目标轮廓检测,其效果如图8所示。对比图7与图8的测试效果后发现,图7中目标轮廓完整,完成了复杂背景下橘子多目标物轮廓的有效检测。
图7 去除橘子轮廓残留物后的图像Fig.7 Orange contour image removing residue
图8 Canny边缘检测效果图像Fig.8 Test effect image using the Canny edge detection method
本文采用Hough梯度圆变换检测算法[14-15]对类圆形橘子果实轮廓进行拟合重建,计算出橘子目标物的圆心和半径,从而为采摘机器人的机械手爪摘取果实提供依据,该方法能够有效降低目标自身形变等因素的干扰。
Hough梯度圆变换检测算法步骤为:
1) 利用Canny算子,计算边缘二值图像中非零像素点的x方向导数和y方向导数,得到输出图像;沿着边缘点梯度和梯度的反方向,对参数指定的最小半径到最大半径的距离范围中的像素点进行累加次数统计;
2) 根据Hough圆变换参数设定中的累加阈值,将二维累加中不满足大于累加阈值的元素排除,同时比较累加器中元素与其邻域半径值的大小,如果邻域中不存在更大的点,则将对应累加器中元素保留,反之排除;
3) 将经过步骤2处理的候选中心按照累加次数降序排序,对候选中心中不满足预定的圆心间距最小值的点进行排除;
4) 对于每一个中心,将所有的非零像素(梯度值不为零)按照与其中心的距离排序,如果满足最小半径与最大半径范围,则将该距离值作为候选半径从小到大排序;
5) 从候选半径中第一个元素开始,选择边缘图像中非零像素点支持度最高的半径,根据参数中所设定的圆心的最小距离和半径阈值,将满足要求的候选圆心坐标和半径保存到序列,作为所检测到圆的圆心与半径。
图1(a)和(c)所示复杂背景下的类圆形橘子图像,经过Hough梯度圆变换检测后,确定出橘子目标物的圆心和半径,如图9所示。图中包络橘子目标的圆为橘子轮廓的重建圆,绿色原点表示重建圆的圆心。
图9 橘子果实定位效果图Fig.9 Location results of orange fruits
获取空间目标物的三维信息是实现采摘机器人躲避障碍物、采摘果实的前提。将单目摄像机安装在采摘机器人手抓末端构成手眼视觉系统(即眼在手系统),具有成本低、工作空间大、能避免自身结构遮挡造成的视野盲区等优势。
图像矩主要表示图像区域的几何特征,其中采用一阶几何矩与零阶几何矩的比值能够计算出目标图像的质心位置。该方法对噪声不敏感,当有外部噪声干扰时,计算出的目标物质心不会有太大的偏离。
目标轮廓的质心坐标(u,v)为:
(6)
(7)
式中,f(x,y)为目标图像的灰度值函数;M10为u方向的一阶几何矩;M01为v方向的一阶几何矩;M00为零阶几何矩;M为u方向的像素值;N为v方向的像素值。
要计算出目标物的深度信息,仅依靠单目摄像机在一个固定点拍摄一副图像是不够的。本文建立单目立体视觉平移测量模型,完成橘子目标物的深度测量。
如图10所示,将摄像机沿着自身坐标系的u轴方向从位置C移动到D,对固定不动的空间目标点W(XW,YW,ZW)进行拍摄,所拍摄的两幅图像中目标点W对应的像平面坐标分别为W1(u1,v1)和W2(u2,v2)。由于摄像机是沿着自身u方向平移,则v1=v2,那么点W对应的视差为MW=u1-u2。
图10 单目立体视觉平移测量模型Fig.10 Translational measurement model of monocular
此时,目标点W在摄像机坐标系下的三维坐标值分别为:
(8)
式中,b为C和D两位置摄像机的中心连线距离;f*为摄像机焦距,通过张氏平面法[16]获得;u0、v0为主点坐标。
建立如图11所示的系统实验台,它由XYZ三坐标平台、摄像机、控制计算机等组成,其中XYZ三坐标平台的Z轴上安装有KS352摄像机和手爪。
以橘子为实验对象,随意抓取橘子抛洒在实验平台上,并随机在其上覆盖树叶,模拟自然条件下橘子所在的环境。通过单目立体摄像机采集橘子目标物原始图像,如图12所示。采用本文算法对图12所示原始图像进行识别与定位处理,效果如图13所示。运用单目立体视觉平移测量模型,计算出橘子目标物在摄像机坐标系下的位置坐标,如表1所示。
图11 系统实验台Fig.11 Experimental platform
图12 橘子原始图像Fig.12 Orange original image
图13 橘子目标的识别与定位结果Fig.13 Identification and location results of orange targets
在实验中,抓取大枣目标的场景如图14所示,气动手爪抓取橘子目标的场景如图15所示。
图14 气动手抓抓取大枣目标场景图Fig.14 Scenes of grasping jujube
图15 气动手爪抓取橘子目标场景图Fig.15 Scenes of grasping orange
序号计算坐标/mm实际坐标/mm坐标误差/mmxdydzdxsyszsexeyez1238.71282.73211.35669.81378.14340.713252.135253.125252.2481185147280432502502502.2882.2682.6442.1871.8572.2872.1353.1252.248
为了证明本文所提方法的通用性,将目标物换为果型为类圆型的大枣,对其进行识别与定位处理并进行抓取实验。将大枣随机抛洒于实验平台上,人为地使大枣间形成一定的高度差,再用叶子将其部分遮挡。橘子实验中每个目标物的深度信息相同,大枣实验中每个目标物的深度信息不尽相同。对大枣进行识别定位后,摄像机坐标系下的大枣位置坐标如表2所示。
从表1和表2可看出,获得的各目标物的计算坐标与实际坐标基本吻合,精度较高,但还存在着一定误差。表中显示各目标物的坐标误差基本在5 mm以下,可以满足农业采摘机器人对目标的识别与抓取要求,从而验证了本文识别算法的有效性及可行性。
表2 大枣目标实验结果
1) 将K-means聚类算法与Canny 边缘检测算法相结合,有效地将复杂背景下枝叶遮挡或重叠的橘子目标分离出来,连续、完整地检测出了目标的轮廓。该方法可进一步推广应用到大枣等类圆目标物的分离与识别。
2) 通过一阶几何矩计算出目标物的质心坐标,再利用Hough梯度圆变换对类圆形橘子果实轮廓进行拟合重建,然后计算出橘子目标物的圆心和半径。
3) 利用单目立体视觉平移测量模型,移动摄像头拍摄出不同位置的两幅图片,计算出目标物的深度信息,完成了对目标物的三维重构。
4) 将算法移植到XYZ三坐标平台上,对复杂背景下的橘子和大枣进行抓取实验。实验结果表明,所提算法可以对橘子和大枣类圆目标进行有效地识别、定位与抓取。