关于钢管焊缝缺陷类型检测分析
2018-01-15吴山德
吴山德
摘要:焊缝缺陷指的是在实际操作中由于技术因素或外部环境因素,导致的焊接过程中出现的缺陷。焊缝缺陷危害巨大,无论在哪个领域,所使用的焊件必须保证其无缺陷。在保证识别到缺陷的前提下,需要对缺陷迸行修补,修补的前提是明确得知缺陷的类型。就此,本文分析了焊縫缺陷类型及特点,主要针对静态图像,介绍通过图像分析技术,进行缺陷检测的方法和技术。
关键词:钢管焊缝;缺陷类型;检测分析
1焊缝缺陷类型及特点
(1)裂纹,是工件表面发生断裂,属于致命性缺陷,裂纹比较难检测到,若未检测到投入使用,由于其表面的张力,很容易发生爆破,必然造成严重的后果。
(2)气孔,是焊接过程中由于某些原因使得焊件内进入一部分气体。这是常见的焊缝缺陷,且气孔表现形态多变,如点状气孔,条状气孔,虫状气孔,链状气孔,气体含量过高时还会出现一连串的气孔。
(3)夹渣,是在焊接过程中,焊缝中进入了其他的非焊接材料的物质,夹渣的形态是无固定规律,可以出现点状、条状或不规则形态。当焊接电流很小或者操作速度太快时,容易混入夹渣。
(4)未熔合未焊透,是熔化金属与焊件之间,有一部分空间并没有被焊材完全填充而产生的缺陷。此类缺陷在成像系统中表现出来的是一片黑色的不规则缺陷,这种缺陷出现的位置很随机,但出现时占焊缝中的面积较大,一般人眼也可以识别到,此类缺陷也是一种常见的缺陷类型。
(5)烧穿,是焊接金属通过缝隙从焊件背面流出所造成的缺陷,形成这种缺陷的主要原因是因为电流设置过大,也有其他原因,比如母材根部的间隙大,下料不够精准,底部钝边太小,电弧如果在同一部位长时间停留也会有烧穿出现。
(6)咬边,是一种焊缝衔接不良的缺陷,形成原因与烧穿相似,是由电流过大,电弧过长导致,但是咬边出现的位置都是在焊缝边缘。
2 基于静态图像分析技术的缺陷检测
2.1静态图像的特点
静态图像的分辨率比视频帧高(静态图像为1024×1024,视频帧为512×512),在实际抓拍过程中,通过连续抓拍100次求平均,这样静态图像比视频帧质量要好得多,通过实际使用可知静态图像更适合于利用图像分析算法进行缺陷检测。
2.2缺陷检测流程
对于静态图像,我们按照如下流程对焊缝缺陷进行监测:平滑降噪处理:使用均值滤波对图像进行平滑处理。提取焊缝边界:用两条直线近似代表焊缝的两个边界,在焊缝内进行缺陷检测陷。缺陷检测:使用帧差法和Laplace算子进行缺陷监测。检测结果处理:确定缺陷的个数及类型。平滑降噪处理比较简单,我们直接调用Open CV中的blur函数即可,随后我们主要讨论焊缝边界提取、缺陷检测和结果处理。
2.3焊缝边界提取
2.3.1算法原理。焊缝边缘检测的基本原理是将图像中灰度值(梯度)变化较大的点检测出来,将这些点连接起来构成若干线条,进而得到图像的边缘信息。在边缘检测中,Sobel、Roberts、Canny算子是常用的边缘检测算子,Sobel算子具有很好的边缘检测特性,但易检测出伪边缘;Roberts检测水平和垂直边缘具有很好效果,但对噪声敏感;Canny算子具有很好的边缘检测性能,本文采用的是Canny边缘检测算子。基于DR成像的焊缝图像中,焊缝边缘整体上是规则的,故可用两条直线近似表示焊缝的边界,图3-1是一个典型的焊缝图像,实际过程中,焊缝在坐标系中近似45度。首先采用Canny算子提取边缘信息,之后对提取的边缘信息进行过滤、拟合等处理,经上述步骤,可准确提取出焊缝边界,具体检测流程:焊缝图像→Canny检测→Hough变换检测直线→一次过滤(垂直水平等)→判断直线个数→估计中线→二次过滤→分为左右两部分→拟合→结果。
算法步骤为:①对焊缝图像F进行平滑滤波处理,得到图像F1;②利用Canny算子对图像F1进行边缘检测,得到图像F2;③在图像F2中检测直线,将检测结果存放在集合S1中;④对集合S1中的直线进行过滤,滤除一些可能引起干扰的直线,将过滤后的结果存放在集合S2中。为了实现焊缝边界的准确定位,对S1中的直线进行过滤是必须的,必须过滤掉那些引起干扰的直线段。根据实际情况过滤掉那些长度太短的直线段、接近平行或垂直的直线段;⑤在S2中找到最左边的直线LL和最右边的直线RL,由此得到近似中线ML,以这个近似中线为界,对S2中的直线进行第2次过滤,过滤掉那些在焊缝范围内与ML相交或距离ML太近的线段,最后结果存放在S3中;⑥将S3中的直线分为左右两部分,分别存放在集合SL和SR中;⑦分别对SL和SR中的直线进行最小二乘拟合,最后得到焊缝的左边EL界和有边界ER;⑧实际过程中焊缝的宽度W是己知的,在焊缝范围内计算EL和ER之间的距离D,如果D在合理的范围内则最终得到焊缝的左右边界,小于或大于给定的阂值,否则检测失败。
2.3.2算法实现
我们调用Open CV相关函数可容易实现上面的焊缝边界提取算法。下表列出了在提取焊缝边界时调用的Open CV函数,其中的关键参数名称及其意义参见Open CV说明文档中的函数原型。
我们利用C++编写一个函数,实现焊缝边界检测,函数原型如下所示:
本函数作为CHanFeng类的成员函数,如果检测成功返回true,将结果存放在两个直线类型的数据成员中,