资源描述:
《基于新式方向链码的直线检查算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于改进Freeman方向链码的道路边界检测算法摘要:本文提出了一种适合于直线检测的新式的DCC链码方法,克服了采川传统Freeman链码在直线检测上的不足,简化了直线链码方向标注方法,同时DCC编码的引入也把基于聚类的方法的直线检测巾四个过程简化为三个过程。同时,本文基于DCC链码编码方法,提出了利用链码判别直线的新判据,最后提出了POL方法进行线段的连接,实验结果表明了算法的有效性。关键字:图像识别直线检测Freeman链码线段检测1引言直线检测也是阁像处理的重要P、j容之一。直线检侧是在边缘检测的基础上将离散的边缘点直线化并对直线的参数进行估计
2、的过程。现有的直线检测算法可以分为两人类基于霍夫变换的方法和基于聚类的方法。基于霍夫变换的方法已有大量文献进行了探讨,本文不再进行介绍。基于聚类的方法直线通过对直线段或边界链码段的跟踪、删减、合并得到检测结果。一般而言,该方法的主要分为边缘链码检测、角点检侧、直线链码识别、直线连接等四个过程[2]。”这类方法的主要优点是计算不SZ杂,适用于实时处理,可以检测局部直线段。不足之处在于边缘跟踪不能处理有间断的直线,因此该算法的性能在很大程度上受边缘检测算法的制约”[31。本文提出的算法属于聚类的方法。聚类的方法检测直线大多采川Freeman链码编码并进行
3、直线特性的判别,国内外的学者提出了很多算法。文献【1】文献【2】提出了基于Freeman直线判别准则的BL算法,但是算法为了提高精度而引入了复杂的判裾,并且其直线连接算法的判据也不严密,其缺点在文献【7】中有所分析。文献【3】对链码的跟踪方法进行了改进,从而更加效地对直线进行编码,但米对Freeman编码本身进行改进,其直线检测和直线连接沿已有的方法,未提出自己的新方法。文献【4】对Freeman编码进行了改进,采用了更精确的16邻域编码,对点的链码编码方式也进行了改进,链码的编码是相对于基准点的方向而非相对于邻近点的方向,并据此提出直线判裾,但是1
4、6方向的链码增加了邻域搜索的时间,并且其采用的直线判断的方法的容错性也不强。文献【5】基于Freeman提出的关于数字直线的准则和数字直线的特征,提出一种以线段元为基本单位进行直线的构造并检测出图像屮物体边界屮的直线的算法.文献【6】给出了一种基于直线链码的Freeman—吴定理的增量式直线链码识别算法。文献【7】对文献【2】中BL算法进行了改进,提出了一个新的基于链码的最小直线段长度和最小直线段近似度识别直线的方法。文献【8】对直线检测的一些步骤进行了改进,引入分层并行迭代式处理结构,提山了高效实用的并行直线段检测©法.文献【9】文献【10】提出一
5、种利用两条动态调整的直线边界构造像素通行区的方法进行直线检测,并进行了详尽的实验分析。文献【11】提出了一种基于Freeman提出的直线链码三条准则的直线识别的算法。2对Freeman编码的改进---新式DCC编码一条离散曲线可以定义为Z2域内一组数量有限的连通点。因此,一条数字化二值曲线可用方向链码表示。如图1所示,Freeman链码是相邻两像素连线的8种可能的方向值。一条曲线按照如图1所示被网格离散化后形成N个方向链码,这个N个方向链码组成了这条曲线,此曲线链码可表示为{ai}N,其中ai={0,l,2,3,4,5,6,7},i为像素的索引值,a
6、i表示由像素i指向像素i+1的方向链码。图1Freeman的8邻域链码图2本文提出的5邻域DCC链码图3Freeman方式的编码图4本文提出DCC方式的编码Freeman链码是一种全方向的编码方法,因此Freeman链码能够对圆等多方向曲线进行编码。例如图3巾曲线的Freeman链码就是{ai}l4={2,2,1,2,1,1,1,0,7,6,6,6,7,0},其中ai={0,l,2,3,4,5,6,7}。但是利用Freeman链码对直线编码并不是一种高效的方法。“第一freeman跟踪方式没有在最大程度上保证跟踪链码的直线性。第二,在直线相交处,由于
7、相交的点在第一次跟踪的时候已经被设为非边缘点,因此第二条跟踪的直线会被分割成两小段“[31。因此,用Freeman链码对如图3所示曲线进行了编码后,必须进行角点检测j能将组成链码的两条直线段分开,这就增加了直线检测的步骤(耑要进行角点检测),从而增加了直线检测的复杂度和运算时间。由于直线是一种特殊的曲线,具有很强的方向性,因而采用Freeman链码的8邻域全方向编码对直线来说是一种冗余编码,这就给我们针对直线对艽进行改进提供了可能。本文提山了一•种新式的单方向链码DCC(DirectionChainCode)编码方法可以克服Freeman链码的缺点,
8、这种DCC链码尤其适用于对直线进行编码,其DCC链码的单方向性决定了其不能对圆进行编码。这种链码方法基于以下