涂德浴,刘 坤,朱 庆,2,刘庆运,2
1.安徽工业大学 机械工程学院,安徽 马鞍山 243002
2.特种重载机器人安徽省重点实验室,安徽 马鞍山 243032
当前,制造业的自动化程度越来越高,测量作业作为制造业中至关重要的环节也在不断地发展。在钢管生产过程中,需要对钢管壁厚进行实时检测,这对于提高钢管的生产质量有着重要的意义。目前钢管行业中一些轧管厂在对钢管的管端进行尺寸测量时长期靠人工用量具进行手动测量,测量数据偏少,对壁厚不均和椭圆度不能给出直观的判断,测量准确性受生产节奏、环境和量具精度及测量人员的主观因素影响较大。传统的尺寸测量方法有卡尺和量规测量等,这些方法虽然比较简便和快捷,但是测量的数据比较少,精度也不高。而随着我国经济水平的提高以及对工业产品检测精度要求的提升,传统的尺寸测量方法对工业生产领域已经不是很适合。其他检测手段如激光测厚法[1]、三坐标测量仪、CR技术测厚[2]和γ射线测厚、超声波测厚仪[3]等测量方法虽然测量的精度比较高,但是需要检测设备在一定的环境中才能进行检测,并且使用不便捷,投入较大。
机器视觉技术[4-9],是一门涉及多领域的交叉学科,其主要通过计算机来模拟人的视觉功能,从客观事物的图像中提取信息,并加以处理与分析改进,从而用于实际的检测、测量和控制。将机器视觉技术应用于尺寸测量中,具有非接触性、测量效率高的特点,同时可实现在线高精度测量,因此机器视觉技术在尺寸测量中的应用越来越广泛[10-14]。通过查阅大量有关钢管壁厚在线检测及其相关的文献发现,有关基于机器视觉钢管壁厚在线检测的研究相对少,许多只是对于管状类零件尺寸如内外径长度等进行测量,并且有些壁厚检测并不完善,仍需进一步改进。基于以上情况,本文提出一种基于机器视觉测量技术的钢管壁厚在线检测方法。图1 为该方法检测钢管壁厚流程图。
图1 钢管壁厚检测流程图Fig.1 Flow chart of detection of wall thickness of steel pipe
由于拍摄环境较为复杂,在采集钢管断面图像时会混入大量无关信息,需要去除这些无关信息。图像预处理的目的是消除图像中的无关信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而提高图像检测、识别的可靠性。图像预处理包括图像滤波、图像分割、图像边缘检测、图像增强[15]等操作。图像滤波的目的是消除图像中混入的噪声,为图像识别抽取出图像特征;图像分割的目的是将图像的边缘、感兴趣区域等有意义的特征部分提取出来,为进一步图像识别、分析和理解奠定基础;图像边缘检测的目的是检测并识别图像中亮度变化明显的点,大幅度地减少数据量,并且剔除不相关的信息,保留图像重要的结构属性。
图像滤波[16-17],是指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响后续图像处理和分析的有效性与可靠性。有关图像滤波可分为线性滤波与非线性滤波。常见的线性滤波有方框滤波、均值滤波、高斯滤波、拉普拉斯滤波等,通常线性滤波器之间只是模版的系数不同。常见的非线性滤波有中值滤波器和双边滤波器[18]。
选取大小为600×800像素的钢管断面图像在Visual Studio 2017 平台下进行滤波实验。分别使用高斯滤波、双边滤波、高斯与双边混合滤波进行对比实验,实验效果如图2所示。
图2 图像滤波对比图Fig.2 Comparison of image filtering
从效果图中可以看出高斯滤波与中值滤波处理后仍然含有少量的噪声,并且图像边缘也有着不同程度的模糊,丢失了原始图像的一些细节信息。混合滤波算法较好地去除了钢管断面图像中的噪声,且较好地保留了钢管断面图像的边缘轮廓。因此采用高斯与双边混合滤波对钢管断面图像进行滤波处理。
图像阈值分割[19]是一种较为典型的区域分割技术,其中阈值的确定是图像分割的关键环节,阈值大小的选择直接影响图像分割的效果。因此,为了得到较好的分割效果就必须选择合适的分割阈值,阈值选择较大时可能将本应该是目标的点错误地判定为背景,选择较小时可能将本应该是背景的点作为目标点。在钢管断面图像采集的过程中,由于拍摄背景较为复杂,对于图像阈值分割中阈值的选择可能不是一定的,需要根据不同的环境而选择不同的阈值。常用的阈值分割方法有自适应阈值分割法、最大熵阈值分割法、OTSU 法[20]、迭代阈值分割法。
下面选用采集到的钢管断面图像进行对比实验,分割效果如图3所示。
图3 阈值分割对比图Fig.3 Comparison picture of threshold segmentation
从以上分割效果图可以看出,相较于其他几种算法,OTSU 分割效果较好,而且避免了人为设置阈值的不便,提高了算法的分割效率。因此,本文采用OTSU法作为图像预处理的分割算法。
进行图像分割之后,需要检测钢管图像的边缘。对于边缘检测[21],要求所检测的边缘尽量完整、清晰,同时要尽量降低虚假边缘与噪声的干扰。目前比较成熟的、应用比较广泛的边缘检测算法有Canny算法、Prewitt算法、Sobel算法、Laplacian算法等。
使用Canny算法、Prewitt算法、Sobel算法、Laplacian算法分别对钢管断面图像进行边缘检测,检测结果如图4所示。
图4 边缘检测对比图Fig.4 Comparison of edge detection
从检测结果来看,Canny 边缘检测[22]相较于其他三种方法能够获得较为完整的边缘,定位精度高,并且所获得的边缘几乎没有虚假的边缘与噪声。因此,采用Canny边缘检测作为钢管断面边缘检测的方法。
在图像处理过程中,圆形的检测是钢管壁厚检测中一个至关重要的部分,是保证后续钢管壁厚尺寸精度的重要环节,同时也是壁厚检测的基础。常用的圆检测方法[23-24]有Hough变换检测圆方法、霍夫变换及其变形、最小二乘法拟合圆等,其中应用最广泛的是Hough变换及随机Hough霍夫圆检测[25]。Hough变换具有较强的鲁棒性,但是其计算量过大,检测耗时且内存需求量要求较高,以及传统的Hough 变换无法检测同心圆。随机Hough 虽然大大减轻了内存的负担,节省大量内存空间,避免了Hough 变换一到多映射的巨大运算量,但在处理带有一定噪声且复杂度较高的图像时,由于随机采样的无效点太多,造成了大量的无效累积。因此,本文基于随机Hough圆检测提出了改进,改进后的算法主要分为两部分:
(1)候选圆的检测。采用分区域随机采样的方法进行随机三点的边缘点采样,避免原有随机Hough检测算法中随机采样的3 点距离较近时,出现采样3 点共线及检测出的圆出现严重偏差的情况,从而减小了无效采样的累积。将随机采样的3点代入圆的方程,得到候选圆的圆心坐标与半径。
(2)真圆的筛选。计算得到候选圆圆心与轮廓边缘各点间的距离Li,统计每个候选圆| |Li-r0<c(c为差值阈值)的边缘点个数z,其中z值最大的候选圆即为真圆。原有随机Hough检测算法通过设置边缘点阈值,当候选圆z值达到边缘点阈值时,该候选圆即为真圆。本文检测算法无需设置边缘点阈值,从而避免了原有随机Hough检测算法人为设置边缘点阈值的不便,由于z值越大候选圆越接近于真实圆,本文检测算法提高了原有检测算法的检测精度。
2.1.1 候选圆的检测
由于原随机Hough 检测算法通过随机选取3 点的方式来计算得到候选圆,当检测图像边缘较为复杂,随机采样的3点距离较近时,检测出的圆可能会出现较大偏差以及随机采样的3点出现共线的情况,从而造成大量的无效累计。本文通过分区域采样的方式随机采集3点来构造候选圆,并设置采样轮廓边缘点的最小边缘点数,进而去除无关轮廓边缘,提高了采样的准确度。首先将边缘检测出的钢管图像轮廓信息通过一定算法构造出边缘点集D,将边缘点集D平均分为三部分S1、S2、S3,如图5所示。
图5 分区采样图Fig.5 Areal sampling
随机分别从3个边缘点区域内选取一点,然后将随机选取的3个点(xa,ya)、(xb,yb)、(xc,yc),带入到圆的方程来计算圆的参数,从而获取候选圆。用3 个参数x0、y0和r0表示每个候选圆P(x0,y0,r0)。其中(x0,y0)是圆心坐标,r0是半径。
通过式(1)、(2)、(3)、(4)计算出每个候选圆P的圆心坐标、半径。
2.1.2 真圆的筛选
在获取候选圆后,需要对候选圆进行筛选以获取真圆信息。为了验证候选圆是否为真圆,需要对候选圆进行相关条件设置。设候选圆P圆心坐标为(x0,y0),半径为r0,外接矩形的左上角坐标为(x,y),边长为h,宽为w。轮廓外接矩形中心坐标为(x+h/2,y+w/2),设候选圆圆心与轮廓外接矩形中心之间的距离为k,若其圆心坐标与半径满足式(5),则说明该候选圆可能为真圆。如图6所示为多个候选圆的检测图像。
图6 多个候选圆的检测图像Fig.6 Detection image of multiple candidate circles
式(5)中所有数值的单位均为pixel,其中0.5是由于存在轮廓伪边缘点而设置的允许误差,经过多次实验选取两中心点之间的距离阈值为10。
进一步地筛选,计算候选圆圆心与轮廓边缘点集中各点的距离Li(i=0,1,2,…) 与候选圆半径r0的差值。设定差值阈值c,z为|Li-r0|<c的边缘点个数,令z值初始化为0,当轮廓边缘点满足|Li-r0|<c时z值加1,通过循环取得候选圆的最终z值。统计所有候选圆z值,其中z值最大的候选圆即为真圆。如图7所示为最终真圆的检测图像。
图7 真圆的检测图像Fig.7 Detection image of real circle
改进算法描述如下:
(1)构造边缘点集D,将边缘点集D平均分为三部分,初始化候选圆集合H=null,初始化循环次数k=0,并设定最大循环次数Kmax。
(2)随机分别从3 个边缘点区域内选取一点,并令k=k+1,转步骤(3)。
(3)由随机选取的3个边缘点以及圆的方程来计算圆的参数,从而获取候选圆P(x0,y0,r0),并从集合D中去除选取的3点,转步骤(4)。
(4)判断3点构成的候选圆半径r0是否在最大半径rmax与最小半径rmin的范围内,即若rmin≤r0≤rmax,则转步骤(5);否则转步骤(2)。
(5)判断候选圆P的圆心(x0,y0)坐标是否在圆轮廓的外接矩形中,即设外接矩形的左上角坐标为(x,y),长为h,宽为w。若0 ≤x0-x-0.5 ≤w且0 ≤y0-y-0.5 ≤h且r0-h/2-0.5 ≤0,说明候选圆P的圆心在轮廓的外接矩形内,转步骤(6);否则转步骤(2)。
(6)计算候选圆圆心与轮廓外接矩形的中心坐标之间的距离k,并判断该距离是否小于设定的阈值,若小于则转(7);否则转步骤(2)。
(7)计算候选圆圆心到轮廓边缘点集D中各点的距离Li(i=0,1,2,…)与候选圆半径r0的差值,设定差值阈值c,z为|Li-r0|<c的边缘点个数。令z值初始化为0,当轮廓边缘点满足|Li-r0|<c时z值加1,通过循环取得候选圆的最终z值。转步骤(8)。
(8)判断候选圆是否已经检测完,即若k<Kmax,转步骤(2);否则转步骤(9)。
(9)统计候选圆集合H中所有候选圆的z值,其中z值最大的候选圆即为真圆。并判断下一轮廓是否为空,若为空,则结束;否则转步骤(1)。
算法流程图如图8所示。
图8 改进随机Hough圆检测算法流程图Fig.8 Flow chart of improved random Hough transform circle detection algorithm
成像系统获取钢管端面图像后传输到计算机内存中转换为数字图像,并将采集到的钢管断面图像进行图像滤波、图像分割、图像边缘检测等预处理。之后经改进随机霍夫圆变换检测钢管端面边缘图像,获取了钢管断面轮廓的圆心与半径。然后通过测量方案进一步计算得到钢管端部壁厚,其具体测量方案如下:
将钢管壁厚测量问题转换为圆与直线交点的问题,即以检测出的钢管端面内外圆的任意一个圆的圆心作为参考点。然后从参考点发射一条直线在一三象限或二四象限内与钢管内外圈相交,直线与内圈、外圈交点之间的法向距离即为此部位钢管壁厚。根据精度要求将直线绕参考点沿圆周方向扫描一周,得到钢管整圈壁厚样本。如图9所示。
图9 测量方案图Fig.9 Programme of measurement
本文选择每隔20°与每隔1°进行一次壁厚测量,通过对比发现当测量间隔变小时检测精度有所提升,但检测时间明显增加。同时选择每隔20°进行一次测量,这种测量方式也能较好地反映钢管壁厚。综合考虑选择每隔20°进行测量,共测得18处壁厚,如图10所示。
钢管壁厚检测系统是通过采集到的图像来计算钢管壁厚的实际尺寸,因此需要对其进行标定以此获得钢管壁厚的实际尺寸。标定步骤为:首先选取钢管端面某一处进行标记,并用测量工具测出此处的钢管厚度值并记为h(单位为mm),然后获取此处的像素值壁厚记为H(单位为pixel)。则壁厚像素值转换成实际尺寸的公式可表示为:
k为像素当量,单位为mm/pixel。
为了减小误差提高检测精度,取多处钢管壁厚进行标定。选取60°与140°方向及其对角线处的4处壁厚进行标定,然后由式(6)可得4 处的像素当量,如图11 所示。取4处像素当量平均值得到标定系数s。
图11 系统标定图Fig.11 Systemic calibration
为了验证本文检测系统在钢管壁厚检测中的可行性,在Windows10 系统下,处理器为Intel i5,运行内存为8 GB的电脑上,程序采用C++编写,使用Opencv3.4.6平台对钢管断面图像进行了图像处理。
实验采用600×800 像素大小的两种不同拍摄环境下的不同规格钢管断面图像进行实验测量,如图12所示。
图12 钢管样本测试环境图Fig.12 Testing environmental for steel pipe sample
根据设计的检测算法进行计算分析得出测量结果。并将改进随机霍夫变换(randomized Hough transform,RHT)与最小二乘法圆检测、随机抽样一致性(random sample consensus,RANSAC)算法、RHT 算法检测结果进行了比较,两种图像检测结果如表1、表2所示。
表1 样本1钢管壁厚检测结果Table 1 Detection result of wall thickness of steel pipe for sample 1
表2 样本2钢管壁厚检测结果Table 2 Detection result of wall thickness of steel pipe for sample 2
从表1中可以看出,改进后的随机霍夫圆检测在时间和检测精度上都优于其他三种检测算法,检测精度约为0.1 mm,与改进之前相比提高了约3倍。从检测时间上看,改进后的检测算法检测时间约为1 s,较改进之前时间缩短了一半,且与其他两种检测算法相比,检测用时也都有不同程度的提升。从检测的最大误差来看,改进后的检测算法最大误差为0.223 1 mm,小于其他几种检测算法所得结果。均方根误差表示壁厚检测值与真实壁厚值之间的偏差,可以看出改进后的检测算法壁厚检测值与真值相差较小。
从表2 中可以看出,相对于样本1 的钢管断面图像检测结果,由于样本2放置环境中增加了无关物体干扰项,各检测算法检测精度都有所改变,其中最小二乘检测算法变化最大。这是由于最小二乘法圆拟合对于图像边缘要求较高,当图像边缘出现无关边缘点时会对拟合结果产生较大的影响。本文检测算法相较于其他几种检测算法变化较小,检测精度约为0.1 mm,并未明显变化,说明本文检测算法具有较好的鲁棒性。
为了能够更加直观地观察各处钢管壁厚误差变化情况,选择每隔20°进行均匀测量,共测得18处壁厚,并将样本1 与样本2 的各处误差进行统计,结果如图13、图14所示。
图13 样本1壁厚误差统计图Fig.13 Statistical deviation of wall thickness for sample 1
从图13 与图14 可以看出,与其他几种检测算法相比,本文检测算法下钢管壁厚各处误差相差较小且大部分接近于0,并且检测环境的改变并未使得壁厚误差产生较大改变,说明本文检测算法优于其他几种检测算法。
图14 样本2壁厚误差统计图Fig.14 Statistical deviation of wall thickness for sample 2
为了解决传统钢管壁厚测量方式中存在的测量速度慢、测量精度低以及难以实现测量的实时性等问题,本文提出一种基于机器视觉的钢管壁厚在线检测方法。该方法利用单目相机,结合Opencv3.4.6平台,通过改进RHT算法实现钢管壁厚的在线检测。实验证明该方法的壁厚测量误差约为0.1 mm,且效率高,能够满足对钢管壁厚在线检测的要求,具有一定的实用价值。
本文运用了改进后的随机Hough圆检测算法,提高了原有检测算法的检测精度与效率,弥补了原有检测算法由于噪声和复杂背景的干扰,从而产生大量无效累计的缺点。
该方法实现了非接触测量,是一种无损检测方法。在此基础上,还可以对所测钢管是否符合生产要求进行判定,从而筛选出残次品。