基于机器视觉的机械表走时精度测量

2020-12-30 08:45曹思佳代扬余洪山李斐孙炜
湖南大学学报(自然科学版) 2020年12期
关键词:中心线读数分针

曹思佳,代扬,余洪山,2†,李斐,孙炜

(1.湖南大学电气与信息工程学院/机器人视觉感知与控制技术国家工程实验室,湖南长沙 410082;2.湖南大学深圳研究院,广东深圳 518057)

机械表作为一种具有摆轮游丝振荡系统的计时工具,它的走时精度每时每刻都在变化之中,根据机械手表评价细则,高精度的机械手表需满足《高精度机械手表SQL/HSTU 009-2017》[1]标准才可获得认证.为了保证手表的走时精度,每个手表出厂之前都需要进行16 天的走时测试,即在连续16 天的走时中,每天通过读取手表与标准计时的走时差来计算手表精度,利用手表在不同位置走时的不同的精度误差,可以纠正手表的快慢趋势.目前这一步骤主要用人工方式来操作,该方式每天仅能检测200~300 只成表,同时检测的准确率易受工作人员的熟练程度和工作状态影响,效率低,人力成本高.而机械手表作为一种中高端消费型的手表,它的市场份额随着我国城镇居民人均可支配收入的持续增长,人们的消费观从实惠型到享受型的转变而逐渐提高.根据预测,截止到2020 年,中国家庭的年均可支配收入水平将大幅提升,这将带动中、高端腕表销售增长.未来几年钟表行业将进入平稳快速发展阶段,对高精度的机械手表的需求量也将越来越高.所以,研究一种快速、精确的自动化机械表读数检测技术能够大大提升企业的生产速度,提高精度机械手表的出品量.

目前,国内外的研究主要集中在仪表识别上,Sablatnig等人[2]首次用hough 变换实现了水表的读数识别,Kyong-Ho Kim等人[3]提出了用阈值与区域分割相结合的方法来分割指针区域,确定指针读数,这种方法受光照的影响较大.佘世洲等[4]利用ORB算法对表盘区域进行倾斜校正,通过计算表盘刻度线向心性得到指针旋转中心,该方法只适用于刻度为线段的仪表.华雪[5]利用轮廓跟踪法检测表盘轮廓,采用LSD算法检测刻度线段,根据指针到刻度线的距离来计算指针读数,这种方法要求刻度线均匀分布,不适用于复杂的刻度线.汤亮等[6]利用边缘提取得到表盘轮廓,将圆弧形的表盘转换成矩形,通过图像拼接处理构建无指针图像,来确定指针位置和仪表读数.该方法不适用于多指针的仪表.上述方法均受仪表指针和刻度的限制,不适宜用于机械表.胡彬[7]等人提出了基于KAZE 特征关键点的表盘区域匹配方法,采用概率霍夫变换拟合直线,根据角度计算出指针读数.该方法主要用于室外环境远距离下的仪表读数识别,而机械表的检测主要工作在室内环境.李巍等[8]使用机器学习提取图像的HOG 特征,通过SVM 分类器对窗口是否含有仪表做判断.利用图像预处理,霍夫变换检测指针位置.该方法对参数调节和函数的选择敏感.侯忠辉等[9]利用改进的双阈值霍夫变换突出图像特征信息,确定指针所在的区域,此类方法参数较多,较为复杂.孙慧媛等[10]利用二维码与仪表之间先验的几何位置关系快速地提取图像中表盘所在的区域,根据仪表的类型选择对应的图像处理算法.这种方法的抗干扰能力不强,在保证仪表识别的基础上还得保证二维码识别的准确性.

上述各方法适用于单指针式仪表,由于机械表的刻度图案复杂且指针种类众多使得指针重合的情况较为常见,针对此类现象,本文设计了一个专用于采集机械表图片的实验台和用于机械表图像处理的软件系统,可以自动识别出机械表的读数并且将机械表读数存入数据库,经过16 天的走时测试后,通过计算机械表的读数偏差,判断该机械表是否达到了高精度机械表的要求.

1 总体模块设计

1.1 总体方案

图1 总体方案图Fig.1 Entire scheme

