基于机器视觉的钢轨表面面型缺陷分类实验设计
2024-05-15李珂嘉张璐薇马跃洋尹昱东
李珂嘉,张璐薇,马跃洋,尹昱东,杨 帆,张 璐
(1.西安交通大学a.仪器科学与技术学院;b.机械工程学院;c.化学学院,西安 710049;2.西安工业大学光电工程学院,西安 710021)
0 引言
随着我国高速铁路的快速发展,列车在运行过程中,车轮与钢轨的摩擦,会对钢轨表面产生磨损,造成缺陷,若得不到及时处理,缺陷会进一步恶化,对铁路运行造成重大安全隐患。如何实时检测钢轨表面缺陷是保障铁路运行安全亟须解决的一个关键问题。针对传统的人工检测、超声波检测、漏磁检测等[1]技术存在效率低、精度差、成本高等问题,本文设计了一种基于机器视觉的钢轨表面缺陷检测实验仿真方法,实现钢轨表面缺陷高效快速检测。实验中,主要检测钢轨表面出现的斑块、压入氧化层和划痕3 类典型缺陷[2]。如图1 所示。
图1 3种常见钢轨表面缺陷
1 图像处理算法原理
1.1 基于投影法钢轨背景分割算法
实验采用一种基于投影法的钢轨背景分割算法来实现钢轨背景的分割。基本原理为:基于背景区域及目标区域的灰度值差异,将实际采集的图像进行二值化和形态学操作,钢轨背景部分为白色,钢轨表面区域表现为黑色,统计每列黑色像素点的个数确定分割点边界坐标,完成钢轨背景区域的分割。基本步骤如下:
步骤1将采集所得图像使用大津法[3]进行二值化,为消除毛刺现象,定义(2,2)大小的矩形操作窗口,采取形态学膨胀操作4 次得到膨胀后二值化图像。
步骤2对膨胀操作后二值化图像每列黑色像素点进行统计求和。
步骤3搜寻统计后黑色像素点数大于0 的列数,记录边界坐标。
步骤4根据边界坐标进行裁剪,分割钢轨背景区域。
1.2 自适应亮度调整算法
遍历图像中3 个通道的数值分别记R、G、B,亮度变化后3 个通道的数值分别记为r、g、b,表面图像灰度均值A小于特定阈值时,本实验设定最小阈值为45,定义最小经验阈值与灰度均值A的差为
同理,当亮度大于最大经验阈值时,本实验设定最大经验阈值为58,定义钢轨表面图像灰度均值A与灰度均值最大经验值之间的差值为
则亮度减弱
1.3 神经网络缺陷分类模型
误差反向传播网络(Error Back Propagation Network,BP)[4-5]属于多层前向神经网络,样本可以有X个输入层节点数目,有Y个输出层节点数目,同时在输入层和输出层之间通常可设置多个隐含层[6]。由于任意X维到Y维的映射都可使用一个3 层BP神经网络完成,因此设置隐含层为1。BP 神经网络的输入层节点数为5,即5 种形状特征参数[7];输出层节点数为3,即3 种不同缺陷。通常情况下,隐含层节点个数
式中,a为调节常数,a∈[1,10]。
2 实验设计
钢轨表面面型缺陷检测系统框架如图2 所示,主要包括图像采集、图像预处理及缺陷检测分类等模块。
图2 钢轨表面面型缺陷检测系统框架
2.1 图像采集系统设计
成像系统设计方案如图3 所示。
图3 成像系统设计与选型
选取Balser黑白工业数字面阵CCD相机[8],如图3(a)所示,镜头为低失真率(小于1.0%)且具备手动调节光圈功能的百万像素工业镜头,选用如图3(b)所示市面常见的长条状LED光源,保证采集到图像对比度、灰度相对均衡的图片[9],成像系统示意图如图3(c)。检测系统选用VS.2013 配置OpenCV.3.0 及Basler工业相机专用软件Basler_pylon 的开发者模式进行图像采集软件的设计。
2.2 图像预处理模块
实验提出一种基于灰度均值的像素值统计方法,对缺陷图像进行预分类,对每一类图像采用不同的预处理方法,将大幅度减小预处理的难度,缩短预处理时间,提高预处理效果,使得缺陷区域的特征更加明显,便于提取特征值参数,进行缺陷分类识别。统计步骤如下:
步骤1依据亮度调整算法对图像进行亮度增强或减弱,其算法流程如图4 所示。
图4 亮度调整算法流程图
步骤2统计参数Black 和White 的值。在RGB色彩体系中,3 通道图像的R、G、B值可代表该像素点的亮暗程度。遍历整幅图像中每一个像素点R、G、B值,定义2 个参数Black 和White 初始值为0,当图像中像素g(x,y)处R、G、B的值都大于210 时,参数White计数增加1;当图像中像素g(x,y)处R、G、B的值都小于40 时,参数Black计数增加1,其统计算法具体流程如图5 所示。从900 个缺陷样本中随机选取21 幅图像统计2 个参数Black 和White 的数值,见表1。
表1 参数Black和White统计结果
图5 灰度均值的像素值统计预分类方法流程
通过对表1 数据的分析,可得一般规律:图像1~7、11 中的两个参数数值都比较大;图像8~10、13~14中参数White较大,而Black近似为0;图像15~21 中两个参数接近,最小为0,最大为6。
步骤3依据参数Black 和White 的值对铁轨表面图像进行预分类。通过步骤2 的分析,定量统计出每张图片中黑色区域和白色区域所占的数值。在铁轨表面区域图像中,参数Black越大,说明整幅图像黑色缺陷或黑色区域面积越大;参数White 越大,说明整幅图像白色缺陷或白色区域面积越大。若将2 个参数综合在一起考量,就可预测原图像的一些特征。因此,依据参数Black和White的数值将原始图像分为3 类。
通过预分类算法的分析,将钢轨表面图像分为3类,当White,Black 均大于10 时,采用预处理方法1,White,Black均小于10 时,采用预处理方法2,其他情况采用预处理方法3。针对以上特性,设计3 种预分类算法,流程如图6 所示。
图6 基于灰度均像素值统计预分类方法流程
2.3 图像缺陷提取模块
BP神经网络一般分为输入层、隐含层和输出层3个部分。本实验通过建立一个输入层包含4 个节点,分别为4 个缺陷特征值数据:缺陷个数N、缺陷区域面积Area、缺陷区域灰度均值Aimaverage 和极轴比Rate[10-13];BP神经网络的隐含层设置为2 层,第1 层包含8 个节点,第2 层包含16 个节点;输出层设置为3个节点,对应识别分类的3 种缺陷:斑块、压入氧化层和划痕。图7 为本实验建立的BP 神经网络结构示意图。其中,输入层向量Xi=[X1,X2,X3,X4],其中X1为缺陷个数,即N、X2表示缺陷区域面积Area、X3为缺陷区域灰度均值Aimaverage、X4为极轴比Rate,通过权值W1i=[W11,W12,…,W132]连接到含有8 个节点的隐含层H1,再通过权值W2i=[W21,W22,…,W2128]连接到含有16 个节点的隐含层H2,最后通过权值W3i=[W31,W32,…,W324]连接到输出层,并贴上标签1、2、3,分别对应缺陷斑块、压入氧化层和划痕。
搭建一个网络结构为5 ×6 ×3 的BP 神经网络,其中输入向量X=[X1,X2,X3,X4,X5]=(长宽比r、矩形度T、致密度C、方向O、离心率E),输出向量Y=(Y1,Y2,Y3)=(钢轨裂纹、钢轨掉块、钢轨接缝),应用Sigmod函数作为激活函数,使用小批量随机梯度下降算法[14],设置最小迭代批量为15 个样本数据,学习率设置为0.2。
在Matlab 神经网络工具箱中,调用newff(·)指令建立上述BP 神经网络。设定最大训练次数为103次,即如果大于该训练次数仍没有达到设定的目标最小误差,或没有达到最小确认失败次数时训练停止;设定训练过程中的目标最小误差为10-0,即小于该目标误差时训练停止;最小失败次数为10,即当连续10 次训练以后实验误差不再减小时停止训练;设定学习速率为0.02,即为神经网络的扩展速度,如果学习速率过小,达到收敛所需要的迭代次数就会更高,过大则可能导致无法收敛。
3 实验结果分析
3.1 基于投影法钢轨背景分割
图8 所示为基于投影法的钢轨背景分割过程示意,图8(a)为实际采集所得图像;图8(b)为经膨胀操作后所得二值化图像,红色矩形框部分为钢轨表面区域,其在蓝色矩形框中的余集部分为钢轨背景区域;图8(c)为统计黑色像素点得到的投影曲线图,判断得到分割点界线为73 列与177 列;图8(d)为根据分割点界线分割后的钢轨表面区域。
图8 基于投影法的钢轨背景分割
3.2 图像预处理
通过预处理算法,得到预处理后的图像,可清晰地看到缺陷部位的轮廓特征,图9 为从3 类缺陷样本中各选取2 幅图像,共计选取6 幅图像,并依次预处理后分别得到相应结果。
图9 3类缺陷样本图像预处理结果
3.3 缺陷分类与识别
利用Python程序,随机从斑块、压入氧化层和划痕3 种不同的缺陷样本中各选取8 个缺陷区域,计算缺陷特征值,结果分别见表2~4。
表2 斑块样本特征值
表3 压入氧化层样本特征值
表4 划痕样本特征值
通过对上表实验数据分析:
(1)斑块和划痕的两类缺陷区域周长未见明显区别,但都明显大于压入氧化层缺陷区域的周长;少部分划痕的周长较小,与压入氧化层差异不明显。
(2)极长和极短的差异体现在极轴比上,划痕区域的极轴比要大于斑块和压入氧化层。
(3)斑块缺陷区域面积平均值大于划痕,而压入氧化层缺陷面积平均值最小。
(4)斑块的灰度均值分布在60~100 之间;压入氧化层灰度均值变化范围小,分布在125~140 之间;划痕缺陷的灰度均值分布在50~100 之间,变化范围大。
(5)斑块和划痕出现在同一张图像中的缺陷个数为1~3 个,而压入氧化层的缺陷个数全部在15 个以上。
缺陷分类识别实验仿真中,选取斑块、压入氧化层和划痕3 种缺陷各250 个样本,共750 组数据作为训练集。从每类缺陷中随机抽取20 个样本,共60 组数据作为测试集。记预测结果为Output,期望值的结果为Output_test,记误差e为预测结果与真实值的差值,即:
BP 神经网络训练完成后,计算误差e,测试集预测值与期望值误差对比如图10 所示。
图10 测试集预测值与期望值误差对比
通过实验仿真,如果设定误差绝对值小于0.5 即为识别正确,则准确率达98.33%;如果设定误差绝对值小于0.2 即为识别正确,准确率则为91.67%。
3.4 实验结果分析和误差评估
在训练过程中,均方误差(Mean-Square Error,MSE)[15]反映的是估计量与被估计量之间的差异程度,在实验仿真过程中,随着训练次数的增加,均方误差逐渐降低。在经过885 次训练后,均方误差为3.675 8,小于实验设定值,训练停止。均方误差随着训练次数变化曲线如图11 所示。
图11 均方误差随着训练次数变化曲线
在BP神经网络仿真训练后得到回归曲线,测试集中大部分仿真分类结果都落在回归线上,少部分与目标值有一定偏差,其中,第2 类缺陷(斑块)的识别性能最好。整体相关系数为0.965 17,可很好地分类识别钢轨表面缺陷。
从采集图像到缺陷识别,一幅图像平均耗时1.267 s。利用Matlab 设计图形用户界面查看识别结果,图12 为界面截图。
图12 识别结果截图
4 结语
本实验设计了一套钢轨表面缺陷检测实验仿真系统,研究了钢轨表面图像处理技术和神经网络缺陷检测。对采集到的图像利用图像处理技术,实现对缺陷部位的分割,对钢轨面图像进行亮度调整后,提出基于像素值统计方法的预分类算法,通过分析像素值参数所表现出的图像特性,将钢轨表面图像分为3 类,用不同的预处理方法进行图像处理,通过对不同预处理方法的效果对比,组合6 种图像处理手段,提出全新的预处理流程,极大地节省了图像处理的复杂度和工作量,使得对钢轨面图像的降噪和增强更加高效、快速。缺陷分类模块采集大量不同的特征值进行分析,最后选取缺陷个数N、缺陷区域面积Area、缺陷区域灰度均值Aimaverage和极轴比Rate 4 项特征值作为BP 神经网络的输入层,利用Matlab建立BP神经网络,用750 组数据训练了网络权值,实现缺陷的分类预测,经过数据分析和误差评估,识别准确率在90%以上,相关系数高达0.96,一幅图像平均耗时1.267 s,可以很好地实现缺陷分类识别。