TFDS中检测算法的应用

引言

随着我国货运量的快速发展,货车重载、高速和数量增多,列检作业工作量越来越大,TFDS 货车运行故障动态图像检测系统的开发已经迫在眉睫并得到了广泛的重视。在 TFDS 系统中,有多类故障的识别方法就是针对边缘图中是否存在圆轮廓进行的。例如对下心盘螺栓类故障检测、夹板螺栓类故障检测、关门车手把检测等等。能否快速、有效的检测出圆边缘是检测、识别 TFDS 项目中该类型故障的关键。而在日常生活和应用中,在不同的视角下,都存在圆或类圆物体轮廓。快速而准确的圆检测一直是计算机视觉、图像处理领域中一个常见而经典的问题,有着广泛的应用背景[1]。本文则针对 TFDS 项目中复杂背景下螺栓类故障(下心盘螺栓和夹板螺栓),在解决该类故障定位、提取边缘同时,以目前常用的几种理论圆检测方法进行分析、比较,获得一种40 改进的适合实际螺栓类故障的圆检测方法。成功解决了实际情况中复杂背景下螺栓类故障的检测、识别问题,并且改进方法具有一定普遍性,可适用于其他实际问题。

故障粗定位及边缘提取

在 TFDS 项目螺栓类故障中,由于螺栓位置不固定,噪声干扰大,灰度不均匀、遮挡等问题,容易造成提取的边缘缺损。如何在缺损的边缘图中尽可能准确的检测到圆的并定位,则是该类故障判定的关键。直接对整个故障图片进行预处理,提取边缘,对圆检测是不科学的。首先整幅图中有许多没用的信息,没必要进行全部边缘提取,其次对整幅边缘图进行圆检测,会大大的增加时间开销。在工程实践中,效率是非常重要的一个指标。在该项目中,要求 2-3 分钟内完成整列车的所有故障识别检测,提高效率是非常有必要的。本文采用的方法是粗定位—二值化——边缘提取。有效的减少了无用边缘信息的同时,强化了有用边缘,增加了效率。

故障粗定位

粗定位,顾名思义。即是对故障图片进行大致的定位,将感兴趣区域最大程度的包括在内的同时最少的保留其他无关信息。

本文采取的方法是,根据故障图片的结构特性,螺栓的位置存在于竖直固定支架的左侧55 或者右侧,通过检测竖直固定支架的位置,推断螺栓大致范围。粗定位螺栓后如图 1(b),再对粗定位图片进行预处理、提取边缘。但从图 1(c)中可以看到,即使已经完成了粗定位的工作,利用 canny 算子提取的边缘图中仍然存在丰富的边缘信息,不利于圆检测。

图 1 原始粗定位过程图 (a) 灰度原图 (b)粗定位图 (c)粗定位边缘图

提取二值化图边缘

为了解决边缘信息过于丰富的问题。本文采用了预处理—二值化—边缘提取的方法。假设螺栓没有丢失,那么螺栓的位置必然会因为螺栓遮挡存在与螺栓相似的阴影,与周边灰度65 形成差距,如图 1(b)下心盘螺栓所示;反之,若螺栓丢失了,则会形成黑色的空洞,与周边灰度有较大反差,如图 1(a)中夹板螺栓所示。所以利用灰度值的不同,首先预处理,将反差增强,再进行二值化,得到效果较好的二值化图。二值化极大的去除了多余的信息,再利用Canny 算子提取边缘,得到有效的边缘图。比较图 1(c)和图 2(c),可以发现,通过该方法,得到的边缘信息更加干净、有效。

图 2 改进粗定位过程图 (a) 粗定位灰度原图 (b)预处理后粗定位图 (c)二值后边缘图

圆检测算法综述与实践

得到效果较好的边缘图为后续圆检测算法的实现打下了基础。本文通过对目前几种常用的检测算进行实现、分析与比较,改进得到了一种适合在 TFDS 项目中复杂背景下圆检测的方法。

目前最简单、常用的圆检测算法是 Hough 变换。Hough 变换是从图像中识别几何形状80 的基本方法之一。能够有效的提取直线、椭圆、圆等任意形状的边缘【2】。其优点有可靠性高、抗噪性好,对变形、残缺区域等有较好的适应性【3】。但是 Hough 变换也存在明显的缺陷,比如对时间、空间的消耗过大,由于图像变形、错误等造成的峰值不唯一等等。所以目前更多使用的圆检测方法是在 Hough 变换的基础上,利用圆的性质、梯度等信息来改进的算法【4】。

随机 Hough 变换算法

该类算法的主要思想是在所有边缘图的点集中 T,随机挑选出 3 个点,根据不在一条直线上的三个点确定一个圆的性质,从而确定一个初始圆;再以该初始圆圆心为标准,判断每个点到该圆心的距离与初始圆半径之间的绝对值;如果绝对值小于定值则认为属于圆的边缘,从 T 放入圆的集合 R 中,否则算失败,在失败次数小于设定值时,如果得到的 R 集合点数大于初始圆的周长 c 乘以一定比率值 Tr,则认为该圆存在,否则相反。重复数次直到 T全部取完或者失败次数大于 f 为止【5】。

本文对该方法进行了实验,发现该算法不适合用于 TFDS 螺栓类项目的圆检测中。原因有以下几点:

  • 该算法使用较多设定值。例如失败次数值 f,圆周比率值 Tr 等。而设定值均为认为的经验判断,主观性太强,若值设定不合适,则会导致检测结果不正确。本文采用图 3 进行实验,该图像为 720*450 的图片,有 116 个白色像素点。半径为 42 个像素点左右。当正确判断到圆心位置,即 R=116 时,周长 c 为 263.76,此时 R/c≈0.44。而在正常情况下,Tr 至少应该在 0.5 以上,该圆才可能存在,很显然这种情况不符合设定值 Tr,从而无法检测到该圆。如果将 Tr 值设低,则很可能在边缘较多时,误检测到多个圆,例如图 4(b)和(c)中黄色圆。

图3 实验图

  • 由于算法利用随机取点对圆进行初始假设,则每次取点位置的不同,会形成不同的圆,结果就是同一幅图片,每次运行后的结果可能不同,结果不固定。例如输入图4(a),可以得到图 4(b)和(c)等。

图 4 检测原图及结果图 (a) 测试原图 (b)检测结果 1 (c)检测结果 2

  • 算法中随机取 3-4 个点,对于点集较小的图片,随机组合范围有限。但如果针对本文中的边缘图,像素点有几千个甚至更多,则随机组合是一个非常庞大的数据。需要在这样的随机组合中在规定失败次数 f 内有效的获得圆,不仅非常耗时,而且成功可能性不大。要想尽可能的全面检测到圆,则 f 必须尽可能的大。本文尝试 f 取30000 时,运行时间超过 1min,而且没有得到良好的结果。

综上分析可知,该算法适合数据量小,边缘图中干扰较少的图片,而不适合实际情形下螺栓类故障的圆检测。

基于 Hough 变换的梯度优化算法

梯度作为曲线的一个特性,在圆检测中的应用尤为明显。该算法则是在 Hough 变换的基础上加入了梯度线的有向性和梯度值进行改进。根据圆的特性可知,如果存在圆,那么梯度线必定过圆心。因此圆心上梯度累积值达到

最大。具体方法是,将感兴趣区域分为 N*N 的矩阵块,利用梯度变换公式对边缘图中的每个点求其梯度值与梯度线,对梯度线穿过的每个矩阵块加上其梯度值,求平均梯度值最大的矩阵块;再将此矩阵块替代为感兴趣区域重新划分为 N*N 的矩阵块,循环直至矩阵块足够小,即为圆心位置。原理如图 5 所示,圆心位置为所有梯度线的交点位置【6】。

图5 原理图

通过试验,该算法能够在一定程度上抗干扰,得到较为准确的检测结果,如图 6(b)所示。并且该算法对同心圆检测有良好的效果,如图 6(d)所示。

图 6 测试原图及结果图 (a)测试图 (b)检测结果图 (c)同心圆测试图 (d)同心圆检测结果图

注:以下图片中红色点均表示检测到的圆心

但是,该算法仅适用与单个圆心、干扰较小的检测。对于 TFDS 螺栓类故障中,存在较大的干扰,例如图 7(b),由于边缘信息较多,干扰较大,无法检测到正确的圆心位置。同时不适用存在多个圆心的情况。例如图 7(d),有多个类圆,该算法只能得到一个圆心。

图 7 螺栓类边缘图及检测结果图 (a)夹板螺栓故障边缘图 (b)夹板螺栓类故障检测结果图(c)下心盘螺栓类故障边缘图 (d)下心盘螺栓类故障检测结果图

基于 TFDS 螺栓类故障检测算法与实践

从上述分析可知,一般的算法理论上适用于干扰较小、同心圆或者仅有一个圆心的边缘图。针对 TFDS 特定环境下的圆检测,本文在基于 Hough 变换的梯度算法上进行了改进。

首先,由于该项目中的圆检测,均为对螺栓的检测,螺栓的形态特征相对比较固定,特别是螺栓大小。反应在边缘图上则是圆的半径范围。在一般的梯度算法中,梯度线都是无限长,而本文中取有限长的梯度线,长度可取螺栓直径长的一定范围内;再对有限长的梯度线穿过的矩阵块累加其梯度值。从而大大的减小了除疑似圆的其他边缘信息造成的干扰。

其次,夹板螺栓类故障为一个圆检测,可以直接判定。对于下心盘螺栓类故障,其各个螺栓位置相对较分散,可以将边缘图按 y 轴分为 4-5 部分,针对每部分进行分别检测。不仅可以将所有疑似圆检测,同时也减少了其他部分对该检测部分的干扰。

最后,将所有疑似圆进行逐个识别。具体识别方法为,首先判断该处是否存在圆,可以通过位置、圆周等方法;若存在则将圆心在二值图中定位,判断以该圆为圆心,螺栓半径长度左右为半径,周边的灰度值是否有强烈反差,如有则为螺栓丢失,反之成立。

通过实验,从图 8(b)和(d)中可以看到,改进后的算法能够良好的检测出夹板螺栓和下心盘螺栓的圆心。

图 8 螺栓类边缘图及改进检测结果图 (a)夹板螺栓故障边缘图 (b)夹板螺栓类故障检测结果图(c)下心盘螺栓类故障边缘图 (d)下心盘螺栓类故障检测结果图

结论

通过验证,本文使用基于 TFDS 项目中螺栓类故障的粗定位-边缘提取方法,能够有效的减少干扰,尽可能提取出有用信息,同时使用改进的圆检测算法解决了一般理论算法对螺栓类故障圆检测的不足,较为准确的定位和判断了圆心位置,最后进行进一步丢失分析和判定。整个解决方案完成了对 TFDS 项目中螺栓类故障的检测、识别,并且得到良好效果,漏识率接近于 0,误识率在 5%以下。同时改进的有限长梯度线方法,和边缘图片分割,分部提取的方法,具有较好的普遍性,可以应用于其他圆检测中。

参考文献

[1] 孙亦南,刘伟军,王越超等.一种用于圆检测的改进Hough变换方法.计算机工程与应用[J].2003.20:35-37.185

[2] 夏磊,蔡超,周成平等.一种用 Hough 变换检测圆的快速算法[J].计算机应用研究. 2007,24(10):197-210.

[3] 王菁菁,范影勒. 基于 Hough 变换的圆检测技术 N].杭州电子科科技大学学报,2005,25(4).

[4] 朱桂英,张瑞林. 基于 Hough 变换的圆检测方法[J].计算机工程与设计,2008,29(6):1462-1464.

[5] Teh-Chuan Chen,Kuo-Liang Chung.An Efficient Randomized Algorithm for Detecting Circles,ComputerVision and Image Understanding[j]. 2001,83:172-191.

[6] Julien Cauchie,Didier Villers Inc.Optimization of an Hough transform algorithm for the search of a center,THEJOURNAL OF THE PATTERN RECOGNITION SOCIETY[J].2008,41:567-574

时间: 2024-10-29 19:54:22

TFDS中检测算法的应用的相关文章

3D空间中射线与轴向包围盒AABB的交叉检测算法

引言 在上一节中,我讲述了如何实现射线与三角形的交叉检测算法.但是,我们应该知道,在游戏开发中,一个模型有很多的三角形构成,如果要对所有的物体,所有的三角形进行这种检测,就算现在的计算机运算能力,也是无法高效的完成.所以,我们需要通过其他的手段来提早剔除一些不可能发生交叉的物体,这种早退的思想,大量的运用在3D游戏技术中.在本篇文章中,我将像大家讲述如何实现射线与轴向包围盒AABB的交叉检测.如果读者不明白什么是轴向包围盒,请看这篇文章. Ray-AABB交叉检测算法 现如今,有很多的Ray-A

3D空间中射线与轴向包围盒AABB的交叉检测算法【转】

引言 在上一节中,我讲述了如何实现射线与三角形的交叉检测算法.但是,我们应该知道,在游戏开发中,一个模型有很多的三角形构成,如果要对所有的物体,所有的三角形进行这种检测,就算现在的计算机运算能力,也是无法高效的完成.所以,我们需要通过其他的手段来提早剔除一些不可能发生交叉的物体,这种早退的思想,大量的运用在3D游戏技术中.在本篇文章中,我将像大家讲述如何实现射线与轴向包围盒AABB的交叉检测.如果读者不明白什么是轴向包围盒,请看这篇文章. Ray-AABB交叉检测算法 现如今,有很多的Ray-A

3D空间中射线与轴向包围盒AABB的交叉检测算法 【转】

