APP下载

基于目标纹理的机器视觉转角检测方法

2020-09-09魏东辰严小军惠宏超

导航与控制 2020年3期
关键词:浮子端面径向

魏东辰, 严小军, 惠宏超

(1.超精密航天控制仪器技术实验室,北京100039;2.北京航天控制仪器研究所,北京100039)

0 引言

在工业、军事、航天、航空以及航海等诸多领域,都具有对特定目标进行姿态角度检测的需求[1]。基于机器视觉的姿态角度检测方法具有系统易于搭建、非接触式、检测精度高、检测效率好等优点,已成为物体姿态角度检测的主流方法之一,主要包括选用外部标志作为待测特征的检测方法和基于待测物体自身特征的检测方法。选用外部标志作为待测特征的转角检测方法的基本原理是将线段[2-3]、棋盘格[4]等特征标志固定在待测物体上,通过计算特征标志的旋转角度,得到待测物体的旋转角度。这类方法可以达到角分级的检测精度,但提高了检测系统的工程复杂度,且应用场景有限。基于待测物体自身特征的转角检测方法应用场景较广,其基本原理是通过提取待测目标的自身特征完成待测物体的转角检测[5-6],此类方法的难点在于如何高效、准确地提取待测目标上的特征。因此,根据待测特征的类型、分布情况,需要单独开发针对性的检测算法才能达到较高的检测精度。

浮子组件是液浮陀螺中的一种关键组件,形状类似于圆柱体。由于材质不均匀、加工精度、装配精度等多个因素的影响,会导致浮子的质心与浮心不重合,产生静不平衡量,降低液浮陀螺的工作性能[7]。浮子在浮液中的径向滚转角是反映浮子静不平衡量的主要因素,目前采用人工视觉检测,有经验的检测师傅最高能达到1°~2°的检测精度,存在检测结果和实际结果有一定差别、人的主观性对检测精度影响较高等问题,亟需一种检测精度更高、重复性更好的检测方法。

目前,浮子的生产流程已经固化,不能在浮子上添加标志物。因此,文献[2]~文献[4]采用特征标志作为待测特征的方法不适用于浮子的转角检测,且文献[5]无法检测圆桶形物体的滚转角,文献[6]需要预先对待测物体建立三维模型库,增加了检测系统的复杂度。鉴于目前已有方法在浮子径向滚转角检测场景下的不足,本文提出了一种基于浮子自身端面纹理特征的机器视觉转角检测算法。该算法首先通过椭圆聚类将包含特定纹理特征区域的感兴趣区域从整幅图像中提取出来,然后在感兴趣区域中通过Hough梯度变换寻找特定纹理所在的特征区域,最后经过特征区域的标记、匹配实现浮子的径向滚转角检测。精度测试实验表明,该算法的精度较高、耗时较短,具有较高的工程应用价值。

1 成像系统

本文模拟实际检测环境设计了一套浮子径向端面成像系统,其主要作用是对浮子端面进行高质量成像,以获取浮子径向滚转角检测算法的输入图像。该系统由230万像素的工业相机、远心镜头和白色LED环形光源等硬件组成,镜头与相机通过C型接口固联,相机固定在可以上下移动的滑台上,被测浮子位于盛有无色透明浮液的玻璃油罐中,玻璃油罐固定于装有无色透明恒温油的恒温油箱中,恒温油箱的四面带有玻璃窗,环形光源位于被测浮子靠近镜头的一侧,相机、镜头通过玻璃窗获取被测浮子的端面图像。成像系统的结构俯视图如图1所示。

图1 浮子端面成像系统结构图Fig.1 Diagram of the floater end surface imaging system

采用该成像系统得到的浮子端面图像如图2所示。由图2可知,浮子端面的纹理特征、形貌特征较为清晰,说明了成像系统的硬件选型和结构设计较为合理,可以保证浮子端面图像的成像效果和质量。

图2 浮子端面图像Fig.2 Diagram of floater end surface image

2 转角检测算法

在进行浮子径向滚转角检测时,由于此时浮子轴向上的静不平衡量较小,浮子的轴向倾斜角较小(<1°),浮子端面在图像中近似圆形,且浮子端面和拍摄浮子径向端面的相机光轴近似垂直,远心镜头的畸变率较低。因此,在进行浮子径向滚转角检测时,浮子位置的变化和镜头畸变对检测精度的影响可以忽略不计。

