一种快速的噪声鲁棒性图像异物检测方法及TEDS系统
技术领域
本发明涉及计算机图像检测识别领域,特别是指一种快速的噪声鲁棒性图像异物检测方法及应用该检测方法的TEDS系统。
背景技术
图像异物检测在图像识别领域已受到广泛关注,但是由于噪声等外界因素的干扰,目前大部分的检测方法误报率较高,因此我们提出一种快速的噪声鲁棒性图像异物检测方法,有效克服噪声的影响,提高检测的速度和正确率。
目前,动车组运行安全已受到高度重视,在线监测、检测是确保动车安全运行的核心保障,“动车组运行故障动态图像检测(TEDS)系统”是铁路总公司运输局安全专项整治挂牌督办的项目之一,该系统是集高速数字图像采集、图像处理、图像自动识别、网络通信、自动控制、计算机等技术于一体的智能化系统,利用在轨边安装高速相机模块对运行车体进行多角度建模,将实时过往车辆图像与标准车辆模型进行对比,实现故障自动预警,同时将异常报警信息及大容量图像数据实时传输至本地或异地动车运行所在报警终端,人工根据报警信息进行故障确认和检修。TEDS故障自动检测方法主要利用差异比较法,差异比较法的一种方式是将采集的实时图像与图像库中存储的未运行时的无故障状态的动车组的标准图像进行图像特征的对比;另一种方式是将采集的实时图像与图像库中存储的近期的无故障状态的动车组的历史图像进行图像特征的比较,两种方式中将特征差异明显的地方标记为故障异常。
上述标准图像比较法中的参考图像精确标准,能够实现当前图像差异的准确判定,然而动车图像在采集过程中易受到噪声等外界因素的干扰,导致检测结果中出现大量误报,若能够克服噪声的影响,提高检测方法的鲁棒性,则能降低故障误报,提高故障检测的准确率。
发明内容
本发明提出一种快速的噪声鲁棒性图像异物检测方法,能够有效快速地检测出将动车图像中出现的异常,克服噪声等外界因素的干扰,解决了现有技术标准图像比较法中故障误判高的问题。
本发明的技术方案是这样实现的:
步骤一:在计算机中输入待检测的目标图像和模板图像;
步骤二:将目标图像与模板图像进行图像配准,获取配准后的目标图像;
步骤三:利用改进的canny边缘检测算法获取配准后目标图像和模板图像的所有边缘点和边缘线;
步骤四:对目标图像和模板图像利用线条特征进行快速匹配,获取初始匹配结果;
步骤五:基于步骤四的匹配结果,对每条不匹配线条所在的局部邻域进行规范化的SSD精确匹配,更新不匹配局部邻域,同时返回其在模板图像中最接近的局部邻域;
步骤六:提取不匹配局部邻域与其最接近的局部邻域的纹理特征,利用纹理特征的差异为每个不匹配局部邻域打分,如果分数大于给定阈值或纹理特征差异满足给定的条件则判定为故障区;
步骤七:对所有故障区进行8邻域连接,得到合并后的较大的故障区并根据纹理特征对其重新打分,实际应用中可优先挑选分数最高的一批区域显示,剩下的区域用浅色显示以表示出现故障的可能性小;
步骤八:根据人工确认结果计算故障权值,根据故障权值计算故障判断分,故障判断分的大小反映对应的区域的故障严重程度,从而有针对性地进行异物检测。
优选的是,所述步骤二中,图像配准的步骤如下:
(21)提取目标图像和模板图像的角点特征;
(22)根据角点特征通过相似性度量找到匹配的角点;
(23)根据待配准的目标图像与模板图像之间的几何畸变情况,选择能最佳拟合两幅图像之间变化的几何变换模型;
(24)将目标图像做对应的参数变换,使它与模板图像处于同一个坐标系下;
(25)获得配准后的目标图像。
优选的是,所述步骤三中利用改进的canny边缘检测算法获取配准后目标图像和模板图像的所有边缘点和边缘线的方式为:
经典的canny边缘检测算法由于景物的遮挡,不属于同一物体的边缘线可能连接在一起,这不利于特征匹配;另外,对于线条特征匹配,直线的方向性信息是一个重要的特征,能够有效缩小匹配的搜索范围,提高匹配的速度,但是经典的canny算法得到的边缘线中包含大量的曲线,因此不能直接使用线条方向来进行特征匹配。而我们提出的改进的canny边缘检测算法,在线条拐角较大的角点处及时断开,保证得到的所有边缘线尽可能接近于直线,这有利于使用线条方向来进行特征匹配,提高匹配的正确率,具体过程如下:
(31)在计算机上将输入图像处理为灰度图像;
(32)对灰度图像进行高斯模糊以减少图像噪声的干扰;
(33)计算降噪后的图像中每个像素点的梯度值和方向;
(34)对每个像素点的梯度值进行非极大值抑制,得到图像边缘点集合;
(35)采用双阈值方法获得图像的边缘阵列;
(36)边缘连接:首先利用当前点与距离其最近的点来计算当前线条的方向,每当下一连接点有多项选择时,优先选择与当前线条方向最接近的点;而当已连接的线条的方向与起点方向的偏差超过一定阈值时,则自动断开当前线条的积累而开始建立下一线条,最终获得所有线条的集合。
改进的算法中对于当前线条方向的计算利用当前边缘点以及距离当前点最近的边缘点进行计算,且值考虑8方向,比如当前点在前一点的右上方,则当前线条的方向角度为45度。
优选的是,所述步骤四中对目标图像和模板图像利用线条特征进行快速匹配,获取初始匹配结果的方式为:
(41)将模板图像的所有边缘线投影到某一平面上,在同一平面上遍历目标图像的所有边缘线,对边缘线上的每个边缘点,给定搜索路径,在局部邻域中,从距离当前边缘点最近的位置开始进行边缘点匹配,获取目标图像中每个边缘点在模板图像中最可能的匹配边缘点;
(42)将目标图像的所有边缘线投影到某一平面上,在同一平面上遍历模板图像的所有边缘线,对边缘线上的每个边缘点,给定搜索路径,在局部邻域中,从距离当前边缘点最近的位置开始进行边缘点匹配,获取模板图像中每个边缘点在目标图像中最可能的匹配边缘点;
(43)基于步骤(41)和步骤(42)获取目标图像和模板图像的互匹配边缘点集合;
(44)遍历每条边缘线,计算边缘线上所有互匹配边缘点的梯度值和梯度方向,进行梯度匹配验证,更新目标图像和模板图像的互匹配边缘点集合;
假设目标图像和模板图上互匹配边缘点分别为p(x,y)和p(x+dx,y+dy),其相应的梯度为Grad(x,y)和Grad(x+dx,y+dy),其中dx和dy为匹配边缘点相对于目标图像中边缘点的偏移距离,根据梯度方向计算公式:theta(x,y)=arctan(dy/dx),可以得到两个互相匹配的边缘点的梯度方向分别为theta1,theta2,梯度方向的差值为theta=theta1-theta2;
首先判断互匹配边缘点p(x,y)和p(x+dx,y+dy)的梯度是否相等,若相等则边缘点仍互相匹配,若梯度不相等,则判断梯度方向角度的差值theta是否小于给定阈值,若小于给定阈值,则边缘点仍互相匹配,否则重新划分当前边缘点为不匹配边缘点;
(45)遍历每条边缘线,利用边缘线上的互匹配边缘点计算线条方向,进行线条方向匹配验证,更新目标图像和模板图像的互匹配边缘点集合;
设目标图像某一条边缘线Ln1上的某点为p11(x,y),给定步长step,则边缘线上的距离给定步长的另一个边缘点为p12(x,y)=p11(x,y)+step;设其相应的匹配边缘线Ln2上的某点为p21(x,y),则边缘线上的距离给定步长的另一个边缘点为p22(x,y)=p21(x,y)+step,记:dx1=p12x-p11x,dy1=p12y-p11y,dx2=p22x-p21x,dy2=p22y-p21y,由于我们使用改进的canny边缘检测算法,获取的边缘线大部分接近于直线,且对于距离较近的两个边缘点,可以认为两点之间构成直线段,因此边缘线Ln1的方向可计算为:alpha1(x,y)=arctan(dy1/dx1);边缘线Ln2的方向可计算为:alpha2(x,y)=arctan(dy2/dx2),记互相匹配的边缘线的线条方向的差值为alpha=alpha1-alpha2,若线条方向差值alpha小于给定阈值,则判定当前边缘点仍为匹配边缘点,否则重新划分其为不匹配边缘点。
(46)遍历每条边缘线,给定模板大小,计算边缘线上的互匹配边缘点的模板梯度,进行模板梯度验证,更新目标图像和模板图像的互匹配边缘点集合;
设目标图像某一条边缘线上的某点为p(x,y),与其相匹配的模板图像上的边缘点为q(x,y),以当前边缘点为中心,构造一设定大小的模板如3*3像素,则模板梯度的计算方式为:
dx1=[(p(x+1,y-1)-p(x-1,y-1))+2*(p(x+1,y)-p(x-1,y))+(p(x+1,y+1)-p(x-1,y+1))]/4;
dy1=[(p(x-1,y+1)-p(x-1,y-1))+2*(p(x,y+1)-p(x,y-1))+(p(x+1,y+1)-p(x+1,y-1))]/4;
dx2=[(q(x+1,y-1)-q(x-1,y-1))+2*(q(x+1,y)-q(x-1,y))+(q(x+1,y+1)-q(x-1,y+1))]/4;
dy2=[(q(x-1,y+1)-q(x-1,y-1))+2*(q(x,y+1)-q(x,y-1))+(q(x+1,y+1)-q(x+1,y-1))]/4;
Grad(p)=(dx1,dy1);
Grad(q)=(dx2,dy2);
设目标图像的局部邻域内的像素的平均灰度值为AveI,其相应的匹配图像局部邻域内的像素的平均灰度值为AveIM,若AveI大于等于AveIM,则记rI=1,rIM=AveI/AveIM,否则记rIM=1,rIM=AveIM/AveI,定义梯度差值GradDiff=max(|dx1*rI-dx2*rIM|,|dy1*rI-dy2*rIM|),给定梯度差阈值,若GradDiff小于给定阈值,则当前边缘点仍为匹配边缘点,否则重新划分当前边缘点为不匹配边缘点。
(47)遍历每条边缘线,将每条边缘线分割成多条包含固定边缘点数目的较短的边缘线,给定搜索邻域和模板大小,遍历每条分割边缘线上的所有不匹配边缘点,在搜索邻域内沿着水平和竖直方向计算每个不匹配边缘点的规范化的SSD值,若规范化的SSD的最小值小于给定阈值,则重新划分当前边缘点为匹配边缘点,否则,仍为不匹配边缘点,更新目标图像和模板图像的互匹配边缘点集合;
(48)获取初始匹配结果。
优选的是,所述步骤五中基于步骤四的匹配结果,对每条不匹配线条所在的局部邻域进行规范化的SSD精确匹配的方式为:
(51)基于线条特征匹配结果,从线条上的不匹配边缘点开始遍历每条边缘线,若遇到匹配边缘点则断开,标记当前得到的线条为不匹配线条,最终获得所有不匹配线条集合;
(52)建立包含每条不匹配线条的局部邻域,记为不匹配局部邻域;
(53)遍历所有不匹配局部邻域,在搜索邻域内沿着水平和竖直方向计算每个不匹配局部邻域与模板图像中最接近的局部邻域的局部规范化SSD值;
(54)若局部规范化SSD值的最小值小于给定阈值,则重新划分当前不匹配局部邻域为匹配局部邻域,否则计算全局规范化SSD值进行匹配,更新不匹配局部邻域;
(55)获取规范化SSD精确匹配结果。
优选的是,所述步骤六中提取不匹配局部邻域与其最接近的局部邻域的纹理特征的方式为:给定目标图像的所有不匹配的局部邻域和模板图像中与其最接近的局部邻域,(61)首先提取局部邻域内的边缘点特征:
计算局部邻域内边缘点的平均灰度和密度;
统计局部邻域内所有像素点的梯度18方向分布直方图并归一化;
统计局部邻域内所有canny边缘点的梯度4方向分布直方图并归一化;
(62)然后再提取局部邻域内的角点特征:
计算局部邻域内角点的平均灰度和密度;统计局部邻域内所有角点的梯度18方向分布直方图并归一化。
优选的是,所述步骤六中利用纹理特征的差异为每个不匹配局部邻域打分的方式为:
首先利用不匹配局部邻域与其最接近的局部邻域内的边缘点梯度方向分布直方图特征计算邻域间的梯度距离GradDis,再利用不匹配局部邻域与其最接近的局部邻域内的像素点的灰度信息计算邻域间的灰度距离IntensityDis,根据梯度距离和灰度距离为每个不匹配局部邻域打分,记为Score=IntensityDis*(1-GradDis),分数的高低体现了不匹配局部邻域与其最接近的局部邻域的差异大小;给定分数阈值,梯度距离阈值和灰度距离阈值,如果分数大于某给定阈值或灰度距离和梯度距离满足给定的条件则判定为故障区。
优选的是,所述步骤七中对所有故障区进行8邻域连接,得到合并后的较大的故障区并根据纹理特征对其重新打分,实际应用中可优先挑选分数最高的一批区域显示,剩下的区域用浅色显示以表示出现故障的可能性小的方式为:
首先对得到的所有故障区进行8邻域连接,合并较小的故障区,对于小于给定面积的且与周围故障区不相连的区域自动忽略,得到合并后的较大的故障区集合,然后提取合并后区域与其最接近区域的纹理特征,计算纹理特征差异,根据纹理特征差异为每个合并后的区域重新打分并统计所有区域的分数分布特征,计算每个区域分数的最大值和最小值,在实际应用中可优先挑选分数最大的一批区域显示,对于剩下的区域用浅色显示以表示故障可能性小。
优选的是,所述步骤八中根据人工确认结果计算故障权值的方式为:
在每次使用算法进行故障检测时,记录算法检测结果和人工确认结果,然后可根据检测结果自动学习每个区域出现故障的重要性,使用故障权值来表示,故障权值包括区域权值和权值基数两部分,具体计算方式如下:
(81)区域权值weight1的计算:假设在多次检测过程中,某一区域被判定为故障区域的总次数为N,而人工划定其为故障的次数为n,则区域权值可由下式计算weight1=n/N;
(82)权值基数weight2的确定:如果用户对某区域的检测结果信任度比较低,则权值基数取较大值,以增大故障权值,提高最终的故障判断分,保证优先检测信任度较低的区域;如果用户对该区域的检测结果信任度比较高,则权值基数取较小值,特别地,若用户对该区域的检测结果完全信任,此时权值基数weight2取值为0,权值基数的取值范围一般是0~m,由人为给定或算法自动学习获得;
(83)计算故障权值:由区域权值和权值基数两部分组成,即weight=weight1+weight2;
(84)计算最终的故障判断分FinalScore:最终故障判断分为原始分数的加权结果,即FinalScore=weight*Score=weight1*Score+weight2*Score;
(85)最终故障的判定:最后我们会根据最终故障判断分FinalScore来进行故障检测,将分数较高的区域标记为严重故障区,分数较低的区域标记为轻微故障区,以实现有针对性的故障检测,提高检测效率。
此步骤的目的是在检测过程中自动学习每个区域出现故障的重要性,根据每次检测结果和人工确认结果不断学习更新故障权值,经过多次的检测,如果用户对该区域的检测结果完全信任,则在将来的检测中不需要再次验证,节省时间,提高检测效率,而对于用户信任度比较低的区域,我们会增大该区域的权值基数,以增大故障权值,提高最终故障判断分,使得用户优先检测这些故障区域。故障权值也可由用户人为确定,此时不再需要自动学习故障权值。
一种TEDS系统,其特征在于,采用上述任一项一种快速的噪声鲁棒性图像异物检测方法,将目标图像中检测出的故障区域标记出来,实现异物检测。
本发明的有益效果为:
本发明中,首先利用改进canny边缘检测算法获取图像的所有边缘线,经典的canny边缘检测算法由于景物的遮挡,不属于同一物体的边缘线可能连接在一起,这不利于特征匹配,而我们提出的改进的canny边缘检测算法,在线条拐角较大的角点处及时断开,保证得到的所有边缘线尽可能接近于直线,这有利于使用线条方向来进行特征匹配,提高匹配的正确率;然后采用基于线条的特征匹配方法快速获取初始匹配结果;在线条特征匹配过程中先进行边缘点匹配,根据线条上边缘点匹配情况来最终确认线条匹配;由于线条结构对噪声等外界干扰因素比较敏感,初始匹配结果中往往出现大量误报,为此我们在初始匹配的基础上再对不匹配的线条所在的局部邻域进行SSD匹配,进一步确认匹配结果,并返回所有不匹配局部邻域在模板图像中与其最接近的局部邻域;提取不匹配局部邻域与其最接近局部邻域的纹理特征,利用纹理特征的差异为每个不匹配局部邻域打分,如果分数大于给定阈值或纹理特征差异满足给定的条件则判定为故障区;对所有故障区通过8邻域连接进行合并,并根据纹理特征差异对合并后的故障区重新打分;根据人工确认结果计算故障权值,权值大小表示区域内出现故障的重要性,每次检测后自动学习更新故障取值;将分数的加权结果作为最终故障判断分,分数较高的区域标记为严重故障区,分数较低的区域标记为轻微故障区,实现图像异物检测,故障权值的计算能够有效区分故障区域的重要程度,这样可以预先划定事故敏感区域或不重要区域,以便有针对性地进行故障检测。将该方法应用在TEDS系统上,能有效快速地检测出动车图像上出现的异常,降低动车组故障误报率,提高TEDS系统检测的准确性和时效性。
具体实施方式
下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例:一种应用在TEDS系统上的一种快速的噪声鲁棒性图像异物检测方法,包括以下步骤:
步骤一:在计算机中输入待检测的目标图像和模板图像;
步骤二:将目标图像与模板图像进行图像配准,获取配准后的目标图像;
配准具体过程如下:
(21)输入目标图像和模板图像;
(22)提取目标图像和模板图像的角点特征;
(23)根据角点特征通过相似性度量找到匹配的角点;
(24)根据待配准的目标图像与模板图像之间的几何畸变情况,选择能最佳拟合两幅图像之间变化的几何变换模型;
(25)将目标图像做对应的参数变换,使它与模板图像处于同一个坐标系下,由于图像变换后的坐标不一定是整数,因此需要考虑一定的插值处理操作;
(26)获得配准后的目标图像。
步骤三:利用改进的canny边缘检测算法获取配准后目标图像和模板图像的所有边缘点和边缘线;
经典的canny边缘检测算法由于景物的遮挡,不属于同一物体的边缘线可能连接在一起,这不利于特征匹配;另外,对于线条特征匹配,直线的方向性信息是一个重要的特征,能够有效缩小匹配的搜索范围,提高匹配的速度,但是经典的canny算法得到的边缘线中包含大量的曲线,因此不能直接使用线条方向来进行特征匹配。而我们提出的改进的canny边缘检测算法,在线条拐角较大的角点处及时断开,保证得到的所有边缘线尽可能接近于直线,这有利于使用线条方向来进行特征匹配,提高匹配的正确率,具体过程如下:
(31)在计算机上将输入图像处理为灰度图像;
(32)对灰度图像进行高斯模糊以减少图像噪声的干扰;
(33)计算降噪后的图像中每个像素点的梯度值和方向;
(34)对每个像素点的梯度值进行非极大值抑制,得到图像边缘点集合;
(35)采用双阈值方法获得图像的边缘阵列;
(36)边缘连接:首先利用当前点与距离其最近的点来计算当前线条的方向,
每当下一连接点有多项选择时,优先选择与当前线条方向最接近的点;而当已连接的线条的方向与起点方向的偏差超过一定阈值时,则自动断开当前线条的积累而开始建立下一线条,最终获得所有线条的集合。
改进的算法中对于当前线条方向的计算利用当前边缘点以及距离当前点最近的边缘点进行计算,且值考虑8方向,比如当前点在前一点的右上方,则当前线条的方向角度为45度。
步骤四:对目标图像和模板图像利用线条特征进行快速匹配,获取初始匹配结果;
线条特征快速匹配的具体过程如下:
(41)将模板图像的所有边缘线投影到某一平面上,在同一平面上遍历目标图像的所有边缘线,对边缘线上的每个边缘点,给定搜索路径,在局部邻域中,从距离当前边缘点最近的位置开始进行边缘点匹配,获取目标图像中每个边缘点在模板图像中最可能的匹配边缘点;
(42)将目标图像的所有边缘线投影到某一平面上,在同一平面上遍历模板图像的所有边缘线,对边缘线上的每个边缘点,给定搜索路径,在局部邻域中,从距离当前边缘点最近的位置开始进行边缘点匹配,获取模板图像中每个边缘点在目标图像中最可能的匹配边缘点;
(43)基于步骤(41和步骤(42获取目标图像和模板图像的互匹配边缘点集合;
(44)遍历每条边缘线,计算边缘线上所有互匹配边缘点的梯度值和梯度方向,进行梯度匹配验证,更新目标图像和模板图像的互匹配边缘点集合;
假设目标图像和模板图上互匹配边缘点分别为p(x,y)和p(x+dx,y+dy),其相应的梯度为Grad(x,y)和Grad(x+dx,y+dy),其中dx和dy为匹配边缘点相对于目标图像中边缘点的偏移距离,根据梯度方向计算公式:theta(x,y)=arctan(dy/dx),可以得到两个互相匹配的边缘点的梯度方向分别为theta1,theta2,梯度方向的差值为theta=theta1-theta2;
首先判断互匹配边缘点p(x,y)和p(x+dx,y+dy)的梯度是否相等,若相等则边缘点仍互相匹配,若梯度不相等,则判断梯度方向角度的差值theta是否小于给定梯度方向阈值,若小于给定梯度方向阈值,则边缘点仍互相匹配,否则重新划分当前边缘点为不匹配边缘点;
(45)遍历每条边缘线,利用边缘线上的互匹配边缘点计算线条方向,进行线条方向匹配验证,更新目标图像和模板图像的互匹配边缘点集合;
设目标图像某一条边缘线Ln1上的某点为p11(x,y),给定步长step,则边缘线上的距离给定步长的另一个边缘点为p12(x,y)=p11(x,y)+step;设其相应的匹配边缘线Ln2上的某点为p21(x,y),则边缘线上的距离给定步长的另一个边缘点为p22(x,y)=p21(x,y)+step,记:dx1=p12x-p11x,dy1=p12y-p11y,dx2=p22x-p21x,dy2=p22y-p21y,由于我们使用改进的canny边缘检测算法,获取的边缘线大部分接近于直线,且对于距离较近的两个边缘点,可以认为两点之间构成直线段,因此边缘线Ln1的方向可计算为:alpha1(x,y)=arctan(dy1/dx1);边缘线Ln2的方向可计算为:alpha2(x,y)=arctan(dy2/dx2),记互相匹配的边缘线的线条方向的差值为alpha=alpha1-alpha2,若线条方向差值alpha小于给定线条方向阈值,则判定当前边缘点仍为匹配边缘点,否则重新划分其为不匹配边缘点。
(46)梯度,进行模板梯度验证,更新目标图像和模板图像的互匹配边缘点集合;
设目标图像某一条边缘线上的某点为p(x,y),与其相匹配的模板图像上的边缘点为q(x,y),以当前边缘点为中心,构造大小为3*3的模板,则模板梯度的计算方式为:
dx1=[(p(x+1,y-1)-p(x-1,y-1))+2*(p(x+1,y)-p(x-1,y))+(p(x+1,y+1)-p(x-1,y+1))]/4;
dy1=[(p(x-1,y+1)-p(x-1,y-1))+2*(p(x,y+1)-p(x,y-1))+(p(x+1,y+1)-p(x+1,y-1))]/4;
dx2=[(q(x+1,y-1)-q(x-1,y-1))+2*(q(x+1,y)-q(x-1,y))+(q(x+1,y+1)-q(x-1,y+1))]/4;
dy2=[(q(x-1,y+1)-q(x-1,y-1))+2*(q(x,y+1)-q(x,y-1))+(q(x+1,y+1)-q(x+1,y-1))]/4;
Grad(p)=(dx1,dy1);
Grad(q)=(dx2,dy2);
设目标图像的局部邻域内的像素的平均灰度值为AveI,其相应的匹配图像局部邻域内的像素的平均灰度值为AveIM,若AveI大于等于AveIM,则记rI=1,rIM=AveI/AveIM,否则记rIM=1,rIM=AveIM/AveI,定义梯度差值GradDiff=max(|dx1*rI-dx2*rIM|,|dy1*rI-dy2*rIM|),给定梯度差阈值,若GradDiff小于给定梯度差阈值,则当前边缘点仍为匹配边缘点,否则重新划分当前边缘点为不匹配边缘点。
(47)遍历每条边缘线,将每条边缘线分割成多条包含固定边缘点数目的较短的边缘线,给定搜索邻域和模板大小,遍历每条分割边缘线上的所有不匹配边缘点,在搜索邻域内沿着水平和竖直方向计算每个不匹配边缘点的规范化的SSD值,即差值平方和(Sum ofSquared Difference)值,也就是计算邻域内所有像素的灰度差值平方和,若规范化的SSD的最小值小于给定SSD阈值,则重新划分当前边缘点为匹配边缘点,否则,仍为不匹配边缘点,更新目标图像和模板图像的互匹配边缘点集合;
(48)获取初始匹配结果。
步骤五:基于步骤四的匹配结果,对每条不匹配线条所在的局部邻域进行规范化的SSD精确匹配,更新不匹配局部邻域,同时返回其在模板图像中最接近的局部邻域;
规范化的SSD精确匹配具体过程如下:
(51)基于线条特征匹配结果,从线条上的不匹配边缘点开始遍历每条边缘线,若遇到匹配边缘点则断开,标记当前得到的线条为不匹配线条,最终获得所有不匹配线条集合;
(52)建立包含每条不匹配线条的局部邻域,记为不匹配局部邻域;
(53)遍历所有不匹配局部邻域,在搜索邻域内沿着水平和竖直方向计算每个不匹配局部邻域与模板图像中最接近的局部邻域的局部规范化SSD值;
(54)若局部规范化SSD值的最小值小于给定SSD阈值,则重新划分当前不匹配局部邻域为匹配局部邻域,否则计算全局规范化SSD值进行匹配,更新不匹配局部邻域;
(55)获取规范化SSD精确匹配结果。
步骤六:提取不匹配局部邻域与其最接近的局部邻域的纹理特征,利用纹理特征的差异为每个不匹配局部邻域打分,如果分数大于给定的分数阈值或纹理特征差异满足给定的条件则判定为故障区;
提取不匹配局部邻域与其最接近的局部邻域的纹理特征的方式为:
给定目标图像的所有不匹配的局部邻域和模板图像中与其最接近的局部邻域,首先提取局部邻域内的边缘点特征,主要包括:
(61)计算局部邻域内边缘点的平均灰度;
(62)计算局部邻域内边缘点的密度;
(63)统计局部邻域内所有像素点的梯度18方向分布直方图并归一化;
(64)统计局部邻域内所有canny边缘点的梯度4方向分布直方图并归一化;
然后再提取局部邻域内的角点特征,主要包括:
(65)计算局部邻域角点的平均灰度;
(66)计算局部邻域内角点的密度;
(67)统计局部邻域内所有角点的梯度18方向分布直方图并归一化。
利用纹理特征的差异为每个不匹配局部邻域打分的方式为:
利用上述不匹配局部邻域与其最接近的局部邻域内的边缘点梯度方向分布直方图特征计算邻域间的梯度距离GradDis,再利用不匹配局部邻域与其最接近的局部邻域内的像素点的灰度信息计算邻域间的灰度距离IntensityDis,根据梯度距离和灰度距离为每个不匹配局部邻域打分,记为Score=IntensityDis*(1-GradDis),分数的高低体现了不匹配局部邻域与其最接近的局部邻域的差异大小;给定分数阈值、梯度距离阈值和灰度距离阈值,如果分数大于给定的分数阈值,或灰度距离和梯度距离同时满足给定的条件则判定为故障区。灰度距离和梯度距离满足给定的条件指灰度距离和梯度距离同时小于给定的对应的阈值。
步骤七:对所有故障区进行8邻域连接,得到合并后的较大的故障区并根据纹理特征对其重新打分,实际应用中可优先挑选分数最高的一批区域显示,剩下的区域用浅色显示以表示出现故障的可能性小;
首先对得到的所有故障区进行8邻域连接,合并较小的故障区,对于小于给定面积的且与周围故障区不相连的区域自动忽略,得到合并后的较大的故障区集合,然后提取合并后区域与其最接近区域的纹理特征,计算纹理特征差异,根据纹理特征差异为每个合并后的区域重新打分并统计所有区域的分数分布特征,计算每个区域分数的最大值和最小值,在实际应用中可优先挑选分数最大的一批区域显示,对于剩下的区域用浅色显示以表示故障可能性小。
步骤八:根据人工确认结果计算故障权值,权值大小表示区域内出现故障的重要性,将分数的加权结果较高的区域标记为严重故障区,较低的区域标记为轻微故障区,以便有针对性地进行异物检测。
根据人工确认结果计算故障权值的方式为:
在每次使用算法进行故障检测时,记录算法检测结果和人工确认结果,然后可根据检测结果自动学习每个区域出现故障的重要性,使用故障权值来表示,故障权值包括区域权值和权值基数两部分,具体计算方式如下:
(81)区域权值weight1的计算:假设在多次检测过程中,某一区域被判定为故障区域的总次数为N,而人工划定其为故障的次数为n,则区域权值可由下式计算weight1=n/N;
(82)权值基数weight2的确定:如果用户对某区域的检测结果信任度比较低,则权值基数取较大值,以增大故障权值,提高最终的故障判断分,保证优先检测信任度较低的区域;如果用户对该区域的检测结果信任度比较高,则权值基数取较小值,特别地,若用户对该区域的检测结果完全信任,此时权值基数weight2取值为0,权值基数的取值范围一般是0~m,由人为给定或算法自动学习获得;
(83)计算故障权值:由区域权值和权值基数两部分组成,即weight=weight1+weight2;
(84)计算最终的故障判断分FinalScore:最终故障判断分为原始分数的加权结果,即FinalScore=weight*Score=weight1*Score+weight2*Score;
(85)最终故障的判定:最后我们会根据最终故障判断分FinalScore来进行故障检测,将分数较高的区域标记为严重故障区,分数较低的区域标记为轻微故障区,以实现有针对性的故障检测,提高检测效率。
此步骤的目的是在检测过程中自动学习每个区域出现故障的重要性,根据每次检测结果和人工确认结果不断学习更新故障权值,经过多次的检测,如果用户对该区域的检测结果完全信任,则在将来的检测中不需要再次验证,节省时间,提高检测效率,而对于用户信任度比较低的区域,我们会增大该区域的权值基数,以增大故障权值,提高最终故障判断分,使得用户优先检测这些故障区域。故障权值也可由用户人为确定,此时不再需要自动学习故障权值。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。