基于机器视觉的水表抓取系统①

2020-03-18 07:54丘海斌王孝顺
计算机系统应用 2020年3期
关键词:水表坐标系阈值

丘海斌,陈 丹,王孝顺

(福州大学 电气工程与自动化学院,福州 350108)

水表广泛用于日常生活与工业当中,水表作为计量收费的依据属于国家强制检定的工作器具,必须经过严格的检定并检定合格才能投入使用.所以生产水表的企业或计量部门需要对水表的示值误差按照相关部门制定的规程进行性能检定.传统的水表检定,主要依靠人工来对水表进行装夹、校验、计算记录和卸表工作,通过人工检定的方式不可避免的存在着工作量大,操作过程中存在较大的人为误差,效率低等问题.随着工业的发展,各种生产线自动化水平的不断提高,为满足生产与市场需要,提高生产效率,降低劳动强度,将传统的人工水表检定线改造成自动化流水线式检定线已成为一种必然趋势.针对水表检定线的自动化改造,有许多学者进行了相关的研究,在水表自动读数方面,现主要有基于水表梅花针转过的齿数计数[1,2]和指针识别获取水表读数[3,4],都有不错的效果,在自动水表检定装置方面,周兵等[5]提出了一种静态容积法水表自动检定装置,詹志杰等[6]提出一种基于流量时间法、活塞为标准器的家用冷水水表示值误差动态全自动检定方法.但这些研究主要集中在水表的流量检定和校验上,而在水表的上料,装夹以及卸表工作鲜有研究.

目前,整个水表检定过程中还存在着许多需要人力的重复操作如水表的上料、装夹和分拣等,在这些阶段采用工业机器人代替人工进行工作可以有效减少人力需求,提高工作效率,并进一步增加检定线的自动化程度,实现水表检定真正意义上的全自动检定.当前,国内已有了全自动电表检定线,能实现机器人的自动挂(摘)表[7].然而,此类的检定线并不能简单地应用于水表检定线上,原因有多方面:一是电表具有统一的国家标准,且形状是规则的立方体,而水表没有统一的国家标准,且形状也不规则;二是在水表检定过程中,流经水表的水流是有向的,并且多个水表需要串联连接检定,这要求机器人在抓取过程中要能准确判断水表的方向和姿态;三是在水表检定流程上需要抓取的环节有多个,背景不一且较为复杂.由于检定线上需要检定的水表型号通常有多种,每种水表的参数又有所差别同时后续的检定也需要进行型号的区分以放置到对应的检定装置中,因此需要对水表进行分类抓取.然而,水表之间有差别的同时又具有较大的相似性,这对于基于人工设计特征的模式识别方法是比较困难的问题.针对上述问题,本文设计了一个基于深度学习网络YOLOv3[8]的水表抓取系统,该系统通过YOLOv3 网络进行目标水表检测,获得水表的类型和相应水表位置,再进行水表的位姿检测获取水表抓取点的像素坐标和姿态角,最后驱动机器人进行抓取、调整姿态并放置.本文的水表抓取系统在进行抓取时不需要使用特定的托盘装载水表,可以实现机器人在不同背景下对流水线上不同型号水和不同姿态水表进行分类抓取与位姿调整,抓取成功率较高,在一定条件下受外部环境影响小,可靠性高.

1 水表抓取系统设计

水表抓取系统的框图如图1 所示,整个系统分为3 个部分即视觉检测识别部分、机器人定位部分和机器人控制部分.视觉检测识别部分使用CCD 摄像头获取检定流水线上的图像,为减少检测时间,将原图分辨率改为416×416 输入到训练好的YOLOv3 的网络模型获取水表区域坐标与示数区域坐标,根据得到的坐标将相关区域分割出来,其中水表区域用来计算抓取点即水表表盘圆心的坐标,示数区用于检测其长边所在的直线,根据示数区位于出水口方向且与水表横向垂直的特性,结合得到直线再结合表盘圆心坐标就可以确定水表的位姿.机器人定位部分则通过手眼标定得到相机和机器人坐标系的旋转矩阵和平移矩阵,进而将圆心的像素坐标和角转化为机器人坐标系下的坐标与姿态.机器人控制部分负责驱动机器人移动并进行水表的抓取,并根据水表需要放置的位置控制机器人移动到指定位置进行放置.

2 YOLOv3 模型

2.1 YOLOv3 的网络结构