总体方案图如图1 所示.第一步,在图像采集模块中,利用搭建的实验平台对机械表图像进行采集,然后将采集的图片送入测量线提取模块.第二步,在测量线提取模块中,依次进行指针和各区域提取、表盘中心提取以及指针中心线检测等实验步骤.在对指针和各区域进行分割提取时,由于指针的多样性和重叠性,利用传统的分割方法较为困难,所以本文在mask-rcnn[11]的基础上进行改进,对指针和各区域进行了分割.在确定表盘中心时,利用canny 算子对表盘进行边缘提取,并且确定各连通域的质心,根据各质心到12 点位与6 点位之间连线中点的距离关系,筛选出刻度质心,然后用刻度质心拟合表盘内圆,从而确定表盘中心的位置.最后使用RANSAC结合最小二乘距离法提取了指针的中心线.其中,12点位中心和表盘中心的连线为基准测量线,指针中心线为指针测量线.第三步,在读数测量模块中,通过计算指针测量线相对于基准测量线之间的旋转角来计算机械表读数,同时为了提高读数测量的精确度,本文根据各指针之间的角度关系,提出了误差校正原则.

2 各模块方案设计

2.1 图像采集模块

采集图片的实验台由相机、镜头,光源组成.采集图片时,将机械表置于表盒内,将表盒固定在卡座上,用光源进行照明,由相机进行拍照.相机为500万CMOS 相机,镜头为百万像素,镜头距离表盘为340 mm,光源距离表盘110 mm,打光主视图如图2所示.本文中用到的机械手表为白表盘,为了使指针和背景分离,增强指针与表盘之间的对比度,避免反光,需要进行打光测试.由于方形白色光源的漫射光可以从低角度向工件的四个方向照射,避免使用低角度环形光时产生的不均匀照明,同时可以检测角轮廓和防止眩光.所以本文选择了方形白色光源来对机械表盘进行打光,此时指针与背景的对比度最明显.现场打光图如图3 所示.

图2 打光主视图Fig.2 Lighting main view

图3 打光现场图Fig.3 Lighting scene

2.2 测量线提取模块

2.2.1 指针区域提取

在指针区域的提取方面,陈彬等人提出了中心投影法[12],即通过指针图像向中心点投影确定指针位置.李治玮等人提出了最大灰度相减法[13],对两幅图像运用灰度比较法获得一个无指针的表盘指针参考图像,将实测图像与参考图像作对比获得无表盘的指针图像.戴亚文等人提出了基于灰度信息的多特征模板匹配法[14],在步长法、圆周灰度检测法、哈夫变换法的基础上进行模板匹配来寻找指针.Sablating 等人[15]提出了仪表加压法,通过加压使得指针发生偏转,从几何特征检测处置指针位置.Belan.P.A[16]等采用积分法标定指针位置.

中心投影法的使用前提是表盘中心必须定位准确,否则会极大影响读数精确度.最大灰度相减法的先验条件多且严格,抗干扰能力不强.模板匹配法在复杂的仪表表面使用时需要分别使用不同的模板,较为复杂.几何特征法和积分法在光照较为复杂的情况下均不适用.现有的指针定位技术大多都是基于这些方法上的改进,或联合使用.

机械表由于款式和设计的差别,指针的类型和表盘花纹多样,当指针位于不同位置时,花纹对指针的干扰各不相同.机械表中多个指针的存在使得指针重合的情况较为常见,采用上述指针定位的方式,难以准确地定位手表指针,为此本文引入卷积神经网络对指针区域进行分割,由于mask-rcnn 方法运算速度快,识别精度与目标切割效果较好,具有保持特定目标良好的轮廓信息的作用,因此本文在mask-rcnn 的基础上进行了指针的分割提取.

数据集的制作上,本文用Labelme 软件对分割区域进行标记,所述标记为用多边形框框选出机械表中需要分割的指针和刻度,得到掩膜文件.分割的种类为1+5 类,分别为背景、时针、分针、秒针和12点位、6 点位.机械表图片大小设置为512*512,在GTX1060GPU 上进行训练.训练集为不同位置,不同光照条件下采集的306 张机械表图片和相对应的掩膜标记,测试集为76 张未标记的机械表图片.训练向着减小损失的方向进行.训练完毕后,利用训练好的最优模型进行了各区域的分割提取.

本论文在FCN[17]分支中,将原有的4 层卷积神经网络改成了8 层卷积神经网络,并且将第三层和第八层提取到的特征进行了融合,使得最后一张特征图同时具备了底层的细节特征和高层的语义特征,改进之后的网络与原网络对比如图4 所示.如表1 所示,经过测试,改进的FCN 分支与不同的底层网络结合均增加了分割的准确率.

