基于OpenCV的水果采摘机器人目标检测与定位系统研究

2022-07-08 07:20王壮飞卢海林耿文涛孙兆群
电子技术与软件工程 2022年2期
关键词:单目级联测距

王壮飞 卢海林 耿文涛 孙兆群

(1.东华理工大学江西省新能源工艺及装备工程技术中心 江西省南昌市 330013)

(2.上海仪电人工智能创新院有限公司 上海市 200032)

我国是一个农业大国,生产了大量的农作物以及林果,但是农作物的种植和收获问题也一直影响着我国农业的产量,同时由于社会城镇化进程加快,大量的农村劳动力流失,农业作为支撑国民经济建设与发展的基础产业,如果仅靠人工采收,难以维持社会的稳定发展。自进入 21 世纪以来,随着我国科技的进步和国家政策的支持,农业也将逐步向智能化管理的方向发展。要想提升农业的产量,提高农业生产效率,将图像处理技术、机器视觉技术应用到植物采摘中,实现智能化管理,是非常有必要的。

同时,近年来学术界也开展了将图像处理技术和机器视觉技术相结合运用到水果采摘的研究,从而实现自动化和智能化的采摘。农业的智能化管理不仅减少了人员劳动、降低了劳动强度还能提高农作物和林果的种植、收获、采摘效率,大大减少所需的人力、物力和财力,基于上述背景智能化的水果采摘机器人应运而生。

为此,本文设计了一种采用图像处理技术、OpenCV级联分类器和单目视觉测距技术来辅助引导机器人进行水果采摘的检测与定位系统。

1 系统的总体设计

基于OpenCV的水果采摘机器人目标检测与定位系统的总体设计如图1所示。

图1:基于OpenCV的水果采摘机器人目标检测与定位系统的总体设计流程图

2 目标图像的处理

2.1 目标图像边缘检测

目标边缘检测技术通过提取出边缘,将目标图像与背景区分开来,对数字图像具有重要意义。边缘是指在图像中区域属性发生突变的部分,是不同物质属性区域的交接处,而图像的关键信息绝大部分集中在边缘,包含丰富的图像形状特征信息。因此,目标的边缘提取在图像处理中具有非常关键的作用。

对目标水果的识别检测操作是机器人精准采摘的前提与基础,而图像边缘特征提取是目标果实识别检测成功的关键。Canny算子是图像处理中最常用的边缘检测方法,其目标是找到一个最优的边缘。常规的边缘提取方法检测效果如图2所示。

由图2我们可以看出,常规的目标边缘检测算法边缘提取效果差,其他物质属性区域干扰大,无法准确将背景(树叶、枝杈、阴影等)与目标图像区分开,目标果实边缘识别轮廓模糊,从而导致系统的目标检测成功率降低,误差大大增加,不利于机器人进一步的采摘操作。

图2:常规的目标边缘检测方法效果图

为此,本文基于OpenCV采用K-means聚类算法与Canny边缘检测算法相结合的图像处理技术对目标果实进行边缘检测,在一定程度上增强了目标边缘轮廓的识别与图像特征的提取,获得了较为完整的目标果实边缘图像。改进后的目标边缘检测方法效果如图3所示。

图3:改进后的目标边缘检测方法效果图

2.2 图像的预处理

在进行图像处理之前,为了提高图像的质量需要对目标果实图像进行预处理操作,从而提高对目标的边缘检测精度,提升系统对目标果实的检测准确度。

本文对目标图像的预处理操作包括图像的灰度化与滤波降噪。图像灰度化即将彩色的目标原图转换为灰度图像,目的是为了提高图像质量;同时考虑到采摘机器人实际运作时会不可避免的干扰到所采集的图像质量,产生斑点噪声、椒盐噪声和高斯噪声等,因此本文采用基于OpenCV的中值滤波和高斯滤波的方法来有效降噪,保证目标图像的画质。

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声。而中值滤波对椒盐噪声和斑点噪声具有很好的抑制作用,通过用像素点领域内灰度值的中值来代替该像素点的灰度值。从目标水果图像的处理效果来看,该方法具有良好的降噪效果,使目标区域更加平滑。滤波效果如图4所示。