算法的流程如下:1)通过椭圆聚类进行感兴趣区域提取,得到了包含具有特定纹理的特征区域的感兴趣区域图像;2)采用Hough梯度变换寻找这些特征区域,计算出每个特征区域的角度位置,并结合先验信息对特征区域进行标记;3)对旋转前和旋转后的浮子图像分别采用上述算法,将两幅图像中的特征区域按照标记一一对应的关系进行匹配;4)根据匹配后特征区域之间的角度位置关系,计算出浮子的径向滚转角度。算法流程图如图3所示。

2.1 基于椭圆聚类的感兴趣区域提取算法

感兴趣区域指的是在浮子端面图像中包含待检测特征区域的闭合区域,进行感兴趣区域提取的目的是提高后续径向滚转角检测算法的鲁棒性和运行速度。

感兴趣区域提取算法首先采用轮廓跟踪算法[8]得到浮子径向端面的轮廓图,如图4(a)所示;采用椭圆拟合算法[9]对每组轮廓点集进行椭圆拟合,拟合结果如图4(b)所示;对由椭圆圆心组成的点集采用机器学习中的无监督聚类算法DBSCAN[10]进行聚类,可从众多椭圆中筛选出如图4(c)所示的同心椭圆集合;根据椭圆的长短轴大小可以将特定的两个椭圆Ed_i与Ed_o从同心椭圆集合中筛选出来,如图4(c)、 图4(d)中绿色椭圆所示, 这两个椭圆所代表的纹理特征不会随着浮子的滚转、平移运动而消失,且在大部分的光照条件下都比较明显。

图3 径向滚转角检测算法流程图Fig.3 Flowchart of radial rotation angle detection algorithm

图4 感兴趣区域提取算法各步骤结果Fig.4 Results of each step of ROI extraction algorithm

在理想情况下,浮子的径向端面是标准的圆形, 如图 5(a)所示。 其中,Croi_i、Croi_o、Cd_i、Cd_o分别为感兴趣区域内圆边界、感兴趣区域外圆边界、 特定内圆、 特定外圆,Droi_i、Droi_o、Dd_i、Dd_o分别为它们的直径。在实际情况中,由于浮子的轴线与相机的轴线不能保证完全重合,且浮子在图像中的位置不能确定,导致浮子的形状在图像中会与实际情况有一定的偏差,即浮子的形状在图像中由圆形变为椭圆,Croi_i、Croi_o、Cd_i、Cd_o分别 变 为 椭 圆Eroi_i、Eroi_o、Ed_i、Ed_o, 如图 5(b)所示。

图5 感兴趣区域内外圆边界与特定内外圆Fig.5 Diagram of the ROI inner and outer circular boundaries and the specific inner and outer circles

通过计算Droi_i和Dd_i之间的长度比例关系kroii_di、Droi_o和Dd_i之间的长度比例关系kroio_di、Droi_i和Dd_o之间的长度比例关系kroii_do、Droi_o和Dd_o之间的长度比例关系kroio_do,结合从同心椭圆集合中筛选出来的特定椭圆Ed_i、Ed_o的长轴、短轴、圆心与椭圆方向,可计算出感兴趣区域内外椭圆边界Eroi_i、Eroi_o的完整参数:Eroi_i的长轴aroi_i和短轴broi_i、Eroi_o的长轴aroi_o和短轴broi_o以及Eroi_i、Eroi_o的圆心位置Centerroi=(xroi,yroi)和椭圆方向θroi。 计算过程如下

计算后的感兴趣区域内外椭圆边界如图4(d)中紫色椭圆所示,最后通过建立蒙版图像(图 4(e))、 图像相加(图 4(f))、 图像分割, 得到感兴趣区域,如图4(g)所示。