图4 改进的mask-rcnn 网络图Fig.4 Improved mask-rcnn

表1 mask-rcnn 改进效果Tab.1 The effect of improved mask-rcnn

图5 中,(a)(b)(c)(d)机械表均以12 点位、3点位、6 点位、9 点位依次朝上摆放,图(e)(f)(g)为光照强度依次递减的分割结果,图(h)为指针重合时的分割结果,图(i)(j)(k)(l)是用模板匹配法的分割结果,所用检测图片为图(e)(f)(g)(h)中机械表的灰度图.从图5 可以看出,文中所述方法可以分割出不同光照强度和不同位置下的指针区域,而传统的模板匹配法漏检、错检概率较高.

图5 区域分割图Fig.5 Region segmentation map

2.2.2 表盘中心的确定

首先,对表盘进行边缘检测,找到各连通域,其次,确定各连通域的质心.刻度线的质心离表盘中心的距离应该大于等于12 点位与6 点位连线的中心,并且差值不超过15 个像素值.根据该条件找出刻度质心,各刻度质心的拟合圆应为表盘内圆,拟合圆心为表盘中心.

各区域质心的确定如下.

首先计算各连通区域的零阶和一阶矩.

零阶矩:

只有0 或1 两个取值,当前点为黑色时取0,为白色时取1.

一阶矩:

然后确定区域质心为:

拟合圆和圆心如图6 所示.

图6 表盘中心的确定Fig.6 Determination of the center of the dial

2.2.3 中心线提取

为了得到指针所在的直线,在分割出来的指针区域上进行了中心线的提取.常见的指针均为直线型指针,可以用hough 变换和最小二乘法来检测指针直线.由于机械表的指针较粗,且带有一定的弧度,hough 变换法和最小二乘法均不适用.由于指针都是对称的,本文提出了用RANSAC 结合最小二乘距离法[10]来进行中心线的拟合.对于对称图形上的各点,离中心线的距离应该是相等的,为了得到中心线的方程,需要使各点离中心线的距离的平方和最小.最小距离直线拟合法实际上是对最小二乘法的改进,最小二乘法的拟合原则是以残差的平方和最小,即使得各点的纵坐标与直线上对应的纵坐标之差的平方和最小.

最小二乘样本回归模型:

所以

其中ei为样本(Xi,Yi)的误差.

平方损失函数为:

最小距离直线拟合法将平方损失函数改为点到直线的距离之和的平方:

所以,可以通过最小化Q 来确定这条直线.

由于最小二乘法对异常值比较敏感,为了减小噪声的干扰,采用RANSAC 算法对最小距离直线拟合法进行改进.RANSAC 通过反复选择数据中的一组随机子集来达成目标.被选取的子集被假设为局内点,局内点为适应当前直线模型的数据,能近似地被当前直线模型所通过.中心线的检测步骤如下:

1)用假设的局内点去拟合直线;

2)用直线模型去测试其它点,如果某个点也在直线上,则该点也是局内点;

3)如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理;

4)再用所有假设的局内点去拟合直线,得到新的直线方程;

5)最后,通过估计局内点和模型的错误率来评估直线;

6)上述过程重复执行,直到找到最好的中心线.

设置生成模型所需的最少样本数为50,最大迭代次数为1 000.

图7 中,图(a)为Hough 直线检测检测到的错误中心线,图(c)为在拟合较粗指针中心线时,最小二乘法和RANSAC 法的错误拟合直线.图(b)(d)为RANSAC 最小二乘距离直线拟合的中心线图.

图7 各测量线拟合图Fig.7 Fitting each measurement line

可以看出,文中所述方法可正确拟合指针中心线,拟合出的测量线如图7(b)所示,图中12 点位中心与表盘中心的连线为基准测量线,各指针中心线为指针测量线.

2.3 读数测量模块

2.3.1 指针旋转角计算

指针的方向由指针的中心相对表盘中心的位置来确定.

为了计算读数,需要得到基准测量线(以下简称p1)与指针测量线(以下简称p2)之间的旋转角φ,如图8 所示,该旋转角指的是从向量p1开始,顺时针旋转到向量p2时,所转过的角度,范围是0~360°.

图8 旋转角计算Fig.8 Rotation angle calculation

首先求出两向量的夹角:

根据两向量的叉乘,判断两向量的位置关系.

若p1×p2<0,则p2在p1的顺时针方向,旋转角即为夹角θ.