YOLOv3 为YOLO[9]算法的第3 个版本,属于One-Stage 检测算法,这类算法将检测问题转换为回归问题,将物体的定位和分类放在一个步骤完成,直接在输出层回归边界框的位置及其所属的类别,因此在检测速度上获得了较大的提升.YOLOv3 在YOLOv2 的基础上进行了改进,YOLOv3 网络结构如图2 所示,在特征提取方面,Y O L O v 3 提出了新的特征提取网络Darknet-53,整个特征提取网络完全由卷积层组成,没有用到池化操作,同时借鉴了ResNet[10]的思想添加许多的残差模块防止训练时梯度爆炸或消失以减少训练难度.在预测方面,YOLOv3 中抽取了3 个不同尺度的图像特征进行多尺度的预测,分别对特征图大小为13×13、26×26、52×52 的3 个尺度进行二倍的上采样融合并在每个尺度的特征图上独立做检测,YOLOv3 中将图片按特征图的大小划分为N×N个单元格,每个单元格需要预测3 个边界框(bounding box),最后每个尺度输出的张量为N×N×[3×(4+1+C)],包括4 个边界框的信息,一个置信度得分,C个预测的类别数.

图2 YOLOv3 的网络结构

2.2 数据处理和anchor 参数设定

YOLOv3 在检测过程中沿用了YOLOv2 中使用的anchor box,anchor box 的初始参数会直接影响网络的学习速度和检测精度,需要根据自己的数据集重新聚类分析.在聚类算法中,K-means 具备简洁快速,易于实现的优点[11],因此本文使用K-means 对数据集重新进行聚类得到适合的anchor box.

3 水表的位姿检测

3.1 水表抓取位置检测

本文采用真空吸盘作为水表的抓取工具,为使抓取时可以容许最大误差,因此以水表表盘的圆心做为抓取点,计算圆心像素坐标的检测流程如图4 所示,相应图片处理结果如图5 所示.

图4 圆心检测的算法流程图

图5 水表图片处理结果图

3.1.1 水表区域提取与灰度化

经过YOLOv3 检测后可以得到水表区域的坐标,经过转换可以将水表区域从原图提取出来处理,避免多余背景的干扰,提取后进行灰度化处理.式(1)的灰度化算法是采用根据人眼对光谱适应能力得到的一组灰度化系数[12],如下:

3.1.2 中值滤波

由于原始图像中存在较多的噪声,需要对图片进行滤波处理.中值滤波采用像素点邻域灰度值的中值来代替该像素点的灰度值,相比于其他滤波算法在去除噪声的同时可以保留图像的边缘细节,能够避免噪声对边缘检测造成较大的影响,因此在本文中采用中值滤波对图片进行降噪处理.

3.1.3 自适应阈值

在图像处理应用中阈值化操作是一个很常用的处理方式,本文中采用的阈值方法是局部自适应阈值,每个像素点的阈值根据点(x,y)局部邻域块的高斯加权和来确定二值化的阈值T(x,y),确定阈值后根据式(2)进行二值化,d(x,y)为阈值化后点的像素值,src(x,y)为阈值化之前对应点的像素值.

(2)学校应加强校园安全管理,注重欺凌行为的预防。一方面,学校要加强宣传工作,让学生了解相应法律及欺凌行为的危害,从思想上降低学生实施欺凌行为的冲动。学校可以采取多样化的宣传方式,通过图片、视频、戏剧化表演等方式增强教育的趣味性,使学生切实感受到欺凌的危害性;另一方面,学校也要不断寻求新的管理方式,消灭校园监控管理盲区,加强对校园的安全巡视工作,课间时段要鼓励班主任或任课教师走进教室及走廊,及时了解学生及班级情况。

3.1.4 连通小区域的去除

经过阈值化后存在有许多连通小区域,为避免对之后图片处理造成干扰需要去除多余的黑色的小连通区域,本文通过指针访问像素,对图像中各个连通区域进行标记,统计各个连通区域的像素总数并与给定阈值相比,小于阈值则将此连通域像素值全部变为255,大于阈值连通域像素值不变化.

3.1.5 椭圆拟合

由于水表在不同位置会导致图像中水表表盘不为标准圆形,所以本文使用椭圆拟合寻找表盘圆心,椭圆的表达公式如式(3)所示,算法中通过式(4)~式(8)转化为用圆心(x0,y0),长短轴a,b,旋转角α及长短轴比ρ等5 个参数唯一表示.