若直接对浮子端面图像采用常见的圆提取算法[11-13],众多大小不一的同心圆很难同时精确地提取出来,原因如下:1)众多同心圆半径大小不一且同心,若想精确提取出这些圆,仅仅进行一次圆提取是不够的,增加了算法的耗时;2)浮子所在环境的亮度会发生变化,圆提取算法的参数很难确定;3)浮子在玻璃油罐中可以自由运动,导致其在图像中的大小、位置会发生变化,常见的圆提取算法只能精确地提取半径范围变化不大的圆;4)在实际情况下,同心圆有可能变为同心椭圆,圆提取算法无法准确、有效地提取椭圆。本文提出的基于椭圆聚类的感兴趣区域提取算法有效地解决了上述问题,具有以下几点优势:1)可以一次性准确地提取出所有同心圆或同心椭圆,算法的执行效率高;2)在图像亮度发生变化、浮子在图像中的位置和大小产生改变的情况下,该算法仍然可以实现高鲁棒性和高准确度的感兴趣区域提取,如图6所示。

图6 感兴趣区域提取结果组图Fig.6 Diagram of ROI extraction result

2.2 基于Hough梯度变换的特征区域检测

浮子端面感兴趣区域图像中含有4个对光照、转角变化鲁棒性较高的区域,如图7中红框所示。即使由于光照条件改变或浮子进行了径向滚转运动导致浮子端面图像上的纹理特征发生变化,由图7可以看出,特征区域中都含有不规则的圆形特征,因此可以通过圆提取算法找到这些圆形特征,从而实现对特征区域的检测。

图7 含有特定纹理的区域Fig.7 Diagram of region with specific textures

Hough变换是一种可以在图像中检测线、圆或者其他简单形状的方法,属于特征检测中的一类经典方法。本次采用了Hough梯度变换[11-12]进行特征圆检测,该算法所需的内存和计算量相比于标准Hough变换[13]较小,且检测的准确率更高。Hough梯度变换的核心思想为:一个圆的圆心必定在经过圆上每个点的圆切线的法线上,这些法线的交点就是圆心。采用这种方法先找到候选圆心,然后根据图像中所有非零像素点对候选圆心的支持程度确定出半径。

分别以图 8(a)~图 8(f)左列的 6 张图像作为输入图像,这6张图像的光照条件、浮子当前滚转角度、 纹理信息都有所不同。 图 8(a)~图 8(f)右列的6张图像是Hough梯度变换的特征圆检测结果,在图中以绿色圆标注。从结果中可以看出,本次研究采用的特征圆检测算法可以在不同的光照条件、浮子当前滚转角度和纹理信息的情况下,有效、准确地检测出浮子端面感兴趣区域图像中的特征圆,鲁棒性较高。采用上述算法检测出来的特征圆基本上都位于特征区域的中心位置,因此可以将特征圆的位置近似作为特征区域的位置,特征圆的圆心坐标即对应特征区域的中心坐标。

图8 特征圆检测结果Fig.8 Detection results of feature circles

2.3 特征区域的位置计算

设四个特征区域的中心坐标分别为(x1,y1)、(x2,y2)、 (x3,y3)、 (x4,y4), 感兴趣区域的中心位置为(xc,yc),计算每个特征区域中心坐标与中心位置之间的斜率ki=(yi-yc)/(xi-xc+ε)。 其中,i=1~4,ε为一个极小的数。根据斜率ki,可以计算出每个特征区域中心坐标(xi,yi)与中心位置之间的连线和水平线之间的夹角,αi的示意图如图 9(a)所示。

图9 角度位置计算示意图Fig.9 Diagram of angle position calculation

以中心位置(xc,yc)向右的水平延长线作为0°位置,将αi改写为以0°位置为起始点、以顺时针方向为正方向的角度值α′i

由于特征区域分布在图像中的不同位置,且在径向上不重合,故α′i可以代表每一个特征区域在图像中的角度位置,α′i的示意图如图9(b)所示。

2.4 特征区域标记

计算特征区域角度位置之间的距离Δαi=α′i+1-α′i,i=1~3。 若Δαi>90°, 则将Δαi标记为L, 否则将Δαi标记为S。以0°位置为起始点,顺时针开始标记, 设Δα={Δα1, Δα2, Δα3}, 则Δα一共有四种标记集合, 分别为{L,S,S}、 {L,L,S}、{S,L,L}、 {S,S,L}。 对于每一种标记集合,都能唯一确定一种对特征区域的标记方式,并且可以保证在两幅图像中对同一个特征区域的标记是相同的,如图10中的紫色数字编号所示。

图10 特征区域标记示意图Fig.10 Diagram of feature region mark

2.5 径向转角计算

