基于链码改进算法的钢轨表面缺陷识别
2015-12-23陈华伟吴禄慎袁小翠
陈华伟,吴禄慎,袁小翠
(南昌大学 机电工程学院,江西 南昌330031)
0 引 言
随着中国铁路事业的发展,轨道缺陷检测要求越来越高,传统的人工巡道作业效率低,危险性大,难以满足铁路事业高速发展的要求。针对钢轨表面缺陷 (裂纹、掉块等)的线路检修作业,国内外均专注于机器视觉和图像处理[1,2]相结合的自动检测技术研究。
钢轨的裂纹、掉块等缺陷规律性不强,采用图像方法处理时,一般使用边界跟踪方法。自Freeman提出图像的链码表示法[3,4],链码技术已在图像处理的各领域得到了广泛应用。链码跟踪算法 (又称Freeman 算法)实现简单、变形容易、处理速度快、基于边界链码表示,还可对图像的区域特征做深入分析,是基于机器视觉的分拣计数、缺陷检测等特征识别领域的基础算法。链码算法一般是基于像素的,受图像的预处理方法的影响较大,常存在漏跟踪、重复跟踪[5-8]等问题,面向钢轨表面缺陷识别等具体应用还有较大的改进余地。
1 Freeman链码算法设计
1.1 链码方向的确定
链码是一种用边界方向作为编码依据的边界表示法,但为了简化边界描述,一般只记录有序排列的边界点集。常有4连通链码和8连通链码之分,后者方位信息更为全面,能够准确描述中心像素点与邻接点的信息,因而最为常用。如图1为8连通链码。
图1 8连通链码
考虑到图像存贮和显示中主要是采用逐行扫描的方式进行,设定自上而下为行扫描的正方向,自左向右为列扫描正方向 (如图1坐标系所示)。根据正扫描顺序,设定起始点 (0方向)为左上角点,则顺时针链码搜索方向 (0-7方向)坐标可表示为集合:
DIR8 [8] [2]= {{-1,-1}, {0,-1}, {1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0}}
即搜索方向序列为0→1→2→3→4→5→6→7。
它表示8方向序列:左上→上→右上→右→右下→下→左下→左。
1.2 数据结构设计
为了存贮边界点集,并表达边界走向,最好的办法就是使用链表结构记录边界信息,为此设计以下链节点结构体:
从NODE节点结构体定义可以看出,它既表示了边界中的各节点坐标和方向、下一节点信息,还表示了整个边界即连通区域的周长、面积、外接矩形等基本特征信息。
变量定义中,NODE 为节点对象,一个NODEList指针代表一条区域边界链。
对每条边界,采用尾插法,将新的边界点插入链表尾端,最终形成一条完整的边界链,以下为尾插法的伪代码表示:
1.3 基本算法流程
假设二值图像中,灰度值255 表示白色,为背景,灰度值0表示黑色,为目标。由于图像边界的像素点,没有完整的8个邻域点,为了规避边界点的干扰,算法中常直接将边界点置为背景点。
接下来,采用逐行逐列扫描法进行搜索。
(1)置初始搜索方向为0,链长length=0,边界所围(或区域)面积area=0;
(2)当找到一个目标点 (灰度值为0)时,置该点为边界起始点,链长length+1,区域面积area+1;
(3)在其8邻域内搜索下一个目标点。如果找到一个点,其当前方向点为背景点,下一方向点为目标点,则认定该目标点为下一边界点;
(4)照此方法继续搜索。
1.4 结束条件
条件1:当搜索到的边界点回到了起始边界点时,说明当前边界已成闭合链,此时应结束本链搜索。这是链码搜索的基本结束条件;
条件2:每个节点处限定搜索次数nSearchTime≤8。当边界搜索无法回到起点,如出现开链结构时,为了避免死循环,就需要补充本结束条件。
2 改进算法
2.1 几种特殊情况
基本搜索算法可用于简单图形的测试和对链码的理解,但是实际图形处理中的孤立点、单列链、局部链、开链等特殊情况常常引起基本算法的失效。
情况1:孤立点
描述:孤立点的8邻域搜索均没有目标点,按基本算法会出现死循环。
处理:一种方法是进行预处理,去除孤立点;第二种方法是控制搜索次数nSearchTime≤8,大于8次则提前结束搜索。
情况2:单列链
描述:如图2所示 (图中线段和箭头表示搜索路径;①②表示搜索起点),当边界节点从横向进入单列排列的目标点时,在不对已处理节点进行标记 (2.2节)的情况下,如果每次搜索都从0方向开始,则会在图中圈定区域 (本列的第2-3像素点处)形成死循环。该问题即使采用后退两步搜索法 (2.3节),也会在图中圈定区域出现死循环。
图2 单列现象
处理:其实质是已搜索节点的重入 (重复搜索)问题,可通过节点标记解决该问题。
情况3:局部链
描述:单列两点经过两次搜索 (搜索路径分别为①②),即可回到起点,从而提前结束本链搜索 (如图3 (a)所示)。单列两点会导致局部链问题的出现,如图3 (b)所示,如果始终从0方向开始搜索,并且已搜索边界点不做标记的话,会导致图中圈定两点为局部封闭链。
图3 局部链问题
处理:对已搜索边界点进行标记。图3 (b)为标记后搜索沿着正确方向前进。
情况4:非闭合链
描述:如图4 (a)所示 (图中1-4为节点编号,箭头表示节点的进入方向,即从箭头方向搜索到箭头所指节点),如果固定起始搜索方向为0方向,最大搜索方向为7方向,将会导致节点4 的八邻域无法搜索到新的边界点,链无法闭合的情况。
处理:该问题是由于固定了起始搜索方向为0方向引起的,采用自适应的后退两步搜索法 (adaptive two-steps back search,ATSBS)可解决该问题。
2.2 节点标记
图4 非闭合链
为了避免节点重入,应对已搜索边界点进行标记,即通过改变其灰度值的办法,将其从目标点集合中删除,使其在后续搜索中 “不可见”。但是为了基本搜索结束条件,应对边界起点不做标记或做特殊标记,待再次搜索回到起点时,再做标记。
此外,已搜索区域的内部节点也存在重入问题。一个区域搜索结束后,将转入外围循环的逐行扫描进行新的区域搜索,如果已搜索区域内部节点不做标记,则会在新的区域搜索中被认定为目标点,这与实际不符。一种近似的解决办法是:确定搜索区域的外接矩形 (box属性),遍历box区域内所有节点,如果节点灰度值为目标节点灰度,则用本区域标记值进行标记。
8位灰度图的标记中还存在一个特殊问题:在8位灰度图中标记值一般取自然数,但8 位图中的最大标记值为28-1=255。当标记区域太多 (如图5 所示),超过255时,则存在无标记值可用的情况,因此需要对连通区域太多的情况加以限制。实际情况是,如果二值处理后的目标区域太多,则会导致目标区域特征模糊化,难以识别,这主要是由于未采用恰当的二值化阈值造成的。对此,而可以根据具体的应用环境,设定一个最大的标记区域数 (标记值)Lmax,当连通区域数超过Lmax 时退出图片扫描。假设图片中目标对象数 (如一张图像中的缺陷区域数)不超过N 个,则可设定最大标记值Lmax∈ [2*N,255]。
图5 阈值分割对链码搜索的影响
2.3 ATSBS算法
ATSBS算法是将前一次链码方向后退两步作为当前搜索的起始方向。该方法以前一次搜索方向作为本次搜索的依据,因而优先保证了目标边界方向的连续性和目标区域形状的凸包性,是一种自适应方向 (自旋)的链码搜索方法。
ATSBS算法中后退两步可能带来负方向问题,可置搜索方向为最大搜索方向7,设搜索至前一节点时的搜索方向为prePOS,当前节点的起始搜索方向curPOS,则起始搜索方向设置的伪代码表示为:
curPOS =prePOS-2;
if(curPOS<0)then curPOS=7;
接下来,沿八方向curPOS→7→0→curPOS-1搜索下一边界点。
图4 (b)中,ATSBS算法执行过程如下:
在节点1处,从方向5搜索到节点2;
在节点2处,起始搜索方向为5-2=3,依次沿方向3→4→5→6→7→0搜索才能搜索到节点3;
在节点3处,起始搜索方向0-2=-2,出现负方向,此时置起始搜索方向为7,沿方向7正好能找到本链起始节点0,从而结束本链搜索。
3 实验
在钢轨表面缺陷的图像检测中,需要对轨面裂纹、掉块等缺陷类型进行识别,这些缺陷区域特征明显,可以采用链码方法提取边界,进而通过周长、面积、长宽比、圆形度、几何矩 (不变矩)等特征参数[9,10]的计算获得缺陷区域的定量描述,进而对缺陷的类型和严重性进行分类和管理。
如前所述,链码搜索适用于边界特征明显的图像,其预处理二值化阈值和方法的选择将直接影响链码算法的执行效率和效果。使用常规边缘检测方法,例如使用Canny算子获取二值化的梯度图像,则会导致图像中边缘线出现杂乱、断线等复杂情况。使用大津法自动阈值化,获得的目标 (黑色)区域太多,目标缺陷区域则已模糊 (图5)。这两种方法都违背了链码使用的边界特征明确的要求,难以直接使用链码进行边界搜索求解。
为了说明不同阈值对链码搜索的影响,减少搜索范围和区域,为提高搜索效率提供参考,本文设计了迭代阈值法:
(1)设定阈值上下限,理论上下限是 [1,255]。二值处理中,阈值很小时,图片全为背景 (全白),相反,则全为目标 (全黑);
(2)设定阈值变化步长,默认为1,为了提高搜索速度,可适当加大该步长;
(3)针对每个阈值,做二值化处理,获得二值图像;
(4)使用链码算法,收集目标区域;
(5)当目标区域数过大 (超过Lmax)时,结束图片扫描;
(6)后置处理:对所有初识别区域,计算特征参数,获得面积和周长较大的区域2-3 个,进一步根据经验值(裂纹长度、宽度等),从中剔除非缺陷区域,从而获得目标缺陷。
图5中,设定阈值上下限为 [30,200],步长为10,如果设定Lmax=100,则搜索将在T=40 时结束,此时L=16。后置处理中对16个标记区域进行过滤删除,最终可获得本实例中的具有最大周长和面积的裂纹缺陷。
4 结束语
钢轨图像中缺陷数量有限,采用最大区域数限定的节点标记法能够有效识别较大缺陷,提高了搜索速度。在标记过程中提出的自适应后退两步搜索法解决了常规标记算法中易出现的孤立点、单列链、局部链、开链等错误跟踪问题。
阈值迭代法采用迭代方式能够逐步显现目标区域的变化趋势,为有效阈值化方法的确定提供了依据。但是该方法本身效率较低,在实际应用中,可将其作为先导方法测试图像的最佳阈值,然后在此基础上再采用改进最大熵方法[9,10]等方法快速确定阈值。
钢轨缺陷检测实验结合了上述方法,并采用简单的参数计算获得了显著缺陷的几何特征,达到了缺陷识别的目的。
[1]XU Guiyang,SHI Tianyun,REN Shengwei,et al.Development of the on-board track inspection system based on computer vision [J].China Railway Science,2013,34 (1):139-144(in Chinese).[许贵阳,史天运,任盛伟,等.基于计算机视觉的车载轨道巡检系统研制 [J].中国铁道科学,2013,34(1):139-144.]
[2]Li QY,Ren SW.A real-time visual inspection system for discrete surface defects of rail heads[J].IEEE Transactions on Instrumentation and Measurement,2012,61 (8):2189-2199.
[3]Freeman H.Techniques for the digital computer analysis of chain-encoded arbitrary plane curves [J].Proceedings of National Electronics Conference,1961,17:421-432.
[4]Park J,Chisty KMM,Lee J,et al.Image retrieval technique using rearranged freeman chain code [C]//Proceedings of 1st International Conference on Informatics and Computational Intelligence,2011:283-286.
[5]Banerjee J,Ray R,Shome SN.A novel approach for freeman chain coding with prior modification using cubic interpolation[C]//IEEE International Conference on Computational Intelli-gence and Computing Research,2012.
[6]LI Wen.Research on chain code in region contour representation and reconstruction [D].Lanzhou:Lanzhou University,2012 (in Chinese).[李雯.链码在区域轮廓表示与重建中的应用研究 [D].兰州:兰州大学,2012.]
[7]Gong Aiping,Chen Ji,Qiu Zhengjun,et al.Quantity qualification of overlapped region for citrus image based on modified Freeman chain code algorithm [J].Nongye Jixie Xuebao Transactions of the Chinese Society of Agricultural Machinery,2012,43 (11):203-208.
[8]WANG Jingxue,SONG Weidong,ZHAO Like,et al.Application of improved freeman chain code in edge tracking and straight line extraction [J].Journal of Signal Processing,2014,30 (4):422-430 (in Chinese). [王竞雪,宋伟东,赵丽科,等.改进的Freeman码在边缘跟踪及直线提取中的应用研究 [J].信号处理,2014,30 (4):422-430.]
[9]LIU Hui,ZHANG Yunsheng,ZHANG Yinhui,et al.Curvature computing of BOF flame boundary based on differential chain code[J].Computer Engineering and Application,2013,49 (7):171-175 (in Chinese).[刘辉,张云生,张印辉,等.基于差分链码曲率的转炉火焰边界弯曲度计算 [J].计算机工程与应用,2013,49 (7):171-175.]
[10]Li Jian,Guo Shuai,Ye Feng.Shape recognition based on freeman chain code [J].Advanced Materials Research,2011,317-319:2490-2496.
[11]Tan Haifeng,Yang Guang,Zheng Nan,et al.An improvement of two-dimensional maximum entropy thresholding segmentation algorithm for SAR image[C]//Proceedings of International Conference on Computer Science and Electronics Engineering,2012:379-382.
[12]ZHANG Xinming,ZHANG Aili,ZHENG Yanbin,et al.Improved two-dimensional maximum entropy image thresholding and its fast recursive realization [J].Computer Science,2011,38 (8):278-283 (in Chinese). [张新明,张爱丽,郑延斌,等.改进的最大熵阈值分割及其快速实现 [J].计算机科学,2011,38 (8):278-283.]