陈宏远,许小进,庞静珠,李康妹
(1.东华大学 机械工程学院,上海 201620;2.国核电站运行服务技术有限公司,上海 200233)
核电站燃料组件受水下工作环境、装配应力和热应力等因素的影响,在工作中产生局部变形等问题,因此,核电站水下核燃料棒的高精度检测与维护是其安全运行的重要保障[1]。由于水下检测条件恶劣,水下核燃料棒高精度三维测量面临着巨大的挑战。基于线激光扫描的单目视觉测量方法采用单目摄像机在被测物表面做左右方向的扫描运动,获取线激光条纹信息,通过提取激光条纹中心,将其转换为三维点云坐标,实现被测物尺寸的高精度测量。水下检测中的激光条纹照射质量、水下检测环境和待测物表面特性都会对摄像机采集的光条图像造成影响[2],从而给中心线的提取带来一系列问题。因此,如何精确快速地提取光条中心线,是保证整个检测系统测量精度的关键一步。
近年来,国内外学者提出了许多条纹中心提取方法[3-4],主要有几何法[5]、极值法[6]、骨架提取法[7]、高斯拟合法[8]、方向模板法[9]、灰度重心法[10]等。极值法运算速度快,但若光条出现多个极值,定位精度会明显降低;骨架提取法方法简单,但其精度受环境影响大。田庆国[11]提出基于轮廓线多边形提取方法,可快速定位光带横截面方向并进行中心提取;方向模板法稳定性较弱,中心提取效果一般,王泽浩[12]提出自适应方向模板法,提高了方向模板的提取稳定性;高世一[13]提出变边限高斯拟合提取激光条纹中心线法,可适应条纹宽度进行高斯拟合;吴家勇[14]针对灰度梯度特性,提出了梯度重心法,有效提取了光条中心;Steger[15]基于Hessian 矩阵得到光条横截面上一阶导数零点位置,求得光条纹中心线的亚像素位置,其考虑了光条几何特性,定位精度高,但无法解决光条中心多极值的问题,且运算速度慢,无法满足实时测量需求;灰度重心法考虑了光条灰度特性,运算快,熊会元[16]提出应用灰度梯度计算光条法线方向,在法线方向上应用灰度重心法精确提取光条中心的方法,解决了被测物体表面曲率变化大的问题;程鑫[17]结合Hessian 矩阵对光条的中心进行定位,利用高斯曲线准确拟合出激光条的中心。以上算法提高了光条中心提取的速度及鲁棒性,但对于提取水下高反光表面光条中心的问题未能很好解决。
基于上述分析,本文提出了一种反光表面条纹自适应中心提取算法,基于光条几何特性自适应修正高反光区域轮廓,结合图像灰度卷积处理方法自适应修正高反光区域灰度分布,经灰度重心法确定中心点的亚像素坐标,实现了水下核燃料棒表面激光条纹中心的高精度提取。该方法可以有效地减少水下噪声及核燃料棒反光影响,准确、快速地提取激光条纹中心,控制三维重建精度在0.2 mm 以内,满足核燃料棒变形测量精度0.3 mm的需求。
当激光器投影到物体表面,将形成一定宽度的激光条纹,其光强从条纹中心展开,满足高斯分布。其条纹截面灰度值分布曲线的表达式为
式中:S为灰度值的幅值;σ为标准差;μ为光条截面坐标;d为光条中心坐标。
因激光器自身质量、测量环境及被测量物体材质的不同,单目摄像机所采集的激光条纹灰度分布差异性较大,为此,截取核燃料棒原始图像中激光条纹部分,绘制光条左部和中部截面的灰度分布曲线,见图1所示。
图1 原始激光条纹及其截面灰度分布Fig.1 Original laser stripes and section gray distribution
根据图1分析可以得到原始激光条纹图像具有以下特征:1)光条边界附近存在水下环境噪声干扰;2)光条截面灰度极值不同,截面宽度存在差异;3)光条中间部分存在高反光区域,轮廓改变,灰度分布不满足近似高斯分布。
通过以上特征可以得到,受水下测量环境影响,获取的激光条纹图像存在大量噪声,影响激光条纹分离提取;受物体表面反光特性影响,光条中部截面处存在多灰度极值的情况,靠近光条中心灰度值迅速增加;受金属镜面反光特性影响,条纹中心出现垂直方向的反光噪点,通过调整图片曝光时间及拍摄角度可以减轻;通过传统提取中心算法难以获得精确激光条纹中心,中心线提取依赖光条中灰度分布符合高斯分布的截面信息。
文中出现较多物理量,主要分为3类。第1类是像素灰度值,其中ω表示像素点经预处理的灰度值;ω′表示像素点经自适应阈值提取的灰度值;ω″表示像素点经过灰度修正的灰度值。第2类是灰度分布,其中Tn表示灰度修正卷积模板;G(i,j)表示光条所在矩形内的点集。第3类是光条几何特征,其中wn表示激光条纹宽度;kv表示光条轮廓的切线方向;kn表示光条的截面方向。
实际图像中因其他因素产生的噪声,需要通过图像去噪将其消除。通过对图像中噪声研究发现,水下核燃料图像中的噪声主要分为两种:一是孤立噪点或者由几个噪点组成的假光点;二是沿核燃料棒上下边缘的线状反光噪声。通过滤波方法及卷积运算消除噪声,保证对激光条纹区域提取的精确性。
1)首先利用中值滤波处理图像,通过在噪点周围定义一个5×5的邻域窗口,对窗口中像素点灰度值进行升序排列,取灰度值的中值作为滤波结果,可以去除水下核燃料棒激光条纹图像中的椒盐噪点。
2)对原始图像进行全局阈值的二值化处理,根据原始图像选择合适的灰度阈值Ct,计算实现图像二值化:
式中ω(μ,ν)表示二值化后的光条在坐标(μ,ν)处的灰度值。
在灰度值非零的点上利用3×3 模板去除噪点,模板如图2所示,a1~a8分别对应图像中的每个像素的位置。
图2 卷积模板Fig.2 Convolution template
将该卷积模板在图像上移动,根据(3)式计算判定该点是否为噪点:
通过对点(μ,ν)的A值进行判断,去除图像中的孤立噪点和沿核燃料棒上下边缘的反光噪点。将去噪图像与原始图像各像素灰度值相乘,获得具有原始灰度信息的去噪激光图像,最后使用高斯滤波平滑图像。
3)根据图像灰度值,实现激光条纹的自适应阈值提取。从垂直激光平面方向开始扫描,寻找包含像素点的灰度值为255的行。当第一次检测到时,记该点为(imin,jmin),最后一次检测到时,记该点为(imax,jmax),框选出包含光条位置的矩形,矩阵宽度为wd。则光条所在的矩形内点集G(i,j)为
根据每列像素灰度值对该光条截面的不同影响程度确定阈值,选择使用基于梯度的自适应行阈值法在矩形内计算每列的阈值。如图3所示,将激光条纹图像中任一列的灰度分布抽象为两条一次函数:
图3 自适应阈值原理Fig.3 Principle of self-adaptive threshold
计算两像素点间灰度梯度Vmn:
式中ω(m,n)是点(μ,ν)在图像第m行n列的灰度值。
计算每行灰度梯度的平均值Bn:
式中D为光条大致宽度。
在进行测量时,D为25个像素。通过下式判断点(μ,ν)是否属于光条有效点:
式中:gn表示阈值界限系数;Gmax表示每行灰度的最大值;ω'(μ,ν)表示自适应阈值提取的光条在点(μ,ν)处的灰度值。
该方法能使光条的提取阈值根据列像素自适应变化,快速将激光从环境背景中提取,图4(a)为经自适应分割的光条图像。通过图4(b)分析,光条附近噪声被去除,提取出的光条图像边界明显,保证了提取精度。
图4 自适应阈值分割及其激光截面灰度分布图Fig.4 Self-adaptive threshold segmentation and gray distribution of laser section
提取的光条已从图像背景分割,但由于反光现象,激光条纹在被测物体表面的轮廓发生改变,此时直接进行光条中心线提取无法达到精度要求。为解决这一问题,选取灰度分布满足高斯分布的光条截面端点,采用3层BP神经网络对所选坐标点进行曲线拟合,拟合出两条激光条纹轮廓,对光条进行进一步的修正提取。
如图5所示,BP神经网络设定输入层结点为X,隐藏层节点为h,输出层节点为Y,输入层和输出层节点数为1,隐藏层的节点数C为2。设定wic为输入层到隐层第c个节点之间的连接权值,ψc表示隐层第c个节点的阈值;woc为隐层第c个节点到输出层之间的连接权值,θ表示输出层节点的阈值;隐层输入变量为hic,c=1,2,隐层输出变量为hoc,c=1,2。
图5 神经网络的基本原理Fig.5 Basic principle of neural network
隐层激活函数fh选用(10)式Sigmoid函数,输出层激活函数fo则选用purelin函数。
隐层的第c个节点的输入为
隐层的第c个节点的输出为
输出层节点的输入为
输出层节点的输出为
设定Y(k)为第k个点的纵坐标,对图像中提取的总数为K的像素点拟合轮廓,在网络反向传播时神经网络得到的轮廓位置误差为
式中yo(t)(k)为神经网络权值在第t次调整后得到的第k个点的纵坐标。
根据Levenberg-Marquardt 最优化算法调整,得到最终神经网络权值。训练直到网络输出的误差减少到给定误差,或进行到预先设定的训练次数时,可以停止训练。设定目标误差为0.01,设定最大训练次数为1 000次,训练数据选取各行两端的非高反光区域像素坐标点,确定其为曲线轮廓拟合的真实值,基于条纹轮廓真实值进行预测,最终得到激光条纹的拟合曲线如图6所示。
图6 轮廓拟合Fig.6 Contour fitting
分别提取光条两边有效像素点进行轮廓拟合,可以获得经过轮廓修正的激光条纹图像,如图7所示。
图7 轮廓修正后的激光条纹Fig.7 Laser stripe after contour correction
如图8所示,两组数据分别为轮廓修正前后的激光条纹各行宽度,因反光干扰,修正前条纹各行宽度变化较大。通过BP神经网络对激光条纹的轮廓进行拟合,修正表面反光造成的光条宽度变化的部分,解决了激光条纹轮廓变形问题。
图8 轮廓修正前后的光条宽度Fig.8 Width of light bar before and after contour correction
激光条纹反光部分轮廓已经修正,但各像素灰度值仍未改变。此时若对光条进行中心线提取,反光区域将存在多极值点的情况。本文方法通过设定自适应卷积模板修正光条灰度分布,利用条纹宽度信息生成模板对图像进行卷积运算,获得经灰度分布正常的激光条纹图像。因为线激光照射在被测物体表面后其灰度分布近似符合高斯分布,所以灰度修正系数将通过高斯函数设定。同一列中,像素修正系数由中部向列两边依次递减,激光条纹图像中任意一点p灰度修正系数表示为
式中:wn(n=0,1,…,N−1)为经过轮廓修正的激光条纹图像中点p所在第n列的非零灰度值像素个数,即光条带宽;N为含有非零灰度值的总列数,表示激光条纹长度;mp为点p所在行数;mmin为点p所在的n列中第1个非零像素点的行数;б为高斯函数标准差,取值为4;δ为固定系数,取值为0.95。
因为点p的灰度修正系数已经求得,所以激光条纹上的点p修正灰度值如(17)式所示:
式中:ω″(μp,νp)为点(μ,ν)经过灰度修正后的灰度值。
已知任意点的灰度修正系数后,可设计激光条纹图像中任意列的灰度修正卷积模板。卷积模板的行数设为激光条纹宽度wn,列数设为1,此时激光条纹的每个截面都可生成与其截面宽度相适应的灰度修正卷积模板Tn(n=0,1,…,N−1)。由(16)式知fp的范围在(0~1)之内,且根据光条截面宽度wn,fp在模板中间时取最高值,然后依次向两边递减。激光条纹图像中任意列n的灰度修正卷积模板为
式中Mn为激光条纹第n列含有非零灰度值的总行数。
根据激光条纹宽度生成自适应灰度修正卷积模板,在光条原始灰度分布矩阵I(β,α)上自左向右进行滑动运算,可以得到激光光条修正后的灰度分布:
式中:α为光条原始图像中含有非零灰度值的总列数;βm为第m列中含有非零灰度值的总行数,且1≤m≤α;β为激光条纹各列中含有非零灰度值总行数的最大值。
对经轮廓修正的水下核燃料棒扫描图像进行卷积灰度修正,其结果如图9(a)所示。
图9 灰度修正后的激光条纹及其截面灰度分布Fig.9 Laser stripe after gray correction and section gray distribution
激光条纹反光部分灰度值过高,灰度分布改变,因此通过自适应卷积模板处理激光条纹图像灰度,对中间高反光区域进行灰度值降低使其满足高斯分布规律,如图9(b)所示,与图4(b)对比所见,获得了良好效果。
采用灰度重心法对完成修正的光条图像进行激光条纹亚像素中心提取。因为核燃料棒是圆柱体,所以线激光平面与核燃料棒表面相交形成的激光条纹轮廓通过单目摄像机采集后成曲线轮廓。对于非直线激光条纹的中心提取,需要在其光条截面方向进行。如图10所示,因为光条轮廓线已确定,所以可以通过计算其轮廓线上任一像素点的切线kv,确定光条的截面方向kn。
图10 激光截面中心Fig.10 Center of laser section
取轮廓线上一点为q,通过光条轮廓线在q点的一阶导数可求得该点在光条轮廓上的切线斜率kv。此时易得出经q点的光条截面方向斜率kn:
光条截面方向线条经过q点后向前后方向延长,直至抵达光条边界像素点,自适应光条宽度。通过判断像素点所在的行向量与列向量是否与斜率kn同时相交,确定其是否被光条截面方向线条经过。将符合条件的像素点记为一组像素点集合Xq={xh|xh=(μh,νh),h=1,2,…,H},其中H为光条截面方向斜率kn所经过的像素点总数。q点所在截面的亚像素中心通过在该像素点集合Xq内使用灰度重心法求解:
式中:xq为q点所在光条截面的亚像素中心横坐标;yq为纵坐标。
采用Visio studio 2013 作为软件开发平台、结合OpenCV 3.0 库及PCL 1.8.0点云库实现文中方法。如图11所示,采用的水下核燃料棒线结构光测量平台,搭载Mako G-507 PoE 工业相机,其分辨率为2 464(H)× 2 056(V)像素,像素尺寸为3.45 μm×3.45 μm;激光器波长为520 nm。通过经水下标定的水下核燃料棒测量系统对核燃料棒尺寸进行测量。
图11 水下核燃料棒测量系统Fig.11 Underwater nuclear fuel rod detection system
图12(a)~12(c)分别选用传统灰度重心法、基于最小二乘拟合中心提取算法[18]和文中算法进行激光条纹中心提取。从图12(a)可以看出,传统灰度重心法提取的光条中心线条受反光影响,光条中心点存在前后错开的现象,线条不连续;图12(b)中基于最小二乘拟合中心提取算法对光条进行提取,光条中心线条连续性增加,但由于其提取的中心点与拟合中心点重合不足,存在线条中心不唯一的情况,容易产生噪点;图12(c)为文中算法,算法充分利用了光条的有效数据,光条中心线条连续性较好,更客观地反映了光条中心分布情况。
图12 不同激光条纹中心提取方法对比Fig.12 Comparison of different laser stripe center extraction methods
使用3种算法提取激光条纹中心线后生成点云进行对比。图13(a)点云为传统灰度重心法生成,图13(b)点云为基于最小二乘拟合中心提取算法生成,图13(c)点云为文中算法生成。结构光中心线提取不准确,将导致通过图像坐标点求解出的三维坐标发生较大偏差,产生点云离群现象。可以看出,通过传统灰度重心法和基于最小二乘拟合中心提取算法得到的点云含有较多的离群噪点,被测物体各部分的反光导致多数截面光条中心线条出现断点和噪点,这些会影响点云测量的准确性;通过文中算法解决因反光造成的结构光中心线提取不准的现象,可以明显看到所获得的点云大量噪点被消除,圆柱点云表面更加光滑。
图13 点云计算结果Fig.13 Calculation results of point cloud
通过对10组测量提取的激光条纹中心线生成的点云进行直径测量,与核燃料棒人工采用游标卡尺测量的结果进行比对。表1所示为10组拟合直径统计结果。针对水下核燃料棒检测要求,测量数据应保持高精度与稳定性,传统灰度重心法在水下测量中稳定性较好,但是其测量数据误差较大,基于最小二乘拟合中心提取算法的测量数据的最大误差和平均误差有所减少,但是其稳定性不足。文中算法相较于传统灰度重心法和基于最小二乘拟合中心提取算法平均误差明显降低,分别为97%和89%,测量稳定性分别提高9%和33%,测量效果良好,拟合圆柱的误差在0.2 mm 以内。可以看出,文中提出的算法能够有效减少核燃料棒水下测量的噪声,具有较好的稳定性和精确性。
表1 核燃料棒测量结果Table1 Measurement results of nuclear fuel rod mm
针对水下核燃料棒检测过程中激光条纹受水下环境噪声及反光影响的问题,本文根据激光条纹特征提出了结合BP神经网络轮廓拟合与卷积运算的自适应激光条纹亚像素中心提取方法。文中算法通过对核燃料棒反光部分的几何特性与灰度特征进行自适应修正,实现了水下核燃料棒表面激光条纹中心线的高精度提取。实验证明,使用该方法实现了在水下测量650 mm 处燃料棒尺寸误差控制在0.3 mm 以内。与其他算法进行比较,平均误差分别降低97%和89%,稳定性分别提高9%和33%,验证了该算法测量的精确性和鲁棒性。文中算法对于核燃料棒尺寸的准确测量,保证核燃料组件安全运行具有重要意义。