从图5 中第5 张图片中可以看出经过连通小区域的去除后表盘圆形轮廓保存的比较完整,因此本文利用轮廓的点集进行拟合得到表盘所在的圆,但在某些情况下轮廓会发生断裂不连贯,一个轮廓被分为多个点集以致拟合不出所需要的圆如图6(a)所示,因此本文对其进行了改进,改进后椭圆拟合的结果如图6(b)所示,椭圆检测使用的具体过程如算法1.

?

图6 直接拟合和改进后的拟合效果对比图

3.2 水表姿态的检测

本文利用水表示数区所在一侧为出水口方向且示数区的横向与水表整体位姿基本是垂直的特性来判断水表的姿态,具体流程如图7 所示.

图7 水表姿态判断流程图

3.2.1 边缘检测

通过边缘检测可以更好的将图像中的边缘信息表示在图片中,更方便于下一步的直线检测,系统中采用Canny 算子进行边缘检测,先使用式(9)的高斯函数进行图像的去噪、平滑,再使用一对卷积阵列计算水平和垂直方向的梯度分量Gx和Gy并用式(10)与式(11)计算梯度的幅值G和方向θ,最后使用非极大值抑制排除非像素边缘保留候选边缘,并根据双阈值从候选边缘点中寻找最终的边缘点,Canny 算子使用了两个滞后阈值其中低阈值用于边缘连接,高阈值用于控制边缘初始段,Canny 算子的高低阈值比一般在2:1~3:1 之间.

3.2.2 直线检测与筛选

本文采用累计概率霍夫变换对直线进行检测,霍夫变换中选择使用极坐标系来表示直线,将图像上的点映射到极坐标系通过式(12)表示,因此可以通过检测交于一点的曲线数量是否超过阈值来判断是否检测到了直线,累计概率霍夫变换是对霍夫变换的改进,不需要对每个点都进行追踪,在一定范围内进行霍夫变换,对于随机的前景点,当曲线满足最小阈值时将直线找出并将直线上的点删除,记录起始点和中点判断是否满足最小长度,若满足记录下对应参数.累计概率霍夫变换得到的参数为检测到线段的端点坐标,为便于直线筛选姿态角的判断,本文将其转化为y=kx+b直线方程来表示所在的直线.检测出来的直线通常不止一条,算法中根据示数区拟合的两条边缘直线平行进行筛选,并从中选取一条得到最后所需直线.

3.2.3 姿态角的计算

经过上述的检测后,可以得到水表的表盘圆心(x0,y0)与示数区直线方程,如图8 所示,uov表示像素坐标系,箭头垂直指向直线位置,L表示实验时图像姿态角为0°时示数区直线的所在的位置,L1和L2表示两种不同姿态时检测直线所在的位置,此时水表的姿态方向为图中箭头所指方向,结合机械臂第六轴的旋转方向,将角度θ范围限制在0°到180°,以0°姿态角为标准线,左边为负角度,右边为正角度,设在图8 中当水表两种姿态与标准线的夹角分别为θ1和θ2,则水表的姿态角分别为θ1和-θ2.所以在求取角度θ时只需要联立圆心与直线方程就可以计算出姿态角θ.

图8 像素坐标系下的旋转角度示意图

4 机器人定位与抓取

由椭圆拟合后可以得到抓取点的像素坐标,还需要通过标定将其转化为机器人坐标系下的坐标以实现机器人对目标的抓取.其中像素坐标和相机坐标系关系可由式(13)表示,式中(u,v)为像素坐标系中的坐标,Xc,Yc,Zc表示相机坐标系下的坐标,其中K为相机内参,本文中利用文献[13]标定法对相机进行标定.实验中相机以眼在手外的方式固定,因为机器人和相机均固定,所以由相机坐标系到基座标系的变换矩阵T可以唯一确定.相机坐标系到基座标系的坐标转换关系可以用式(14)表示,其中R为旋转矩阵,t为平移矩阵,Xb,Yb,Zb为机器人基座标系下的坐标.本文利用最小二乘法来计算两个坐标系的变换矩阵,在图像中选取系列的点,计算这些点在相机坐标系下的坐标pi,并控制机器人末端移动到指定的点获得一一对应的基座标qi,将其建模为式(15)的形式,再利用文献[14]介绍的SVD(Singular Value Decomposition)求解方法对式(15)进行求解得到相机到基座标的旋转矩阵R和平移矩阵t.得到变换矩阵后就可以计算出在机器人基坐标系下抓取点的坐标,通过正运动学可以求解出末端手爪要到达的位置,再由逆运动学求解6 个关节角并驱动机器人进行抓取.