若p1×p2>0,则p2在p1的逆时针方向,旋转角即为360°-θ.

若p1×p2<0,则p1与p2共线,同向时旋转角为0°,反向时旋转角为180°.

2.3.2 读数计算

机械表的读数与指针的位置和12 点位的位置相关,本文通过计算指针中心线相对于基准测量线的旋转角来计算指针读数.角度示意图如图9 所示.

角度与读数的换算关系如下:时针每走360°,用时12 h,分针每走360°,用时60 min,秒针每走360°,用时60 s.所以时针的走速为30°/h,分针的走时为6°/min,秒针的走速为6°/s.已知旋转角,可求得对应的时间如下:

式中:h、m、s 分别为时针、分针、秒针的读数,单位分别为h、min、s;φh、φm、φs分别为时针、分针、秒针相对于基准线的旋转角,单位为(°).

图9 角度示意图Fig.9 Angle diagram

2.3.3 误差校正

机械表盘中,分针每秒走的度数为时针每秒走的度数的12 倍.

时针走6°时,分针走了72°,分针走6°时,秒针走了360°.

误差校正原则设定如下:

式中:hr、mr为指针超过上一刻度的角度数.

当hr≥24 时,分针的角度应该在288°与360 度之间,如果此时测得的分针角度在0°与120°之间,则时针读数加1;

当hr≤6 时,分针的角度应该在0°与72°之间,如果此时测得的分针角度在270°与360°之间,则时针读数减1;

当mr≥5 时,秒针的角度应该在300°与360°之间,如果此时测得的秒针角度在0°与60°之间,则分针读数加1;

当mr≤1 时,秒针的角度应该在0°与60°之间,如果此时测得的秒针角度在300°与360°之间,则分针读数减1.

3 实验结果

图10(a)(b)(c)(d)中的机械表均以12 点位、3点位、6 点位、9 点位依次朝上摆放,(e)(f)(g)(h)为光照强度依次递减的机械表图片.从图10 可以看出,本文所用方法具有良好的适用性,能识别出各类光照、各个位置下的表读数.

图10 读数测量效果图Fig.10 The effect of reading measurement

图11(a)(b)为统一光照条件下的同一机械表盘图,图(a)为彩色图,图(b)为灰度图.图(a)为采用本论文所述方法检测的指针重合的机械表测量结果,图(b)为采用传统模板匹配法测量的机械表读数.可以看出,本文所述方法准确地测量出了机械表的读数,而传统模板匹配法由于未找到重合的时针和分针,导致读数出错.

图11 读数测量对比图Fig.11 Reading measurement comparison

为了保证机械表的精度,每个机械表需要经过16 天的走时测试,每天同一时刻对机械表的读数进行测量,表2,表3,表4 分别列出了第1 天,第2 天,第8 天的测量结果,将得到的读数存入数据库中,与标准计时做对比,得到日差,根据《高精度机械手表SQL/HSTU 009-2017》计算各指标,满足各指标要求的即为精密手表.

表2 第1 天测量结果Tab.2 Measurement results of Day 1

表3 第8 天测量结果Tab.3 Measurement results of Day 8

表4 第15 天测量结果Tab.4 Measurement results of Day 15

表5 为经过16 天的走时检测后,各精度指标的计算结果.可以看出1 表、2 表、3 表均为不合格机械表.文中所测机械表均为一类机械表,在对其他类别机械表进行精度测量时,可在本文数据集上加以扩充进行测量.

表5 各精度指标的计算结果Tab.5 Calculation result of each precision index

4 结论

本文创新性的将深度学习方法运用在机械表的走时检测中,相比于传统的模板匹配法,效果更优良,同时,根据12 点位和6 点位的中点位置,筛选出刻度质心,拟合出表盘内圆,准确地确定了表盘中心,并且在中心线的拟合上,用RANSAC 对最小距离直线拟合法进行了改进,最后针对机械表的读数测量提出了误差校正原则,在一定程度上降低了误差,提高了精度.

猜你喜欢
中心线读数分针
怎么做能更好地认识分针和时针运动的联动关系
(二年级)怎么做能更好地认识分针和时针运动的联动关系
“0”的读法和要领
钟面上的数学问题解法
浅析某船重要设备底座与基准平台偏差的纠正措施
关于游标卡尺读数问题易错点的剖析
树叶竞技场
停机后汽缸温差大原因分析及处理
钟表上的数学问题
仪器工作原理决定了仪器的读数规则