http://blog.csdn.net/i_dovelemon/article/details/38342739 引言 在上一节中,我讲述了如何实现射线与三角形的交叉检测算法. 但是,我们应该知道,在游戏开发中,一个模型有很多的三角形构成,如果要对所有的物体,所有的三角形进行这种检测,就算现在的计算机运算能力,也是无法高 效的完成.所以,我们需要通过其他的手段来提早剔除一些不可能发生交叉的物体,这种早退的思想,大量的运用在3D游戏技术中.在本篇文章中,我将像大家讲 述如何实现射线与轴向包围盒A

DDos攻击的一些领域知识——(流量模型针对稳定业务比较有效)不稳定业务采用流量成本的检测算法,攻击发生的时候网络中各个协议的占比发生了明显的变化

在过去,很多防火墙对于DDoS攻击的检测一般是基于一个预先设定的流量阈值,超过一定的阈值,则会产生告警事件,做的细一些的可能会针对不同的流量特征设置不同的告警曲线,这样当某种攻击突然出现的时候,比如SYN flood,此时网络中SYN的报文会超过阈值,说明发生了SYN flood攻击. 但是当网络中的报文速率本身是这条曲线的时候,曲线自身就一直在震荡,在这样的曲线上如何检测异常?如何根据阈值检测攻击?真正的攻击又是哪一个点? 这个攻击几乎肉眼无法分辨.如果不是那个时间点真的出了攻击,也很难从曲线

3D空间中射线与三角形的交叉检测算法

引言 射线Ray,在3D图形学中有很多重要的应用.比如,pick操作就是使用射线Ray来实现的,还有诸如子弹射线的碰撞检测等等都可以使用射线Ray来完成.所以,在本次博客中,将会简单的像大家介绍下,如何进行Ray-Triangle的交叉检测. Ray-Triangle交叉检测算法 在Tomas Moller的MT97论文中,提出了一种新的算法.这种算法能够减少以前进行Ray-Triangle交叉检测所需要的内存消耗.在以前,进行Ray-Triangle交叉检测,主要是计算射线与三角形所构成的平面

φ累积失败检测算法(转)

在分布式系统中经常使用心跳(Heartbeat)来检测Server的健康状况,但从理论上来说,心跳无法真正检测对方是否crash,主要困难在于无法真正区别对方是宕机还是“慢”.传统的检测方法是设定一个超时时间T,只要在T之内没有接收到对方的心跳包便认为对方宕机,方法简单粗暴,但使用广泛. 1. 传统错误检测存在的缺陷 如上所述,在传统方式下,目标主机会每间隔t秒发起心跳,而接收方采用超时时间T(t<T)来判断目标是否宕机,接收方首先要非常清楚目标的心跳规律(周期为t的间隔)才能正确设定一个超时时

数据挖掘中分类算法小结

数据挖掘中分类算法小结 数据仓库,数据库或者其它信息库中隐藏着许多可以为商业.科研等活动的决策提供所需要的知识.分类与预测是两种数据分析形式,它们可以用来抽取能够描述重要数据集合或预测未来数据趋势的模型.分类方法(Classification)用于预测数据对象的离散类别(Categorical Label);预测方法(Prediction )用于预测数据对象的连续取值. 分类技术在很多领域都有应用,例如可以通过客户分类构造一个分类模型来对银行贷款进行风险评估;当前的市场营销中很重要的一个特点是强

图像中区域生长算法的详解和实现

区域生长算法的基本思想是将有相似性质的像素点合并到一起.对每一个区域要先指定一个种子点作为生长的起点,然后将种子点周围领域的像素点和种子点进行对比,将具有相似性质的点合并起来继续向外生长,直到没有满足条件的像素被包括进来为止.这样一个区域的生长就完成了.这个过程中有几个关键的问题: 1 给定种子点(种子点如何选取?) 种子点的选取很多时候都采用人工交互的方法实现,也有用其他方式的,比如寻找物体并提取物体内部点或者利用其它算法找到的特征点作为种子点. 2 确定在生长过程中能将相邻像素包括进来的准则

车道线检测文献解读系列(一) 基于机器视觉的高速车道标志线检测算法的研究_李晗

作者背景 基于机器视觉的高速车道标志线检测算法的研究_李晗 东北大学车辆工程硕士学位论文 2006年 [GB/T 7714]李晗. 基于机器视觉的高速车道标志线检测算法的研究[D]. 东北大学, 2006. DOI:10.7666/d.y852642.` 论文结构一览 预处理 灰度化 [亮点]模式判别 选择日间模式还是夜间模式: 在每个检测周期开始时,首先判断采用日间模式还是夜间模式工作.摄像机视野中的上半部分为天空背景,天空亮度可以显著区分日间和夜间环境.由于天空的颜色为蓝离,日间天空的蓝色分