电子说
杨 巍,刘琼
(武汉科技大学 信息科学与工程学院,湖北 武汉 430081)
摘 要:针对当前夏比摆锤冲击试验中夏比试样摆放方式具有一定危险性,且摆放位置精度易受影响问题,提出一种改进 LSD的夏比试样工位点定位方法。首先对采集到的夏比试样图像进行预处理操作,基于预处理后的图像,利用非极大值抑制改进 LSD算法中直线支撑域的种子点选取方法,实现加快直线检测速度;然后对检测得到的直线进行共线筛选合并;最后进行工位点定位。实验结果表明,改进后的LSD算法在夏比试样工位点定位用时更短、精度更高,具有较好的工程应用价值。
0 引 言
随着社会的不断发展,对钢铁的质量要求也越来越高,为了检测生产的钢铁是否符合标准,需要对其进行试验,夏比摆锤冲击试验就是用来测定金属材料抗缺口敏感性的试验[1]。将生产需要测试的钢材制备成一定尺寸和具有 U 型或 V 型缺口形状的金属试样,放置在试验机上,以试验机举起的摆锤进行一次击打,使得试样沿着缺口冲断,从而判断材料是否合格[2]。国标中规定试样缺口对称面与试验机砧座间的中点位置偏差小于0.5 mm,若夏比试样缺口的摆放位置出现偏差则影响测试数据的准确度。夏比试样缺口对称面中心位置即为夏比试样工位点,传统定位方法是由人工利用特制的试样对中夹钳进行试样的放置,操作人员利用夹钳夹取试样,当夹钳的斜面与砧座的斜面正好吻合时则放置成功,完成定位,否则放置失败。操作人员手动放置试样示意图如图1所示。
然而这种传统摆放方式当需要试验的试样数量很大时,工作人员极易产生疲劳而影响试样的摆放,若出现放置错误,不仅测试数据的准确度会受到影响,甚至会造成试样飞溅,对工作人员的人身安全产生威胁。随着智能化产线在工厂的逐步应用,通过人工摆放试样的方式已经无法满足需要,因此,研究夏比试样工位点定位的方法具有一定的重要性。目前国内外利用图像处理技术进行夏比试样工位点定位的研究尚有欠缺,夏比试样工位点定位最为重要的部分就是直线检测部分,检测结果直接影响着测试数据的准确性。
现有文献对直线检测的算法主要可分为两种:基于边缘检测的方法和基于梯度变化的方法。基于边缘检测的方法需要先检测边缘再进行直线拟合,其拥有良好的运行速度、能融合全部信息等优点。文献[3]对满足条件的点进行霍夫变换,检测试卷边缘直线进行倾斜矫正。文献[4]先使用Ratio算子进行电力线的边缘检测,再利用霍夫变换的方法进行电力线提取,霍夫变换易于实现,但易产生误检测,适用于线段长且边缘明显的场景。文献[5]先利用Canny算子进行目标边缘检测,根据检测信息用最小二乘法对机器人末端直线进行拟合,最小二乘法简单便捷、速度快,但易受干扰点影响,较适用于干扰少的场景。文献[6]采用LSD(Line Segment Detector)算法进行直线检测来完成图书分割,LSD 算法利用梯度信息检测能有效区别相邻线段,但较适用于直线连续性较低的场景。文献[7]采用 EDLines 算法进行遥感影像直线提取,EDlines算法拥有良好的抗噪性且运行速度快,较适用于线段连续性要求不高的场景。考虑到夏比试样边缘粗糙且对线段连续性及检测时间要求高,在研究了夏比试样工位点定位原理后,本文提出一种基于改进LSD的夏比试样工位点定位方法。利用改进的LSD算法快速准确地检测出图片中所有的直线,再通过直线合并后筛选出特征直线,实现夏比试样的工位点定位。
1 图像处理工位点定位原理
国内某钢铁厂生产的夏比试样V型槽缺口面示意图如图2所示。标准尺寸的夏比试样长度为55 mm,宽度和高度均为10mm,在试样长度中间刻制有 V 型缺口,V 型缺口夹角为45°,其深度为2mm,底部曲率半径[8]为0.25 mm。根据试样摆放的要求,夏比试样的工位点定位采用图2中识别点坐标的方法,通过检测ab,bc,ac三条直线段计算工位点的位置信息。将该位置信息与标准件测得的位置信息进行比较,将差值输出给工业机器人,机器人根据偏差值进行矫正进而完成夏比试样的摆放。
由以上分析可知,夏比试样定位主要依靠检测特征直线完成。根据国内某钢铁厂要求,输出识别点位置的时间不得超过 800 ms,因此只需快速准确地检测出夏比试样图像中的 V 型槽缺口特征直线即可。
2 夏比试样工位点定位算法设计
2.1 夏比试样工位点定位流程
为了对夏比试样工位点进行定位,本文首先对采集的图像进行预处理,对预处理后的图像利用改进的LSD算法获取夏比试样图像中的线段,再对检测的线段进行筛选与共线合并,得到夏比试样 V型缺口特征直线,最后通过计算得到夏比试样工位点坐标。算法流程如图3所示。
2.2 图像预处理
由于采集到的夏比试样图像较大,包含许多无关信息且存在很多噪声,所以在进行直线检测前需要对夏比试样图像进行预处理操作。首先对输入图像使用7×7模板的中值滤波,达到去除噪声并保护边缘的目的,再进行感兴趣区域(ROI)提取,将图像截取为仅包含夏比试样V型缺口部分,滤除与工位点定位的无关信息。夏比试样原图及预处理各个阶段的效果如图4所示。
2.3 改进的 LSD 算法
LSD算法是一种可直接在灰度图像中进行边缘直线检测的算法[9⁃10],其主要优点有:无需参数设定,能够在线性时间内得到亚像素级精度的检测结果,可很好地区分出相邻线段,但其存在过分割问题,且在夏比试样 V型槽特征直线检测中耗时超过800 ms。本文对LSD算法中直线支撑域增长种子点的选取过程进行了改进,使用非极大值抑制筛选种子点。算法具体可分为以下步骤:
1)梯度信息计算。针对图像中的锯齿效应会影响检测结果,对原始图像进行高斯降采样,使图像按比例缩小为原图的80%。然后计算图像的像素梯度信息,LSD算法的梯度信息使用如图5所示的2×2模板进行计算。
图5中i (x, y) 为点(x,y) 的灰度值。i(x,y) 处x,y方向上梯度值gx (x, y ),gy(x,y)的定义如式(1)与式(2)所示:
2)种子点选择。像素点的梯度值越高则说明该处为强边缘,所以直线支撑域增长从高梯度值像素开始,改进LSD算法采用在梯度方向上进行非极大值抑制(NMS)[11⁃12]的方法选取直线支撑区域增长的种子点。NMS可理解为局部最大值搜索,主要进行边缘细化,在边缘检测、人脸检测、目标检测等领域广泛应用,在本文中用来进行种子点的选择。设置采样频率为3,对比中心像素与其梯度方向上的点dTmp1与dTmp2的梯度值,
若中心像素的梯度为极大值,则保留,反之舍弃。对于像素C进行 NMS 计算的示意图如图6所示。像素C在x方向梯度为gx,y 方向梯度为gy,当|gy|>|gx|,x,y方向的梯度方向一致时,对应图中直线1,方向不一致时对应图中直线2;当|gy|<|gx|,方向一致时,对应图中直线4,方向不一致时,对应图中直线3。
数字图像中的像素点是离散的二维矩阵,点C处的梯度方向上的点 dTmp1 与 dTmp2 的梯度值需要通过对其两侧的点进行插值计算得到[13]。其计算公式如下:
式中:M (g1),M(g2)分别为g1,g2处的梯度幅值;M(g3),M(g4)分别为点g3,g4 处的梯度幅值;w 为权重。w 的计算公式如下:
式中gx,gy分别为中心像素的 x方向和 y方向梯度值。
通过上述非极大值抑制后得到候选种子点,设置梯度幅值阈值筛选种子点像素来提高直线检测算法的效率及效果。该阈值计算公式为:
式中:q为灰度量化误差上限;τ为直线支撑区域生长时梯度方向角的最大容差。经过阈值筛选后可得到种子点。
3)直线支撑区域增长。遍历步骤2)中的种子点,且种子点不重复使用,以选取的种子点水平线的平均角度作为区域初始生长角度,搜索其8邻域内未被搜索过的像素,当该像素的水平线角度与区域生长角度小于容忍度τ,则将其加入直线支撑区,并按照式(9)更新平均角度[14]。
式中θ为像素j的水平线角度。再以更新后的β继续搜索,当该直线支撑区域无新的满足条件像素点加入时,则停止生长,遍历种子点并重复执行,可得到全部支撑区域。
4)直线生成。首先计算支撑区域的最小外接矩形,再计算得出该矩形的中心、方向角、长和宽等信息,经过该中心并且方向为该矩形的方向角的直线为其矩形包围的支撑域所生成的直线。根据 Helmholtz 原则对生成的直线进行检测[15]。定义直线区域 r的错误报警数(NFA)计算公式如下:
式中:N和M分别为该直线支撑域r的宽和高;n为区域内像素数目;k为与区域方向一致的像素点数目;p为给定精度。p的计算公式为:
式中τ为支撑域生长时梯度方向角的最大容差。如果直线支撑区域r的NFA小于ε,r为有意义的支撑域,可用于生成直线[16]。
2.4 线段筛选与合并
LSD算法易产生过分割,在完成直线检测后,需要对LSD算法检测得到的线段进行合并。首先对得到的线段集合P设置长度阈值α,过滤掉短线段后将剩余直线按照长度进行降序排列,从最长的线段L1开始依次搜索后面的线段,设L1线段的长度为len1,斜率为k1,截距为b1,遍历剩余线段斜率和截距值,依次比对除该线段外的剩余线段的斜率和截距值,若两条直线斜率和截距分别满足阈值γ与β,则认为这两条直线共线,需要进行合并,并将合并后的线段加入下一次搜索,否则认为其为非共线直线且不加入下一次搜索,线段筛选与合并流程图如图7所示。
对需要合并的线段L1,Li,合并后的斜率和截距计算公式如下:
式中:len1和k1分别为线段L1的长度和斜率;leni 和ki分别为剩余线段Li 的长度和斜率。若L1的长度大于需要合并线段长度的5倍,则取L1线段的斜率和截距为合并后的斜率和截距;若L1的长度大于需要合并线段且小于其5倍长度,则将直线L1的斜率和截距权重设为0.95,需要合并线段的斜率和截距按权重为0.05进行计算;若需要合并线段长度相等,则将两条线段的斜率和截距权重均设置为0.5,计算合并后的斜率和截距值。
3 实验结果及分析
本文方法是在Windows 10系统下以Matlab 2018a作为实验运行环境,处理器为Core i7⁃4510U@2.00GHz。实验中LSD算法参数设置为:图像缩放尺度为0.8,梯度方向角度阈值为22.5,最小外接矩形内部点数密度阈值为0.7,线段长度阈值α设置为30,斜率和截距阈值γ与β均设置为1.5。通过对国内某钢铁厂生产现场采集得到的夏比试样V型缺口图像进行实验,分别使用 Hough变换、最小二乘法、LSD算法、LSD算法结合直线筛选合并和本文算法进行直线检测,检测效果如图 8所示。
为了更好地量化检测效果,本文采用平均放置误差P 对以上几种方法的直线检测效果进行评估,平均放置误差P定义如下:
式中:Pi为夏比试样放置精度;N为试验次数;Pix为检测得到的夏比试样工位点 x坐标信息;Bix为该图像对应的夏比试样实际测量的工位点 x坐标信息;Piy为检测得到的工位点y坐标信息;Biy为实际测量的工位点y坐标信息。采用的几种算法直线检测量化结果如表1所示,本次试验次数N为200。
从图 8b)可以看出,Hough变换能检测出夏比试样V 型缺口图片中的部分线段,但有误检测,无法直接检测出所需的特征直线,且需要根据不同的图设置不同阈值。图 8c)使用最小二乘法检测,面对图像中存在多个边缘方向的情况下只拟合出一条直线,虽然平均用时最短,但由于干扰点过多导致特征直线检测失败。图8d)中,LSD算法能有效检测出图像中的所有直线,由于边缘粗糙导致过分割问题严重,且无法直接得出特征直线。图 8e)使用LSD算法结合直线筛选合并,能检测出V型缺口的部分特征直线,但部分线段依旧存在过分割问题且无法满足时效性,特征直线存在残缺导致平均放置误差为 0.13 mm。图8f)使用本文算法,从图中可以看出,有效检测出了夏比试样 V 型缺口的特征直线,且平均放置误差为0.07 mm,低于其余方法且满足国标规定。本文算法的平均用时也明显低于除最小二乘法以外的其余方法,这是由于本文提出的方法在种子点选择时进行了非极大值抑制,使得种子点数量减少,在直线支撑域生长时种子点遍历的时间复杂度为O(n),种子点数量n的值减少,则时间复杂度也随之降低,从而拥有更高效率。综上可知,本文提出的方法无论是放置误差还是用时均符合生产实际要求。
4 结 论
为了对夏比试样的工位点进行实时定位,本文根据夏比试样特征提出了一种基于改进 LSD 的夏比试样工位点定位方法。在传统LSD算法的基础上改进了直线支撑区域生长种子点生成方法,利用非极大值抑制来提取直线支撑区域的种子点从而进行直线检测,最后通过直线筛选与合并,对过分割的线段进行合并来提取特征直线完成工位点定位。实验结果表明,本文方法检测速度更快,平均放置精度更高,有效解决了LSD算法的过分割和耗时长的问题。另外,由于夏比试样制备时会产生毛刺,在未来研究中,可以对夏比试样图像边缘进行进一步优化,以减弱边缘毛刺对检测结果的影响。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !