APP下载

基于机器视觉的螺纹钢表面缺陷检测方法①

2020-04-24张运楚赵月万立志

计算机系统应用 2020年4期
关键词:螺纹钢频域算子

孙 鸽,张运楚,2,赵月,万立志

1(山东建筑大学 信息与电气工程学院,济南 250101)

2(山东省智能建筑技术重点实验室,济南 250101)

螺纹钢作为一种现代化生产中非常重要的工业材料,在建筑、桥梁、交通、机械等行业中被广泛应用,是不可或缺的结构材料[1].螺纹钢的品质问题主要分为形状尺寸缺陷问题和表面缺陷问题.对于尺寸缺陷问题,如果其横肋和纵肋的相关尺寸不符合国家的规定标准,则认为其是不合格的产品;对于表面缺陷问题,主要包含凸包、凹坑、麻点等多种缺陷.在螺纹钢轧制过程中,如果不能及时发现其尺寸和表面出现的缺陷,会生产出大量废品,给企业带来损失.因此,需要及时检测出螺纹钢存在的生产缺陷并报警,以便调整轧机压力或更换轧制设备[2,3].

目前螺纹钢缺陷多采用人工检测,存在工作量大、实时性差、误检率高等问题,亟待提高检测的自动化水平.涡流检测方法受检测原理的限制,螺纹钢缺陷检测精度不高且可检测缺陷的种类具有局限性.漏磁检测装置结构复杂,难以维护,且不能对螺纹钢表面缺陷的类型进行精准的分类.红外检测法不仅对环境的要求比较高,而且也无法准确分类螺纹钢缺陷类型[4-7].在基于机器视觉的缺陷检测算法研究过程中,2004年美国密歇根大学的Jia HB 等人提出了一种运用支持向量机SVM 判别圆钢表面有无缺陷的检测系统,系统实时性好,但仅对细长的裂缝检测率高,难以检测出其它表面缺陷[8].2006年韩国浦项制铁公司Yun 等人结合形态学运算、边缘检测、支持向量机SVM 分类等方法所改进的带钢表面缺陷检测系统具有较大的应用潜力[9].2010年台湾国立大学的Liu 等人提出了新的检测表面缺陷的视觉系统,采用神经网络分类器和相关向量机两类分类器联合对裂痕、刮伤、疤痕、压痕四种缺陷做判断识别,正确率可达85%,但是检测速度和准确性效果偏低[10].2015年刘本迪等人针对螺栓表面的纹理缺陷,使用基于灰度共生矩阵(GLCM)的方法,依据统计的纹理特征参数来构建标准螺栓数据库,然后进行缺陷检测实验,此方法抗噪声性能较差、对光照和环境要求高[11].由于螺纹钢表面缺陷种类多样、纹理复杂且形态多变,需进一步提高螺纹钢缺陷检测算法的适用性和鲁棒性.

本文采用Halcon 软件设计了一种基于机器视觉的螺纹钢表面缺陷检测方法.先利用仿射变换对图像中歪斜的螺纹钢进行校正,然后基于霍夫变换检测纵肋边缘直线位置从而对螺纹钢正面、侧面图像进行区分,最后针对正面、侧面图像分别进行缺陷检测,快速准确地判别表面是否存在缺陷.实验表明所设计的方法有效解决了生产现场环境恶劣、工人劳动强度大、操作危险以及时效性差等问题,减少了漏检率和废品率.

1 总体方案设计

本文提出的螺纹钢表面缺陷检测方法使用德国MVtec 公司研发的Halcon 机器视觉软件完成,利用其集成开发环境、灵活的构架、以及精度高且稳定的特质可大大缩短图像处理开发周期[12].

首先使用高速工业相机采集螺纹钢图像,对图像中歪斜的螺纹钢作旋转校正,并提取出螺纹钢所在区域,去除大量复杂背景的干扰.然后利用基于局部梯度方向的霍夫变换检测直线的原理对纵肋边缘直线进行定位,从而辨别区分螺纹钢的侧面和正面图像.对于正面图像,采用分区思想,将图像分为上、下纵肋、中间横肋三部分分别进行缺陷检测判断.对于横肋部分,结合“模板匹配法+Blob 分析”对定位到的单个横肋依次进行缺陷判别;对于上下纵肋,采用Blob 分析快速准确地判别图像中是否存在缺陷.对于侧面图像,采用高斯差分的思想,将两个标准差不同的高斯滤波器相减后构造一个带阻滤波器来增强待检测表面中缺陷和背景的差异,傅里叶逆变换后得到重构的缺陷图像,通过阈值分割操作获取缺陷的具体位置,并在原图中进行标记.系统总体方案如图1 所示.

图1 螺纹钢表面缺陷检测流程图

2 图像预处理

2.1 图像采集

使用高速工业相机对螺纹钢原始图像进行采集,将螺纹钢图像由RGB 彩色图像转化为灰度图像(如图2).常用转换公式如下:

其中,R(x,y)、G(x,y)、B(x,y)对应于彩色图像中各像素点红、绿、蓝3 通道的值.

图2 螺纹钢灰度图像

2.2 图像校正及ROI 区域提取

2.2.1 图像滤波

螺纹钢在传送过程中常常受到外部环境或者生产运输系统自身带来的随机噪声的影响,适当的滤波可以有效地降低噪声的影响.本文选用了基于均值运算的线性滤波器.

其中,s 为滤波模板的大小,m 为滤波模板所含像素个数,f(x,y)为原像素的灰度值,g(x,y)为目标像素的灰度值.

2.2.2 图像增强

受螺纹钢金属材质的影响,螺纹钢表面的灰度值分布比较均匀,其它背景区域的灰度值则彼此差异较大,图像增强的目的是为了提高螺纹钢的辨识度.根据获得的灰度值(mean)和原始灰度值(orig)计算得到的灰度值(res),factor 用来衡量对比度的增加,公式如下:

2.2.3 图像分割

经过上述处理后,为了提取螺纹钢所处区域,还需进行阈值分割操作.

(1)基于边缘的分割

图像边缘是图像的基本特征,是图像分割、区域识别的基础.边缘是图像周围像素灰度发生突变的像素集合,通过求导的方式去检测边缘的不连续性,从而定位边缘的位置.

常用的一阶边缘检测算子有:Roberts算子、Prewitt算子、Sobel算子等.一阶微分边缘检测是利用梯度来检测局部特征的变换.对于连续函数f(x,y),其在点(x,y)处的梯度表示如下:

导数取最大值的方向为函数的梯度方向,用θ(x,y)表示:

梯度的幅度为:

Canny算子是一个检测性能较好的算子,属于先平滑后求导的方法.

1)首先采用高斯滤波模板进行卷积以平滑图像:

2)利用微分算子,计算梯度的幅值和方向:

3)对梯度幅值进行非极大值制;

4)使用双阈值算法检测和连接边缘.

4 种常用边缘检测算子的特性如表1 所示.

表1 4 种边缘检测算子特性比较

本文采用不同的算子对螺纹钢图像进行边缘检测,实验结果如图3 所示.4 种算子都可以检测出图像的边缘,但是Canny算子检测到的边缘更加清晰,细节更多.

Halcon 中用于Canny 边缘检测的语句如下:

edges_image(Image:ImaAmp,ImaDir:Filter,Alpha,NMS,Low,High:)

Image 代表输入图像;ImaAmp 代表边缘振幅图像;ImaDir 代表图像边缘方向;Filter 代表要应用的边缘运算符,如‘canny’,‘deriche1’等;Alpha 代表滤波参数,数值越小,平滑效果越好,细节也越少(与“canny”相反).NMS 代表非最大抑制;Low 代表为滞后阈值操作的低阈值;High 代表滞后阈值操作的高阈值.

(2)基于阈值的分割

基于阈值的分割是依据图像灰度的分布,选定阈值T,根据T 将图像分割为前景、背景两部分,若一个像素的灰度值大于该阈值T,则认为这个像素为我们感兴趣的目标,若小于该阈值,则认为其属于背景区域.该方法计算量较小、处理速度快.

其中,f(x,y)为原始图像,g(x)为阈值分割后的二值图像.1 表示目标区域,0 表示背景区域.

图3 边缘检测结果对比图

Halcon 中常用于分割的语句如下:

1)auto_threshold (Image:Region:Sigma)

使用直方图确定的阈值分割图像.Image 表示输入图像,Region 表示阈值分割后的区域,Sigma 表示用于直方图的高斯平滑.

2)threshold (Image:Region:MinGray,MaxGray)

使用全局阈值分割图像,Image 表示输入图像,Region 表示阈值分割后的区域,MinGray,MaxGray 表示分割的最小、最大灰度值.

Halcon 提供灰度直方图(如图4),可以进行直观的阈值处理.操作灰度直方图方法如下:

1)在”阈值”选项(如①所示)上打勾,开启使能输出,可实现可视化操作.看左图红色部分,就是选择阈值的结果.

2)绿色线(如②所示)为最低阈值,红色线(如③所示)为最高阈值,通过拖动这两条线,可以看到左图红色部分的变化,从而获得最佳阈值.

图4 灰度直方图

2.2.4 仿射变换

仿射变换包含平移、缩放、旋转等几何变换,Halcon 中一般先定义仿射变换单位矩阵,然后向单位变换矩阵中添加需要进行的几何变换的变换矩阵,最后再做仿射变换.仿射变换的一般表达式为:

式中,a11、a12、a21和a22表示线性部分,a13、a23表示平移部分.对于旋转变换而言,a11、a22为cosθ,a12为-sinθ,a21为sinθ,a13、a23为0.

综上所述,图像预处理具体操作步骤如下:

(1)螺纹钢图像采集及图像灰度化.

(2)以5×5 为模板的均值滤波对灰度图像进行平滑滤波,利用15×15 的低通掩模增强图像的对比度.

(3)通过自动阈值分割算子auto_threshold 分割出螺纹钢整体所在区域.求取连通域,基于面积和位置信息,选出螺纹钢所在区域.

(4)对上述区域作形态变换,得到其任意方向的最小外接矩形RegionTrans,并计算出RegionTrans 的中心点坐标Row、Column 以及区域的方向Phi.

(5)使用vector_angle_to_rigid算子根据中心点坐标Row、Column 和方向Phi 计算出一个仿射变换矩阵,用于旋转变换.首先对原图像进行旋转校正操作,然后对RegionTrans 进行同样的旋转校正操作.变换前后原点的行、列坐标都为最小外接矩形中心点的行列坐标Row、Column.

(6)从校正后的原图中裁剪出和RegionTrans 相似的区域,并进行存储,作为预处理后的ROI 图像.图5是校正前后的对比图.

图5 校正前后对比图

3 图像正侧面区分

在做缺陷检测之前,要先对螺纹钢的侧面图像和正面图像作辨别,基于正侧面图像的差别设计适合的检测方法.

3.1 霍夫变换基本原理

霍夫变换通过将图像坐标转化到参数空间来实现直线和曲线的拟合,是检测、定位曲线和直线的一种常用方法.

在图像x-y 坐标空间里,所有经过点(xi,yi)的直线表示为:

a 为斜率,b 为截距.式(1)也可以表示为:

通过式(2)变换到参数平面a-b,这就是直角坐标系中对于(xi,yi)的霍夫变换.在图像坐标空间中共线的点,对应于在参数空间里相交于同一点的直线,同样,在参数空间中相交于同一点的直线,在图像空间中都有与之相对应的共线的点,霍夫变换根据此关系将图像空间里的检测问题转换到参数空间里,在参数空间中作累加计算后进行投票表决完成检测任务.

3.2 图像正侧面判别

通过Alpha 为1.3,低阈值为15,高阈值为 30 的Canny 滤波器求取ROI 图像的边缘,得到边缘方向图像ImaDir.然后使用局部梯度方向的霍夫变换hough_lines_dir算子检测ImaDir 中的直线,并以正常形式返回直线的角度和方向,其中组成共线点的个数的阈值为67.

以螺纹钢正面图像和侧面图像中检测到的纵肋上下边缘共线直线位置的不同为依据对正面、侧面图像进行区分.如图6 和图7.例如正面图像中检测到的直线,略靠近于图像上下两边,而侧面图像中检测到的直线则略靠近图像中心部分.依次求得每条直线的中心点行列坐标,若其中心行坐标位于0-30 和160-190 之间,则为横肋朝前的正面图像,若直线中心点的行坐标位于50-145 之间,则为侧肋朝前的侧面图像.

图6 正面图像

图7 侧面图像

4 正面图像缺陷检测

正面图像中存在的螺纹钢缺陷主要分布在横肋的角部及腿尖处,且螺纹钢整体灰度值较为接近.因此本文采用分区检测思想,对正面图像的上、下侧肋以及中间的横肋部分均进行缺陷判断,避免遗漏缺陷.

4.1 图像分区

图像和区域是基于像素精度的数据结构,但在实际应用中,有时需要更高级别的精度要求.采用亚像素检测到的边缘,平滑清晰,能实现边缘的精准定位.因为噪声或者螺纹钢自身原因,检测到的单个纵肋的上下边缘可能是断开的,还需通过union_collinear_contours_xld算子连接近似共线的轮廓线.图像分区流程图如图8 所示.

首先提取出上纵肋图像ImageA,对于下纵肋作同样操作,得到图像ImageB.通过differences算子,从原图中提取除纵肋以外的横肋图像,利用crop_domain算子将其裁剪出来,得到横肋图像ImageC.分区结果如图9 所示.

4.2 横肋图像缺陷检测

图像匹配是横肋图像缺陷检测过程中的主要环节,将单个标准横肋与未进行识别定位的一幅横肋图像进行匹配,通过单个标准横肋与整幅横肋图像的匹配程度来对每个横肋进行定位.

图8 分区流程图

图9 图像分区结果示意图

4.2.1 横肋区域定位

图像匹配大致分为两类:基于灰度的匹配和基于特征的匹配.基于灰度值的匹配通过原图像和模板图像区域的灰度信息或频域分析等属性的比较来反映它们之间的相似性,此类方法的缺点是效率低、计算量大[13].而基于特征的模板匹配优点是计算量较少、抗噪声性能较好、匹配精度较高[14].

本文采用基于特征的模板匹配方法,以无缺陷的单个横肋图像作为模板,以模板的边缘亚像素轮廓为特征,在待匹配图像中寻找与标准图像具有相似特征的匹配[15].模板匹配的一般流程图如图10 所示.

运用所述模板匹配方法做实验,在整幅横肋图像中寻找单个横肋部分,结果如图11 所示.通过set_shape_model_param算子可以确定要使用的形状模型ModelID 是否可以跨越图像边界,”border_shape_models”的值可以是“true”、“false”或“system”.

图10 模板匹配流程图

图11 横肋图像匹配结果

4.2.2 横肋区域缺陷检测

对于每一个匹配到的横肋区域,先基于其中心点、方向值,生成一个长轴、短轴(ra2、rb2)半径略大于模板图像(ra1、rb1)的椭圆区域,相邻区域间可部分重叠,以防止遗漏掉存在缺陷的区域.以此椭圆区域为模板对原图中的横肋区域进行裁剪,然后对每个裁剪后的横肋区域依次进行缺陷检测.裁剪区域为图12 中红色椭圆所包含的螺纹钢区域.

图12 单根横肋裁剪示意图

对于提取出来的单个横肋区域,首先利用Alpha为1.5,低阈值为10,高阈值为30 的Canny 滤波器求取其边缘,得到边缘振幅(梯度大小)图像ImaAmp1,对ImaAmp1 经threshold算子分割出灰度值在0-150 之间的区域.提取连通域,基于面积和圆形度特征判断图像中是否存在缺陷.若存在缺陷,则在图像中标记出来.检测结果如图13.

图13 横肋图像检测结果

4.3 纵肋缺陷检测

对提取的上、下纵肋图像ImageA、ImageB 先进行图像增强处理,而后经threshold算子分割出灰度值在0-45 之间的区域,再利用半径为1.5 的圆形结构元素对分割后的区域作形态学开操作.求取连通域,基于面积、周长、凸度特征判断边缘图像中是否存在缺陷.若存在缺陷,需要在图像中标记出来.检测结果如图14.

图14 纵肋图像检测结果

4.4 实验数据及分析

使用所述图像分块缺陷检测方法对正面图像作测试,一共30 张测试图片,对于横肋部分,共有338 根单个横肋,缺陷识别率为94.1%;对于上下纵肋部分,共有60 根纵肋,缺陷识别率为83.3%.分析发现出现误判的原因是图像中存在反光的亮点.误判情况如图15.

5 侧面图像缺陷检测

对侧面图像直接作缺陷分割处理,效果通常不会很好,常常会出现误判或漏判的情况,主要是因为图像灰阶分布比较单一和局限,与周围背景的对比度较低,提高了缺陷分割提取的难度.目前图像增强分为在空间域或频域对图像进行处理的两类方法,空间域常用方法有直方图均衡化、指数、对数拉伸、图像滤波等方法,这些增强措施对直方图分布比较广泛的图像来说有较好的效果[16].频域分析法主要包括傅里叶变换、Garbor 变换和小波变换法等.Garbor 滤波器对带有方向性的纹理图像有较好的滤波效果,但实现过程略微麻烦,算法效率不高[17].小波变换是一种时频域分析方法,小波滤波函数具有变化性,可对图像作多尺度的分析,提取图像中的有用信息[18].傅里叶变换能够反映出图像的整体特征,对于图像背景纹理的抑制有较好的效果,在对图像进行傅里叶变换将其变换到频率域上进行滤波操作后,其自身的缺陷信息所受的影响是非常小的,这对于后续的缺陷检测的工作提供了比较有利的前提条件[16].

图15 误判情况示意图

5.1 频域预处理

5.1.1 频域滤波

采用频域滤波法滤去图像的周期性纹理和噪声的影响,突出图像中的缺陷与背景间的差异性.频域滤波的流程如图16,其处理的一般步骤为:

(1)通过fft_generic算子(参数Direction=‘to_freq’)对图像f(x,y)进行快速傅里叶变换(FFT),得到频域图像F(u,v).

(2)构建适合的频率滤波器H(u,v),此步为频域处理的重要步骤.

(3)对F(u,v)作滤波处理,即通过convol_fft算子将F(u,v)和H(u,v)进行卷积,得到滤波后的图像G(u,v).

(4)通过fft_generic算子(参数Direction=‘from_freq’)将滤波后的频域图像G(u,v)经傅里叶逆变换(IFFT)转换到空间域,得到其空间域图像g(x,y).

通常会在滤波前后加上一些预处理(去噪等)和后处理(图像增强)等操作.

图16 频域滤波流程图

5.1.2 滤波器设计

频域滤波处理的难点和关键之处在于滤波器的选择,适当的滤波器能够帮助滤去不需要的频率信息,方便之后对图像缺陷的特征分析.本文借用高斯差分算法(DOG)[19]对缺陷图像进行频域滤波操作,从而加强缺陷与图像背景的对比度.

高斯差分算法步骤如下:

(1)选择标准差为σ1的二维高斯函数H1(u,v)与图像F1(u,v)进行卷积操作,得到平滑滤波后的图像G1(u,v).其中G1(u,v)=F1(u,v)*H1(u,v).

(2)选择相同尺寸、标准差为σ2的二维高斯函数H2(u,v)与图像F2(u,v)进行卷积操作,得到平滑图像G2(u,v).其中G2(u,v)=F2(u,v)*H2(u,v).

(3)将步骤(1)和步骤(2)得到的图像G1(u,v)、G2(u,v)相减,即得到差分DOG 函数,其中DOG=G1(u,v)- G2(u,v).

实验证明通过DOG算法处理后的图像(如图17),螺纹钢表面的缺陷表现为较暗的区域,灰度值要比邻近区域低一些,缺陷与背景的对比度得到了较好的拉伸.

图17 频域滤波后图像

5.2 缺陷识别

频域滤波后,为了完整的分割出位于横肋角部及腿尖的缺陷,并对各种图像具有较好的适应性,还需进一步作后处理和阈值分割处理.

首先通过gray_range_rect算子计算频域滤波后图像的灰度值范围,即以10×10 的矩形为模板,遍历输入图像,在图像的边界处,灰度值被镜像.将每个矩形模板内图像灰度值的最大值和最小值的差值赋值给中心点,结果以图像的形式返回,得到包含灰度值范围的图像Imageresult,以此增强图像纹理之间的对比度,方便阈值分割.然后根据图像Imageresult 的灰度直方图,通过全局阈值分割算子threshold 确定分割的最小灰度值与最大灰度值,选择图像Imageresult 中灰度值在(33,255)之间的区域.提取连通域,基于面积和圆形度特征将缺陷区域提取并在图像中标记出来.如图18 和图19.

图18 图像Imageresult

图19 侧面缺陷检测结果

5.3 实验数据及分析

使用所述频域缺陷检测方法对侧面图像作测试,共37 张存在缺陷的测试图片,缺陷识别率为89.2%.分析发现出现误判的原因是当缺陷出现在纵肋上时,分割效果一般,误将亮点识别为缺陷或未发现缺陷.如图20.

图20 误判情况示意图

6 总结

根据螺纹钢表面缺陷检测的需求提出了采用Halcon 软件开发的基于机器视觉的检测方法.首先对歪斜的螺纹钢图像进行旋转校正,裁剪出螺纹钢所在ROI 区域.然后基于螺纹钢侧面和正面图像纹理形状的差异性,设计了区分方法和不同的缺陷检测方法.对于正面图像,将其分为上、下纵肋和横肋3 部分,采用分区思想进行缺陷检测,有效避免了因螺纹钢整体灰度值相近而带来的缺陷分割困难的问题.对于侧面图像,通过变换到频域中作高斯差分滤波处理来拉伸缺陷与背景的对比度,再结合Blob 分析法进行缺陷的精准提取.实验证明本文设计的缺陷检测方法能够快速准确地判别出缺陷所在处,提高了检测的精度,也降低了漏检率和废品率.

猜你喜欢

螺纹钢频域算子
有界线性算子及其函数的(R)性质
技术创新促进昆钢螺纹钢产品升级
汽车瞬态响应试验频域特性分析
Domestication or Foreignization:A Cultural Choice
一种海上浮式风电基础频域动力响应分析新技术
QK空间上的叠加算子
智慧农业物联网节点故障处理分析
两种常用漂浮式风力机平台动态特性分析
螺纹钢期货和沪深300股指期货的价格联动性研究