本发明属于核电站视频无损检查、图像处理技术领域,具体涉及一种螺纹全景图像合成方法。
背景技术:
核电站反应堆压力容器螺栓孔的维护对于电站的安全运行起到了重要的作用。通常采用的检查方式为单摄像头旋转升降采集整个螺孔螺纹的图像,或者由多个摄像头分别取景螺孔不同螺纹段,并提供视频或图片以供目视检查人员查看。本方法为方便目视检查人员工作,采用多摄像头在不同方位对螺纹取景后,借助图像拼接技术,将拍摄到的多张分块图片通过配准和融合,合成一幅完整的全景图片。
图像拼接是一种集图像处理、计算机视觉等多学科领域知识的交叉处理技术。现有的图像拼接方法一般采用提取图像特征,比配特征,计算变换矩阵等方法。存在特征点提取速度慢,而且鲁棒性低。尤其是在图像中存在尺度变换、视角变换、光照变化时,图像拼接处理效果不理想。
2004年,David.Lowe完善并总结了他在1999年提出的SIFT算法,该算法对两幅图像间的水平移动、旋转变化、缩放变化、尺度变化甚至仿射变化均有较为稳定的匹配能力。传统的SIFT特征提取算法是在整幅图片中提取特征,然后生成特征向量并进行特征匹配,其计算量大,影响运算速度,虽然误匹配概率较小但仍存在。SURF特征是Herbert Bay等人于2006年提出来的全称为加速鲁棒特征,实质上是改进版的SIFT特征,它的主要特点是快速性,同时也具有尺度不变的特性,对光照变化和仿射、透视变化也具有较强的鲁棒性。
因此本发明利用螺栓孔内壁螺纹特性,首先对成像系统建模,校正枕形失真。然后提取SURF特征结合近似快速最近邻搜索算法FLANN快速匹配特征点,提高图像拼接效率。在纵向拼接方面考虑螺栓图片特征,检测螺纹直线,根据直线位置进行拼接。最后根据位置信息融合拼接区域。
技术实现要素:
本发明目的在于为了方便目视检查人员更有效的进行反应堆压力容器螺栓孔螺纹缺陷检查,通过多摄像头多角度拍摄螺纹,并通过图像拼接合成形成整个螺孔螺纹的展开图。可通过检查此图片即可完成缺陷检查工作。此方法也可应用于大部件的目视检查工作。
本发明的技术方案如下:
一种螺栓孔内壁全景图像合成方法,包括:
步骤一:现场实测,选定摄像头参数;将若干个摄像头竖直排列,由机械臂送入螺栓孔内,根据现场实测,选定镜头焦距与光圈大小,确保上下相邻图片重叠高度为两个螺纹间距,左右相邻图片重叠宽度为图片宽度的15%;
步骤二、采集图像:以螺栓孔轴心为旋转心将摄像头旋转若干个角度拍摄螺纹内壁图像,采集螺栓孔内壁全景分块图像并现场标定重叠区域;
步骤三、枕形畸变校正:对步骤二中拍摄的所有图片建立枕形畸变模型,进行畸变矫正,枕形畸变矫正具体方法为:
步骤四、横向拼接重叠像素数确定:对步骤三中左右相邻图像重叠区域内提取SURF特征,根据快速最近邻算法匹配特征,利用RANSAC算法剔除误匹配点,计算待拼接图像间的变换关系,确定横向拼接重叠像素数;
步骤五、纵向拼接重叠像素数确定:对步骤三中上下相邻图像中采用霍夫直线检测算法,提取每一根螺纹的位置信息,确定纵向拼接重叠像素数;
步骤六、全景图像合成:选取左上方第一张图像为基准图像,根据步骤四和步骤五确定的重叠区域先横向拼接后纵向拼接,对拼接区域采用渐入渐出方式融合,最终合成螺栓孔内壁全景图像。
如上所述步骤二中现场标定重叠区域时,上下相邻图片重叠高度为两个螺纹间距,左右相邻图片重叠宽度为图片宽度的15%。
如上所述步骤三枕形畸变矫正的具体方法为:
步骤3.1建立摄像机模型,确定相机内参数矩阵;
将坐标为(Xi,Yi,Zi)的物理点Qi映射到投影平面上坐标为(xi,yi)的变换表示为:
q=MQ
其中,M为摄像机内参数矩阵,且z=Z。fx、fy为有效焦距,(cx,cy)为光学中心;
步骤3.2根据透镜畸变原理,建立相机畸变模型,确定相机畸变参数矩阵;
具体地,由于成像仪中心畸变为0,用r=0(r为像点到中心点的距离)位置周围的泰勒级数展开的前几项来定量描述畸变情况,径向畸变通过三个参数k1,k2,k3来描述,表达式为:
xcorrected=x(1+k1r2+k2r4+k3r6)
ycorrected=y(1+k1r2+k2r4+k3r6)
切向畸变通过参数p1,p2来描述,表达式为:
xcorrected=x+[2p1y+p2(r2+2x2)]
ycorrected=y+[p1(r2+2y2)+2p2y]
其中,(x,y)是畸变点在成像仪上的原始位置,(xcorrected,ycorrected)是校正后的新位置,畸变向量为[k1,k2,p1,p2,k3]T;
步骤3.3对于每一个不同内径的螺栓孔及每一个摄像头,选择一副螺纹图片,调整畸变向量至最佳矫正效果,记录不同内径螺栓孔及不同摄像头的畸变向量;
步骤3.4将记录的畸变系数应用于将要矫正的螺栓孔及摄像头拍摄的图片;
步骤3.5得到校正图片。
如上所述步骤四横向拼接重叠像素数具体方法如下:
步骤4.1在需要横向拼接的图像重叠区域内寻找SURF特征点:
首先构建积分图像,将原图像表示为I(x,y),像素点(x,y)对应的在积分图像中的值为I(x,y),则积分图像I(x,y)是以原点和点(x,y)为对角线的矩形框内所有点的像素值之和,如下式所示:
求取不同尺度的Hessian矩阵行列式的局部最大值得到尺度不变的特征点;图像在σ尺度下的Hessian矩阵为:
其中,Lxx(X,σ)表示高斯二阶偏导数与图像在像素点(x,y)出的卷积,表示在σ尺度下该点在x方向上的二阶偏导数,g(σ)为高斯函数,可以用下式来表达:
在计算中用到高斯函数的二阶偏导数与图像的积分时为了提高运算速度,采用盒状滤波器来近似高斯函数的二阶偏导数;即SURF特征点提取所建立的图像尺度金字塔是通过保持原图像的大小不变,改变盒状滤波器的大小和高斯函数的尺度来实现;
步骤4.2生成步骤4.1中SURF特征点的描述子;
在确定特征点位置之后,利用haar小波对特征点进行主方向的确定以保证特征点的旋转和尺度不变性,在完成haar小波主方向确定之后,以特征点为中心,将坐标轴旋转到haar小波主方向上,做一个边长为20σ的正方形窗口,σ为高斯滤波器的尺度,并将窗口划分为16个大小为5σ×5σ的子窗口区域;以采样间隔σ,分别计算每个子窗口水平和垂直方向上的小波响应,得到的小波系数记为dx和dy;然后对响应系数求和得到∑dx和∑dy,再求取响应系数绝对值之和得到∑|dx|和∑|dy|;因此,每个子窗口都能够得到一个4维向量v=[∑dx ∑dy ∑|dx| ∑|dy|],并用此向量来描述该特征点;
步骤4.3利用近似最近邻算法FLANN匹配特征点:
根据特征向量之间的欧氏距离来衡量特征点的相似度,选取一张图像中的一个特征点与别一张图像中所有特征点分别求取欧式距离,从中选出最近邻特征点欧式距离ρf和次近邻特征点欧式距离ρs,并计算两者的比值ρ;
对于比值小于某阈值ρm的特征点,则认为正确匹配并将正确匹配的特征点进行连接,否则错误匹配:
步骤4.4采用RANSAC算法剔除误匹配点,得到最终匹配点,具体步骤如下:
步骤4.4.1:从正确匹配的特征点对中随机选择m对特征点来求解单应性矩阵模型H;
步骤4.4.2:将除上述m对特征点以外的其他特征点对利用H计算其对称变换误差di,统计误差di<T_dist的内点的个数M;T_dist为指定的一个阈值,用于表示欧式距离;
步骤4.4.3:若M>M_inlier,或者M=M_inlier,则认为H是当前最好的模型,并且保存内点M;M_inlier为指定的一个阈值,表示符合单应性矩阵模型H的内点的个数;
步骤4.4.4:利用式(1)计算循环次数N,步骤4.4.1至步骤4.4.3执行N次,当循环结束时,得到M最大的对应的单应性矩阵模型,得到最优的模型矩阵:
其中ε为外点所占的比例,P表示置信概率。在本实例中,P取值为0.99,m取值为4;
步骤4.5根据匹配点计算投影变换矩阵,从而实现横向拼接。
如上所述步骤五中纵向拼接重叠像素数的具体方法如下:
步骤5.1对图像进行二值化处理,采用Canny算子检测边缘;
步骤5.2利用霍夫变换检测螺纹直线,获取直线特征;
对于任意一点(x0,y0),经过这点的一簇直线表示为rθ=x0·cosθ+y0·sinθ,其中角度θ表示rθ与X轴之间的夹角,rθ为原点到直线几何垂直距离;通过概率霍夫变换,高于阈值则认为检测到了一条直线。
步骤5.3由于重叠区域为两个螺纹间距的宽度,上方图片中倒数第三根螺纹直线r[5]与图片下边界的距离s1,下方图片中第一根r[0]螺纹直线与图片上边界距离s2,即可确定上下相邻图片重叠宽度s,s=s1+s2。
如上所述步骤六中全景图像合成方法具体如下:
步骤6.1以第一个角度完成的第一列图像为基准图像,先完成横向拼接,再进行纵向拼接,以保证一整根螺纹不会出现断裂;
步骤6.2利用渐入渐出融合法实现重叠区域的无缝拼接;具体为:将重叠区域内的像素值乘以其在两幅图像中的加权系数,实现图像间的平滑过渡,定义I1(x,y)、I2(x,y)分别为两幅待拼接图像中点的像素值,I3(x,y)为拼接后图像中点的像素值,计算公式如下:
其中,λ为重叠区域的权重系数,取值范围为[0,1],左右相邻图片融合时,λ计算公式如下:
式中,xmin和xmax分别表示重叠区域范围内的x轴的最左侧和最右侧坐标;ymin和ymax分别表示重叠区域范围内的y轴的最上方和最下方坐标;通过以上步骤最终生成螺栓孔内壁全景图像。
本发明的显著效果在于:
在反应堆压力容器螺栓孔视频检查工作中,对于每个单独的螺纹孔而言,可仅通过目视检查一张螺纹全景图即可完成视频检查工作。
附图说明
图1为图像拼接方法流程图
图2为阵列图像拼接示意图
具体实施方式
下面结合附图及具体实施例对本发明作进一步详细说明。
如图1所示,一种螺栓孔内壁全景图像合成方法,包括如下步骤:
步骤一:现场实测,选定摄像头参数;将若干个摄像头竖直排列,由机械臂送入螺栓孔内,根据现场实测,选定镜头焦距与光圈大小,确保上下相邻图片重叠高度为两个螺纹间距,左右相邻图片重叠宽度为图片宽度的15%;
步骤一中的摄像头利用机械移动采集平台进行视频录制与图片拍摄,所述机械移动采集平台用于同时承载清洗模块、PLC控制器、工业摄像头,以实现摄像头边录制边拍摄边移动。
步骤二、采集图像:以螺栓孔轴心为旋转心将摄像头旋转若干个角度拍摄螺纹内壁图像,采集螺栓孔内壁全景分块图像并现场标定重叠区域;采集图像过程采用PLC控制电机以确保旋转中心与螺栓孔轴心一致,所拍摄图片覆盖整个螺栓孔内壁。
现场标定重叠区域时,确保上下相邻图片重叠高度为两个螺纹间距,左右相邻图片重叠宽度为图片宽度的15%,同时保证工业相机所拍摄图像亮度适中,螺纹清晰可见。
步骤三、枕形畸变校正:对步骤二中拍摄的所有图片建立枕形畸变模型,进行畸变矫正,枕形畸变矫正具体方法为:
步骤3.1建立摄像机模型,确定相机内参数矩阵;
在本例中,可视为将坐标为(Xi,Yi,Zi)的物理点Qi映射到投影平面上坐标为(xi,yi)的变换表示为:
q=MQ
其中,M为摄像机内参数矩阵,且z=Z。fx、fy为有效焦距,(cx,cy)为光学中心。
经棋盘图像标定摄像头拍摄,实测出fx、fy均设为2000,调节摄像头分辨率为1280×960,且成像仪芯片中心对光轴无偏移,即将设为(640,480)。
步骤3.2根据透镜畸变原理,建立相机畸变模型,确定相机畸变参数矩阵;
具体地,由于成像仪中心畸变为0,用r=0(r为像点到中心点的距离)位置周围的泰勒级数展开的前几项来定量描述畸变情况,径向畸变通过三个参数k1,k2,k3来描述,表达式为:
xcorrected=x(1+k1r2+k2r4+k3r6)
ycorrected=y(1+k1r2+k2r4+k3r6)
切向畸变通过参数p1,p2来描述,表达式为:
xcorrected=x+[2p1y+p2(r2+2x2)]
ycorrected=y+[p1(r2+2y2)+2p2y]
其中,(x,y)是畸变点在成像仪上的原始位置,(xcorrected,ycorrected)是校正后的新位置,畸变向量为[k1,k2,p1,p2,k3]T。
步骤3.3对于每一个不同内径的螺栓孔及每一个摄像头,选择一副螺纹图片,调整畸变向量至最佳矫正效果,记录不同内径螺栓孔及不同摄像头的畸变向量;
步骤3.4将记录的畸变系数应用于将要矫正的螺栓孔及摄像头拍摄的图片;
步骤3.5得到校正图片。
步骤四、横向拼接重叠像素数确定:对步骤三中左右相邻图像重叠区域内提取SURF特征,根据快速最近邻算法匹配特征,利用RANSAC算法剔除误匹配点,计算待拼接图像间的变换关系,确定横向拼接重叠像素数;
具体横向拼接重叠像素数方法如下:
步骤4.1在需要横向拼接的图像重叠区域内寻找SURF特征点:
首先构建积分图像,将原图像表示为I(x,y),像素点(x,y)对应的在积分图像中的值为I(x,y),则积分图像I(x,y)是以原点和点(x,y)为对角线的矩形框内所有点的像素值之和,如下式所示:
求取不同尺度的Hessian矩阵行列式的局部最大值得到尺度不变的特征点。图像在σ尺度下的Hessian矩阵为:
其中,Lxx(X,σ)表示高斯二阶偏导数与图像在像素点(x,y)出的卷积,表示在σ尺度下该点在x方向上的二阶偏导数,g(σ)为高斯函数,可以用下式来表达:
在计算中用到高斯函数的二阶偏导数与图像的积分时为了提高运算速度,采用盒状滤波器来近似高斯函数的二阶偏导数。也就是说,SURF特征点提取所建立的图像尺度金字塔是通过保持原图像的大小不变,改变盒状滤波器的大小和高斯函数的尺度来实现的。
步骤4.2生成步骤4.1中SURF特征点的描述子
在确定特征点位置之后,利用haar小波对特征点进行主方向的确定以保证特征点的旋转和尺度不变性,在完成haar小波主方向确定之后,以特征点为中心,将坐标轴旋转到haar小波主方向上,做一个边长为20σ的正方形窗口,σ为高斯滤波器的尺度,并将窗口划分为16个大小为5σ×5σ的子窗口区域;以采样间隔σ,分别计算每个子窗口水平和垂直方向上的小波响应,得到的小波系数记为dx和dy;然后对响应系数求和得到∑dx和∑dy,再求取响应系数绝对值之和得到∑|dx|和∑|dy|;因此,每个子窗口都能够得到一个4维向量v=[∑dx ∑dy ∑|dx| ∑|dy|],并且用这个向量来描述该特征点;
步骤4.3利用近似最近邻算法FLANN匹配特征点:
根据特征向量之间的欧氏距离来衡量特征点的相似度,选取一张图像中的一个特征点与别一张图像中所有特征点分别求取欧式距离,从中选出最近邻特征点欧式距离ρf和次近邻特征点欧式距离ρs,并计算两者的比值ρ。
对于比值小于某阈值ρm的特征点,则认为正确匹配并将正确匹配的特征点进行连接,否则错误匹配:
在本发明实例中,ρm取值为0.7。
步骤4.4采用RANSAC算法剔除误匹配点,得到最终匹配点,具体步骤如下:
步骤4.4.1:从正确匹配的特征点对中随机选择m对特征点来求解单应性矩阵模型H;
步骤4.4.2:将除上述m对特征点以外的其他特征点对利用H计算其对称变换误差di,统计误差di<T_dist的内点的个数M;T_dist为指定的一个阈值,用于表示欧式距离;
步骤4.4.3:若M>M_inlier,或者M=M_inlier,则认为H是当前最好的模型,并且保存内点M;M_inlier为指定的一个阈值,表示符合单应性矩阵模型H的内点的个数;
步骤4.4.4:利用式(1)计算循环次数N,步骤4.4.1~步骤4.4.3执行N次,当循环结束时,得到M最大的对应的单应性矩阵模型,得到最优的模型矩阵:
其中ε为外点所占的比例,P表示置信概率。在本实例中,P取值为0.99,m取值为4。
步骤4.5根据匹配点计算投影变换矩阵,从而实现横向拼接。
步骤五、纵向拼接重叠像素数确定:对步骤三中上下相邻图像中采用霍夫直线检测算法,提取每一根螺纹的位置信息,确定纵向拼接重叠像素数;
纵向拼接重叠像素数具体方法如下:
步骤5.1对图像进行二值化处理,采用Canny算子检测边缘。
步骤5.2利用霍夫变换检测螺纹直线,获取直线特征。
对于任意一点(x0,y0),经过这点的一簇直线表示为rθ=x0·cosθ+y0·sinθ,其中角度θ表示rθ与X轴之间的夹角,rθ为原点到直线几何垂直距离。通过概率霍夫变换,高于阈值则认为检测到了一条直线。该实例中阈值为400。根据角度与截距筛选直线,则检测到的直线位置就是螺纹的位置。
步骤5.3由于重叠区域为两个螺纹间距的宽度,上方图片中倒数第三根螺纹直线r[5]与图片下边界的距离s1,下方图片中第一根r[0]螺纹直线与图片上边界距离s2,即可确定上下相邻图片重叠宽度s,s=s1+s2。
步骤六、全景图像合成:选取左上方第一张图像为基准图像,根据步骤3.1和步骤3.2确定的重叠区域先横向拼接后纵向拼接,对拼接区域采用渐入渐出方式融合,最终合成螺栓孔内壁全景图像。
全景图像合成方法具体如下:
步骤6.1以第一个角度完成的第一列图像为基准图像,先完成横向拼接,再进行纵向拼接,以保证一整根螺纹不会出现断裂。
步骤6.2利用渐入渐出融合法实现重叠区域的无缝拼接。具体为,将重叠区域内的像素值乘以其在两幅图像中的加权系数,实现图像间的平滑过渡,定义I1(x,y)、I2(x,y)分别为两幅待拼接图像中点的像素值,I3(x,y)为拼接后图像中点的像素值,计算公式如下:
其中,λ为重叠区域的权重系数,取值范围为[0,1],左右相邻图片融合时,λ计算公式如下:
式中,xmin和xmax分别表示重叠区域范围内的x轴的最左侧和最右侧坐标;ymin和ymax分别表示重叠区域范围内的y轴的最上方和最下方坐标。通过以上步骤最终生成螺栓孔内壁全景图像。