雷旺雄, 卢 军
(陕西科技大学机电工程学院,陕西 西安 710021)
视觉识别定位系统是农业采摘机器人中不可或缺的一部分,影响着机器人采摘的准确率和效率。由于农业采摘机器人面对的采摘环境恶劣,并且背景干扰较大,所以视觉识别定位算法的鲁棒性和实时性就变得至关重要。
近年来,科研人员对葡萄采摘机器人的视觉识别定位进行了大量探索。葡萄果实的分割检测是葡萄采摘机器人采摘点定位的首要任务。Luo等[1]通过提取葡萄有效颜色分量,并结合AdaBoost分类器来检测成熟的葡萄。罗陆锋等[2]使用改进的人工蜂群算法对夏黑葡萄进行分割。宋西平等[3]使用快速模糊C均值聚类(FFCM)算法对采集图像的色调分量进行分割,完成对夏黑葡萄的检测。田锐等[4]对RGB颜色模型的颜色样本值进行计算,并根据样本值对紫色和红色葡萄进行分割,准确率达到90%。马本学等[5]使用大津法或双阈值法对3种不同光照条件下的葡萄进行分割,再基于轮廓做外接矩形,然后结合角点检测的方法获得葡萄果实的位置信息。在葡萄采摘机器人的定位研究中,果实重叠是影响定位准确率的重要因素。罗陆锋等[6]通过图像分割和轮廓分析,再结合几何约束模型,对双串葡萄进行识别和提取。葡萄果粒直径的大小反映了葡萄的水分缺失情况,曾庆兵等[7]和陈英等[8]分别基于轮廓分析和数字形态学方法对堆叠葡萄果粒进行尺寸检测。有学者采用泽尔尼克(Zernike)矩边缘检测算法对葡萄果实轮廓进行提取,实现了葡萄果实几何特征的实时检测[9]。在葡萄生长过程中,套袋是很重要的措施,可以预防病虫害,并避免农药与葡萄果实的直接接触。为了获得葡萄果实的位置信息,杨庆华等[10]提出结合葡萄颜色和形状特征来获取葡萄果实位置信息的方法。张凯等[11]基于遗传算法对葡萄果实的套袋目标特征进行快速提取与识别。在葡萄的采摘过程中会对葡萄果实造成外在损伤,为解决这一问题,罗陆锋等[12]通过双目立体视觉技术对葡萄包围体进行求解和定位,实现葡萄采摘机器人的防损采摘。针对葡萄串采摘点的定位问题,张同勋等[13]利用逆向识别算法结合模板匹配和测距仪来实现葡萄串采摘点的定位。熊俊涛等[14]针对非结构环境中扰动葡萄的定位问题,通过对葡萄串进行形态分析并计算单摆运动的周期和摆角进行视觉定位,再使用霍夫直线拟合,结合角度计算方法获取采摘点的位置信息。为了对重叠葡萄果实进行采摘,Luo等[15]使用轮廓分析方法对重叠的葡萄果实进行分离,再采用几何约束法获取感兴趣区域采摘点的位置信息。罗陆锋等[16]使用葡萄图像分割结合点线最小距离约束方法,实现葡萄采摘机器人采摘点的精确定位。
综上所述,目前对葡萄采摘机器人的视觉检测研究主要集中在葡萄果实的分割,葡萄果实尺寸信息的获取以及葡萄采摘点的定位。现有的葡萄果实采摘点定位研究中,在复杂的葡萄种植环境下使用霍夫直线检测容易将叶脉以及其他枝干检测为直线,影响采摘的准确性。因此,本研究拟基于果梗、树叶和背景灰度级的不同,提出一种基于分水岭果梗图像分割和最小角度约束的采摘点定位方法,然后分别在晴天顺光、晴天遮阳和晴天逆光3种条件下进行验证,以期提高葡萄采摘点视觉定位的准确率和实时性,为实现葡萄自动化采摘提供技术支撑。
本研究所用葡萄图像采集于陕西省鄠邑区户太8号葡萄园,使用相机为佳能EOS M200,其分辨率为2 340像素×1 080像素,由于葡萄采摘机器人通常在白天进行采摘,故采集了在晴天顺光、晴天逆光和晴天遮阳这3种情况下的夏黑葡萄图像各40张,并用高斯滤波法去除图像采集中产生的噪声,使采集的图像变得较为平滑。
图1显示,本研究提出的葡萄采摘点定位方法主要由3部分组成。第一,葡萄果实识别,主要是识别葡萄串并获取其位置信息;第二,果梗图像分割,根据获取到的葡萄串信息定位果梗区域,对该区域进行分水岭分割;第三,采摘点确定,基于果梗二值化检测到的角点数据,通过线性回归和最小角度确定目标果梗,最后K均值聚类算法获得的聚类中心就是采摘点。
采摘点的准确定位是基于目标果实串的位置信息进行的,因此分别对不同情况下的夏黑葡萄图像进行分割,将夏黑葡萄图像转换到YUV颜色模型中,Y表示亮度通道,U、V是2个代表色度的通道,U通道受光照影响最小。在YUV通道下对葡萄串图像进行拆分,得到U分量图(图2a)。在U分量直方图中,灰度值主要分布在[50,180](图2b),葡萄图像的对比度比较低,然后对拆分后的U分量图进行直方图均衡化处理,使葡萄果实在U通道下的灰度值尽可能分布在[0,255],从而增强图像的对比度。葡萄串的灰度级分布函数如公式1:
图1 采摘点定位流程图Fig.1 Flowchart of picking point positioning
a:U分量图;b:U分量直方图;c:均衡化U分量图;d:均衡化U分量直方图。图2 葡萄串图像U分量均衡化处理Fig.2 U component equalization of grape clusters
(1)
直方图线性变换:
(2)
式中,N表示图像的像素总数,nk表示灰度级为rk的像素个数,rk表示第k个灰度级,p(rk)表示灰度级rk出现的概率,sk表示输出图像的灰度级,L是图像中灰度级数量。
将输入图像中灰度级为rk的各像素根据公式(2)进行映射,可得到均衡化U分量图(图2c),从中可以看出目标区域与背景的对比度更加明显,便于后期的阈值分割。均衡化U分量直方图(图2d)显示,经过均衡化处理之后,葡萄串的灰度值映射在[0,255],图像灰度的动态范围得到了增加,对比度得到了提高。因此,更容易找到葡萄串阈值分割的下限(thresh1)和上限(thresh2),并且thresh1 (3) 式中,g(x,y)表示二值图像灰度值,f(x,y)表示原图灰度值,thresh1表示阈值下限,thresh2表示阈值上限。 a:提取U分量;b:直方图均衡化;c:双阀值分割;d:形态学开操作。图3 葡萄串图像分割过程Fig.3 Image segmentation process of grape clusters 葡萄串果梗ROI区域的获取可以减小果梗检测的噪声干扰。葡萄串果梗在葡萄串的正上方,因此葡萄串的位置可以作为葡萄串果梗感兴趣区域定位的先验信息。首先,对葡萄串做最小外接矩形,对葡萄串轮廓进行测量;其次,按照公式(4)计算,得出葡萄串区域和果梗区域;最后,针对果梗ROI区域进行采摘点检测。 (4) 式中,ROI_x表示感兴趣区域的横坐标,ROI_y表示感兴趣区域的纵坐标,w和h分别表示矩形框的长和宽,(x,y)和(x+w,y+h)分别为矩形框的左上角和右下角坐标。 为了提高葡萄串果梗分割的泛化性,对晴天顺光、晴天逆光和晴天遮阳这3种情况下的果梗进行不同颜色空间通道以及|V-U|灰度图的对比分析,果梗、树叶和背景呈现出不同的灰度级别,|V-U|直方图(图4)、果梗原图(图5a)、|V-U|灰度图(图5b)显示,果梗区域的灰度值为[20,70],树叶的灰度值为[208,255],背景的灰度值为[119,151]。 图4 |V-U|直方图Fig.4 |V-U| histogram 葡萄串果梗与细的树枝粘连交错,图像分割困难,使用距离变换的分水岭分割能够较好分割出葡萄串果梗。图5显示,果梗ROI区域分割,首先根据|V-U|直方图对果梗区域进行双阈值分割,对分割后的二值图像进行形态学开操作,消除噪点,然后对二值图像进行距离变换。数字图像中对距离的定义有很多,本研究采用欧氏距离,通过计算每个像素点之间的距离获得灰度值,实现二值图像的距离变换,对距离变换后的灰度图做阈值分割,得到前景,也就是果梗和细小的树枝区域。其次将距离变换之前的二值图像与距离变换之后的二值图像进行相减,便得到前景与背景交界区域,定义为边界区域或者未知区域,然后进行连通域标记,用0来表示未知区域,背景区域及前景区域转变为其他整数,例如+1。最后进行分水岭操作,将灰度图像视为拓扑表面,图像中的像素值f(x,y)相当于地形海拔高度,局部极小值的区域为汇水盆地,随着注水量的增加,水位线不断上升,不同汇水盆地的山脊阻止水的汇聚,就会形成分水岭。 a:果梗原图;b:|V-U|灰度图;c:果梗二值化;d:形态学开操作;e:距离变换;f:前景与背景交界区域;g:连通域标记;h:分水岭操作。图5 果梗ROI区域分割过程Fig.5 Region of interest(ROI) segmentation process of fruit stalk 分水岭操作可以将葡萄串果梗很好地分割出来,然后对分割的每个果梗进行颜色阈值分割,并对每个果梗的二值图像做Harris角点检测。Harris角点检测是滑动窗口W向任意方向移动,然后比较窗口滑动前与滑动后灰度值的变化情况,如果灰度值变化程度大,那么该窗口就存在角点,灰度变化值Ex,y定义为: Ex,y=∑wu,v[Ix+u,y+v-Iu,v]2 (5) 式中,Ex,y表示灰度变化值,wu,v表示窗口函数,Ix+u,y+v表示平移后的灰度值,Iu,v表示平移前的灰度值,x,y表示窗口平移量。 为每个果梗二值图像检测到的角点寻找拟合直线,要使角点数据离拟合直线尽可能近一点。定义损失函数如公式(6),用梯度下降法对其进行优化,寻找最优的权重参数和偏置值(图6)。 图6 拟合直线Fig.6 Fitting straight line (6) 式中,Loss表示损失值,N表示样本总数,xi、yi分别表示第i个角点数据实际的x轴和y轴坐标值,w表示权重参数,b表示偏置值。 由于受葡萄果实重力的影响,葡萄串果梗基本是垂直向下的,计算每个果梗与垂直于地面直线的夹角,夹角角度最小的拟合直线所在的果梗就是葡萄串果梗,即目标果梗(图7)。 图7 葡萄采摘点的计算模型Fig.7 Calculation model of grape picking point 对目标果梗检测到的角点数据进行K均值聚类分析,首先初始化C个聚类中心Z(i),本研究中C=1,在接下来的k次迭代过程中,会按照以下步骤来计算每个样本与聚类中心的距离,以任一样本点X及样本个数i=1,2,3,…,m为例,如公式(7)。 j=arg min‖X-Zi(k)‖ (7) j表示样本X与C个聚类中心距离最近的类别,Zi(k)表示聚类中心,X表示任一样本点。 (8) 根据公式8计算新的聚类中心,则X∈Sj(k),式中,X表示任一样本点,Sj(k)是Zi(k)聚类中心的样本集合,ni为Sj(k)中的样本数,i表示样本个数,Zi(k+1)表示i个样本经过k+1次迭代之后的聚类中心。 在得到聚类中心之后,通过计算使得误差平方、误差平方和均最小。如果Zi(k+1)=Zi(k)(i=1,2,…,m),则说明算法收敛,算法结束,否则k=k+1,从公式(7)循环,最终得到的聚类中心即为采摘坐标点,算法迭代了3次,最终目标果梗角点数据聚类结果如图8显示。 图8 目标果梗角点K均值聚类Fig.8 K-means clustering of the corner points of target fruit stem (9) 式中,X表示任一样本点,Zi(k)表示i个样本经过k次迭代之后的聚类中心,Sj(k)是Zi(k)聚类中心的样本集合,E表示误差平方和。 在本次试验中,分别对晴天顺光、晴天逆光和晴天遮阳这3种情况下的夏黑葡萄图像进行果梗采摘点检测,将采集后的图片分辨率压缩为600像素×700像素,每张图片中目标果梗面积为1 200~1 700像素。通过公式(10)对本研究方法得到的目标果梗聚类中心坐标点A(u,v)和目标果梗轮廓坐标点B(xi,yi)进行平均距离计算。图9显示,在晴天顺光条件下,目标果梗聚类中心坐标点与目标果梗轮廓坐标点之间的距离(Avg)为5~48像素,平均值为26像素;在晴天逆光条件下,Avg为4~44像素,平均值为24像素;在晴天遮阳条件下,Avg为5~45像素,平均值为20像素。经分析,本研究算法在晴天遮阳条件下的图像分割效果最佳,采摘点定位成功率较高。 (10) 式中,Avg表示目标果梗聚类中心坐标点与目标果梗轮廓坐标点之间距离的平均值;n表示目标果梗轮廓坐标点的总个数;u,v表示目标果梗聚类中心坐标点;xi,yi表示目标果梗轮廓坐标点。 Avg:目标果梗聚类中心坐标点与目标果梗轮廓坐标点之间距离的平均值。图9 采摘点与目标果梗轮廓的距离平均值Fig.9 Mean distance between picking point and target fruit-stalk contour 采摘点定位在葡萄串所连目标果梗范围内定义为采摘点定位成功,采摘点定位到背景、葡萄果实以及其他果梗范围内定义为采摘点定位失败(图10)。采摘点定位算法的复杂度直接影响着葡萄采摘机器人的采摘效率,对3种不同采摘环境下采摘点定位算法运行的时间进行了统计,得到平均定位时间为0.65 s(表1)。定位失败的原因:第一,在晴天顺光、晴天逆光情况下受光照影响,算法分割不稳定,会直接影响采摘点定位的成功率;第二,在自然环境下,有些葡萄串果梗被树叶遮挡,检测不到目标果梗;第三,多个果梗交错,干扰较大。 图10 采摘点定位过程示意图Fig.10 Schematic diagram of picking point positioning 表1 不同试验条件下葡萄采摘点定位情况 本研究提出了基于分水岭果梗图像分割和最小角度约束的采摘点定位方法。通过葡萄果实位置信息定位果梗ROI区域,根据ROI区域中果梗、树叶和背景呈现不同的灰度级,对该区域进行分水岭分割,然后对每个果梗进行二值化操作,最后对分割后的图像进行角点检测。对每个果梗的角点数据进行线性回归分析,将拟合到的直线分别与垂直于地面直线进行角度计算,角度最小的拟合直线所在的果梗作为葡萄串所连的果梗,也就是目标果梗。对目标果梗的角点数据进行K均值聚类分析,聚类中心作为采摘机器人的最佳采摘点。 利用晴天顺光、晴天逆光、晴天遮阳条件下采集的图像进行验证,采摘点定位成功率为89.2%,与罗陆锋等[16]的结果相比提高了0.87%,平均定位时间为0.65 s。葡萄采摘机器人的工作环境存在葡萄串果梗被树叶遮挡和多个果梗交错的情况,所以在未来的工作中,将针对这2种情况下的葡萄串采摘点定位进行深入研究。1.4 葡萄串果梗感兴趣(ROI)区域的确定
1.5 果梗图像分水岭分割
1.6 葡萄串果梗的确定
2 结果与分析
3 结 论