5 实验结果与分析

5.1 实验平台

实验平台如图9(a)所示,硬件部分包括一台ABB1200 型六自由度机器人,一台500 万像素的CCD 工业相机,其拍摄的图片尺寸为2588×1940,一台通用计算机,其使用的CPU 为i7-8700,GPU 为1080Ti,机器人实际抓取图像如图9(b)所示.软件开发环境为Visual Studio 2013,并配置有CUDA 库、cuDNN 库和OpenCV 图像处理库.

图9 实验平台和水表抓取图像

5.2 检测结果

将水表摆放在相机视野内,使用YOLOv3 模型可以准确检测出每个水表的类别以及水表、示数区的位置,检测结果如图10(a)所示,其中框为水表的位置区域,框的左上方为物体的类别和置信度,水表的位姿检测结果如图10(b)所示.

5.3 抓取实验

为验证YOLOv3 在水表抓取系统中的有效性,实验中与两种比较典型的深度学习网络Faster RCNN[15]和SSD(Single Shot multibox Detector)[16]进行比较,依次对3 种水表进行抓取,每种水表抓取20 次,以将水表抓取到指定位置并且将水表方向旋转到姿态角为0 的状态视为成功抓取,其他情况则视为抓取失败,抓取结果如表1 所示.

从表1 中可以看出使用Faster RCNN 和YOLOv3网络的抓取效果相对较好,但Faster RCNN 的检测时间要明显要长于YOLOv3.使用SSD 网络的抓取成功率比较低,通过分析SSD 检测的结果发现SSD 对于水表示数区域识别效果比较差,会出现识别不全、错误的情况导致姿态角计算错误出现抓取失败的情况.综合抓取效果和检测时间YOLOv3 比较适用于本文的抓取系统中.为进一步验证水表抓取系统的可靠性,本文分别在一般亮度环境下、偏暗环境、偏亮环境和两种不同背景中对3 类水表分别进行抓取实验,实验环境如图11 所示,每类水表单独连续抓取20 次,并在有其他水表干扰的情况下连续抓取10 次,判定抓取成功条件与上述实验相同,抓取的结果如表2 所示.

图10 检测结果图

表1 使用不同网络进行水表抓取的结果

从表2 中的实验数据可以看出,系统可以实现在不同的背景下进行水表抓取,同时在光照范围一定的条件下,受到环境光的影响小.但过暗和过亮也会影响系统的检测,系统识别率会降低无法正常工作.实验数据中水表3 的抓取成功率更低,主要原因是因为水表表盘相比其他两个水表较小有个突出的部分,抓取时吸盘碰到突出部分闭合不紧导致抓取失败.在实际的水表检定线上,检定环节需要检定水表的最大流量、分界流量与最小流量等,所需要的时间较长,所以对于其他环节执行速度上要求不高,本文的水表抓取系统能够以较快的速度识别水表并进行抓取,能够满足实际水表检定线上的水表抓取需求.

图11 不同的抓取环境图

表2 不同环境下水表抓取结果

6 结语

本文设计了一个基于机器视觉的水表抓取系统,利用该系统可以实现对检定线上的水表进行型号识别并准确抓取.系统通过YOLOv3 网络模型能准确的实现水表型号的识别以及位置的检测,得到水表型号后可以防止误抓也能够使系统可以根据不同型号设置相应的参数减少误差提高抓取的成功率.实验结果表明,本文的设计的抓取系统受到背景和光照的影响小,3 类水表都有较高的抓取成功率,能够有效可靠的完成自动化检定线上水表的抓取.

猜你喜欢
水表坐标系阈值
独立坐标系椭球变换与坐标换算
改进的软硬阈值法及其在地震数据降噪中的研究
土石坝坝体失稳破坏降水阈值的确定方法
基于小波变换阈值去噪算法的改进
改进小波阈值对热泵电机振动信号的去噪研究
水表检定装置不确定度分析计算的相关思考
防冻水表
坐标系背后的故事
三角函数的坐标系模型
求坐标系内三角形的面积