给定两幅图像,根据上述算法可以得出两组被标记过的特征区域,将拥有相同标记的特征区域角度位置α′i相减,得出每一个特征区域在两幅图像间的旋转角度ri。当α′i跨过0°位置时,旋转角度ri计算错误的问题可以采用下式来解决

计算所有特征区域的旋转角度集合r={r1,r2,r3,r4}, 对该集合取平均值,即可得出浮子在径向方向的滚转角。

3 算法精度测试

为了验证转角检测算法的精度,本文模拟实际检测环境设计了一套精度测试系统。系统结构如图11所示,环形光源、成像系统通过工装固定在被测浮子的前方,盛有无色透明恒温油和无色透明浮液的透明玻璃罐固定在被测浮子和成像系统之间,以模拟实际检测过程中浮子位于浮液中的情况。同时,确保分度台的端面圆心、被测浮子的端面圆心、环形光源的圆心和成像系统的光心位于同一条直线上,分度台的端面、被测浮子的端面、环形光源的端面和成像系统的端面平行。分度台的定位精度小于 1″, 重复性精度小于±0.05″。

图11 转角检测算法精度测试系统结构Fig.11 Structure of accuracy test system for rotation angle detection algorithm

3.1 绝对精度测试

首先获取测试绝对精度所需的图像集合,由上位机控制分度台由0°逆时针旋转至359°,可以得到360张浮子径向端面的图像集合I={I0,I1,…,I359}。将分度台的旋转角度看作浮子径向滚转角度的真值rt,依次将Ii、Ii+1作为旋转前、旋转后的图像,采用本文提出的转角检测算法计算浮子径向滚转角度,计算结果与真值之间的误差集合E如图12所示。误差集合E中绝对值最大的误差为0.26°,故可以认为本文提出的转角检测算法的绝对精度小于0.3°。

图12 转角检测算法的误差Fig.12 Errors of rotation angle detection algorithm

3.2 重复性精度测试

在确保光源亮度、相机曝光时间、外界光照等影响图像成像效果的条件一致的情况下,获取重复性精度测试所需的图像集合,得到三组图像集合I(1)、I(5)、I(20), 分别包含了 20 组固定在分度台上的浮子在相同条件下顺时针旋转了1°、5°和20°前后的图像。 对图像集合I(1)、I(5)、I(20)中的每组图像分别采用本文提出的转角检测算法计算浮子的径向滚转角度,结果如图13所示。

图13 转角检测算法重复性测试结果Fig.13 Repeatability test results of rotation angle detection algorithm

由图13可知,该检测算法在三组图像集合I(1)、I(5)、I(20)上的检测结果曲线比较平缓, 且标准差都小于0.08°,表明本文提出的径向滚转角检测算法的重复性精度小于0.08°,且该算法的重复性精度不受旋转角度大小的影响。在如表1所示的算法测试环境下,对检测算法的运行耗时进行了测试,该算法的平均运行时间小于0.5s,运行耗时较短。

表1 算法测试环境Table 1 Test environment of algorithm

4 结论

本文针对不适合添加外部特征的目标转角检测场景,提出了一种基于目标自身纹理特征的机器视觉转角检测算法。该算法通过对椭圆圆心的聚类实现了感兴趣区域提取,提高了感兴趣区域提取算法的鲁棒性,且适用于提取其他表面含有同心圆纹理特征的零组件的感兴趣区域,具有一定的可扩展性;采用Hough梯度变换准确、高效地寻找感兴趣区域中含有特定纹理的特征区域,并针对浮子纹理特征的特有分布情况设计了特征标记、匹配算法,实现了浮子的径向滚转角检测。

模拟实际浮子转角检测环境对算法的精度进行了测试,测试结果表明:该算法的绝对精度小于0.3°,重复性精度小于0.08°,运行耗时小于0.5s。本文提出的基于目标纹理的机器视觉转角检测算法目前已经应用于实际浮子转角检测中,提升了浮子转角检测的精度,具有较高的工程应用价值。

猜你喜欢

浮子端面径向
同轴双浮子波能装置水动力特性研究*
一种连体式硅橡胶按键加工用注塑模具
径向电磁轴承冷却优化研究
激光测风雷达径向风速的质量控制方法
我学会钓鱼了
双级径向旋流器对燃烧性能的影响
千分尺轴向窜动和径向摆动检定装置的研制
甜橙树
一种采暖散热器的散热管安装改进结构
一种面板复合辅助工具