螺纹钢作为现代化生产中重要的工业材料,在建筑、机械、交通、运输等行业都有着广泛的应用。其表面横肋、纵肋的相关尺寸如果不能达到国家标准的要求,将被视为尺寸缺陷,其产品肯定就是不合格的。随着市场对螺纹钢表面的质量要求越来越高,传统的人工离线测量的方法已经不能够满足现代化生产线的要求,因此,各种非接触的、无损伤的检测方法得到了越来越多的开发和利用[1]。目前,广泛使用的表面缺陷检测技术有涡流、 超声波、漏磁和磁粉等检测方法[2]。这些检测方法在螺纹钢表面的尺寸缺陷检测方面有很大的局限性,其存在检测精度不足,直观性差等缺点。因此,为了提高检测精度,满足不同尺寸的螺纹钢的要求,螺纹钢表面尺寸缺陷检测应用更加精确、智能的机器视觉表面检测系统[3,4]。
根据螺纹钢尺寸国家标准的要求(GB 1499.2-2007),需要对螺纹钢横肋高及内径、纵肋高度、横肋与轴线夹角、横肋间距和横肋顶宽6个尺寸参数进行计算。
为了获得横肋、纵肋全部的尺寸信息,在螺纹钢成像时需要分别获得螺纹钢侧面和正面的图像,且获取的图像范围宽于螺纹钢直径。 要计算螺纹钢表面尺寸,检测螺纹钢表面尺寸缺陷,首先要把螺纹钢从背景中分割出来[5],然后在螺纹钢范围内对表面尺寸进行计算求出。螺纹钢外形结构复杂,需要测量的参数较多,其主要的外形尺寸有9个(如图1所示),包括螺纹钢横肋高度、螺纹钢内径、纵肋高度、横肋与轴线夹角、横肋间距、横肋顶宽、纵肋顶宽、纵肋斜角和横肋斜角。为了便于计算各参数,需要对螺纹钢的侧面和正面图像进行联合处理[6,7]。
图1 螺纹钢的部分外形尺寸
基于以上情形,对复杂光照条件下螺纹钢缺陷图像的检测方法进行研究。在获得螺纹钢侧面、正面图像后,先对螺纹钢侧面图像进行处理,计算出螺纹钢横肋高及内径的值;再对螺纹钢正面图像进行处理,得出螺纹钢纵肋高度、横肋与轴线夹角、横肋间距、横肋顶宽的值;从而为螺纹钢表面尺寸缺陷的机器视觉检测奠定了基础。
1 螺纹钢侧面图像处理
图2 螺纹钢部分侧面处理图像
从侧面图像2(a)中可以看出,由于其横肋的均匀分布,二值化后的图像边缘呈现细小的锯齿状(如图2(b)所示)。锯齿顶部由横肋顶部构成,而锯齿底部为螺纹钢的内径边缘。因此,要求横肋的高和螺纹钢的内径,首先要精确定位锯齿状的边缘。由于涉及到定位问题,在求取边缘时精确性就很重要,因此,在二值化之前,首先对原始图像进行中值滤波,剔除边界噪声,再使用OTSU进行分割。边缘的获取选择了效果较好的Sobel算子,但是Sobel算子形成的边缘较粗,定位性不好,还需要对其进行细化(如图2(c)所示),以更能反映边缘位置信息。图2(d)是细化后的边缘定位情况,可以看出其能比较准确的反映边缘横肋的分布情况。
螺纹钢的边缘图像获得以后,下一步就是进行肋高和内径计算。一般说来,内径就是两条细化边缘的内侧最近距离,而横肋高就是边缘的横向宽度。但是,由于数字图像离散化后的精度缺失以及噪声的影响,其边缘锯齿并不是等高的,如果直接遍历横向宽度容易形成误差。鉴于此,本文提出了基于投影重心的亚像素边界定位方法。
图3是通过求投影重心来进行亚像素边界定位的示意图。左图是细化边缘(如图2(c)所示)垂直方向的投影图,右图是其局部放大图。从右图中可以看出,两条细化边界都存在最大的投影值(红线所示位置),其可以看作是锯齿边缘的中心位置[8]。
图3 基于投影重心的亚像素边界定位
红线两边的投影值呈现阶梯状,也就是说越靠近锯齿顶部(或底部),所处的像素越少,存在噪声的几率也会越大。为了更准确的反映锯齿边缘的尺寸,分别取红线两侧投影的重心,来代表锯齿的谷顶或谷底,从而得到四个位置点(C1,C2,C3,C4),那么两侧锯齿的高度(横肋高度)h1、h2可以表示为:
那么,螺纹钢内径d可表示为:
图4 螺纹钢侧面图像处理尺寸
从图5可以看出螺纹钢横肋高度h=(h1+h2) /2=3.64;螺纹钢内径d=39.95。由于投影重心并非整数,因此可以精确到比单个像素更高的精度,亦即亚像素精度。图4是图3的测试结果,可以看出两个边界的宽度误差是0.12个像素,若单个像素代表0.6mm,那么其误差在0.072mm,远小于规定的±0.6mm(GB 1499.2-2007)的误差,因此算法是符合要求的。
2 螺纹钢正面图像处理
图5 螺纹钢部分正面处理图像
螺纹钢正面图像(图5(a)所示)内部结构比较复杂,中间条纹是斜向分布的横肋,两侧边缘还包括纵肋部分。因此,再用细化的Sobel边缘容易造成横肋的变形以及纵肋的定位问题,在此使用具有精确定位能力的Canny边缘算法,使用Canny算法的一个好处是其边缘图像是单像素的(如图5(b)所示),精度较高,这就方便了后续的处理。从图5(c)中可以看出Canny边缘的定位能力。为了消除噪声干扰,在使用Canny算子之前,需要对原始图像进行滤波,本文采用了中值滤波方式。获得Canny边缘后,对其进行垂直投影(如图5(d)所示)。从图中可以看出,其投影呈现一个“山”字形,两侧是包含纵肋的边缘,中间凸起是横肋部分。因此,求纵肋的高度,需先求出两边具有最高投影的位置,然后求其距离D,那么结合侧面图像钢筋的内径d,纵肋的高度h1可以表示为:
为了求横肋间距及横肋顶宽,需要先定位横肋的轴 线位置。在此,采用了求“山”字中间凸起的横向重心的方法。当然,在此之前必须求出两边谷点的位置,亦即横肋的左右分布边界。通常四个横肋边缘确定一个横肋间距l和两个横肋轴线宽度w(如图6所示),因此重心确定以后,沿着重心向上遍历横肋边缘,每四个边缘计算一次,然后求平均,就可以得到横肋间距l及横肋轴线宽度w。当然,要求横肋的顶宽,还需要求横肋的方向角β。
图6 遍历横肋边缘
横肋与轴线夹角(方向角)需要确定单个横肋的外接矩形,通过计算对角线的方向角来确定。在此,采用边缘轮廓跟踪算法(如图7所示)。
图7 边缘跟踪求方向角
至此,正面图像的四个参数就已经求出,图8表示出了横肋与轴线夹角为78.11°;螺纹钢纵肋高度为3.52,物理尺寸为2.19mm;横肋顶宽为3.91;横肋间距为10.00,对应物理尺寸为6.20mm。
图8 螺纹钢正面图像处理尺寸
3 结论
根据螺纹钢的图像特点,通过对螺纹钢的图像分析,在提出的投影重心法和边缘跟踪法的基础上,计算得到了螺纹钢的6个尺寸(螺纹钢横肋高及内径、纵肋高度、横肋与轴线夹角、横肋间距和横肋顶宽),给螺纹钢的自动化检测奠定了基础。算法具有精度高,抗干扰能力强的特点,但由于拍摄角度的限制和螺纹钢轧制过程中的旋转性,获取的连续图像存在中间状态,需要进行判断。