图4:滤波降噪处理效果图

2.3 Canny边缘检测算法与K-means聚类算法原理

2.3.1 Canny边缘检测算子

Canny边缘检测算子是John F. Canny于1986年开发出来的一个多级边缘检测算法,该算法能够很好的解决图像边缘检测问题,并且通过根据所要实现的特定要求调整其参数可以识别不同的边缘特性检测,从而适用于不同场合的图像边缘检测,

Canny的目标是找到一个最优的边缘检测算法,包括好的检测、好的定位、最小响应,其基本原理为根据对信噪比与定位乘积进行测度,从而得到最优化逼近算子。

2.3.2 K-means聚类算法

K均值聚类算法是一种迭代求解的聚类分析算法,因算法简介,效率高成为所有聚类算法中最广泛使用的一种。该算法可以指定划分类的个数,K由用户自行指定,元素众多的情况下处理效果很好。

K-means算法将数据集N中的n个样本划分为k个不相交的簇,将这k个簇用字母C(C,C,···,C)表示,n个样本用字母X表示,μ是簇C的均值向量,有时也称为质心,表达式为:

K-means算法是一个迭代优化算法,我们的目标是最小化平方误差E:

3 基于自定义的OpenCV级联分类器的目标水果检测

自定义OpenCV级联分类器包括两部分:训练和检测。其流程如图5所示。

图5:OpenCV级联分类器流程图

级联分类器原理AdaBoost是由Viola和Jones于2001在CVPR提出,是一种实时对象检测框架,其训练速度非常慢但检测速度非常快,由多个强分类器组合,OpenCV级联分类器使用Cascade Classifier来加载特征数据,检测特征对象。

训练分类器包括准备训练数据和运行训练程序。准备训练数据需要两类样本:负样本和正样本。负样本是指不包括目标果实的图像。正样本是待检测的目标水果的图像。OpenCV中有两个程序可以训练级联分类器,本文采用opencv_traincascade,因为其支持 Haar [Viola2001]和 LBP [Liao2007](Local Binary Patterns) 两种特征,并易于增加其他的特征。

OpenCV中的目标检测使用基于Harr和 LBP的级联分类。分类器使用AdaBoost算法,是一种迭代算法,通过对同一个训练集训练不同的分类器(弱分类器),然后把弱分类器线性组合起来,构成一个强分类器。只有通过分类器中所有级别,才会认为目标被检测到。这样的优点是当目标出现频率较低的时候(即目标水果在图像中所占比例较小时),筛选式的级联分类器可以显著地降低计算量,迅速判断出该区域没有被检测的目标水果。

4 基于单目视觉和OpenCV视觉库的目标水果定位

本文采用单目视觉测距技术和OpenCV库相结合的方法来实现对目标果实的测距定位。获取目标在三维空间的准确位置可以通过摄像头来实现,包括单目测距、双目测距、结构光投影3D成像、TOF 3D成像等方法。单目视觉测距即用一个摄像头对目标进行实时图像拍摄,待OpenCV级联分类器检测出该区域的目标果实后,利用单目测距原理对目标果实进行定位,计算所需要的数据包括相机的详细参数(焦距、像素、感光元件尺寸等)、目标的大小等。

单目视觉测距的理论模型可以近似考虑为小孔成像模型, 物体发出的光经过相机的光心,然后成像于图像传感器上,将其简化为更直观的二维平面模型,如图6所示。

图6:单目摄像机二维平面模型

中间通过的垂线是相机的主光轴,d是目标水果至摄像头的距离,f为相机镜头的焦距,H为被测物体的实际宽度(高度),h为物体在成像平面(感光元件)上的宽度(高度)。根据相似三角形公式可得:

f为单目相机镜头焦距,一般都是已知参数,H为目标水果的大小(直径),是可以实际测得的常量。感光元件上目标水果成像的大小h可以通过计算获得。假设所使用的相机是200w,像素捕获画面尺寸为1920*1080,感光元件尺寸为1/2.7'',宽高分别为5.8mm和4.3mm(估值),目标果实在画面上的像素宽高都为600 pixel,那么:

代码分别使用了h(x)和h(y)作为参数进行测距。关于感光元件尺寸和画面尺寸可以通过查看相机参数手册获得,而感光元件的宽和高可以通过其尺寸计算出来。得知了参数 f,H,h,就可以根据上文提到的相似三角形公式计算得出目标水果距摄像头的距离d。

不过以上考虑的是理想情况,前提是保证物像光线通过主光轴,相机是完全无畸变的,且被测物体平面要与相机成像平面保持平行状态。在这里本文使用的相机是无畸变工业相机(低程度畸变),如果是较为廉价的相机或者是广角镜头相机都会存在较大程度的画面畸变。准确来说这些情况属于无法完全消除的偏差。但是在所需测量精度不需要很精确的情况(偏差< 10% ~ 15%),以及成本受限的情况下,单目测距仍是首选方案。

只有目标水果与采摘机器人镜头的距离,还不能满足采摘要求,还需要得到被测物体在每一帧图像中的坐标。本文利用OpenCV视觉库使用Circle()函数把获取到的目标水果区域圈起来获得圆心的坐标,从而得到目标水果的完整坐标,为水果机器人的采摘奠定基础。同时考虑到镜头内如果检测到同时存在多个目标水果,应优先采摘距离最近的水果,先检测出镜头中所有的目标,再根据近大远小的原则,通过比较各目标区域的面积,最终定位到面积最大的目标,即是距离采摘机器人摄像头最近的目标水果。如图7所示。

图7:同时检测到多个目标水果

5 实验结果与分析

为了验证基于OpenCV级联分类器和单目视觉测距技术目标水果检测与定位系统的实际运行效果,采用MVHS1200万像素高速工业相机进行实验验证。

首先是对单个与多个苹果进行实验背景下的检测与定位测试,检测结果如图8、图9所示,主要为测试该系统的检测功能。该系统较能精准的检测到苹果的存在并将其标记出。当镜头中存在多个苹果时,也能排除背景的干扰,检测并在目标区域内标记出所有目标水果,证实了该系统具有较好的目标水果检测功能。

图8:单个苹果检测

图9:多个苹果检测

然后是在果园环境下对两个距离摄像机不同距离的苹果定位实验,测试该系统的定位功能,两个苹果的实际位置与该系统的定位坐标如表1所示,实际坐标表示镜头距离苹果的实际距离,系统定位坐标只填写检测的镜头与目标苹果之间的距离(分别使用h(x)和h(y)作为参数进行测距)。

表1:苹果实际坐标与系统定位坐标(单位:cm)

由表1可以看出,该系统单目测距精度和实际距离呈反比,与实际距离相比偏小,同时测量精度与画面尺寸(相机像素值)呈正比,如果采用更高像素的摄像机来定位测距会更加精确,定位误差范围在1cm左右,考虑到苹果大小(直径)在7cm左右,机器人采用机械手进行采摘,能够较好满足机器人的采摘要求,证实了该系统的可行性。

6 结论

本文采用K-means聚类算法和Canny边缘检测算法相结合的目标图像分割处理的方法,实现了基于自定义的OpenCV级联分类器的目标水果检测和基于单目测距技术结合OpenCV视觉库的目标水果定位的目标,并通过实验验证了该水果采摘机器人目标检测与定位系统具有较好的检测与定位功能,目标水果检测成功率与测距误差在允许范围内,能够满足机器人的要求,为下一步的采摘奠定了基础。

猜你喜欢
单目级联测距
类星体的精准测距
一种单目相机/三轴陀螺仪/里程计紧组合导航算法
单目SLAM直线匹配增强平面发现方法
浅谈超声波测距
级联LDPC码的STBC-OFDM系统
基于CAD模型的单目六自由度位姿测量
基于级联MUSIC的面阵中的二维DOA估计算法
基于PSOC超声测距系统设计
基于单目立体视觉的三坐标在线识别技术研究
相对差分单项测距△DOR