matlab图像处理——距离变换

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

V ol. , No Month year.

卷 第 期 年 月

距离变换的应用(选自陆宗骐的论文)

粘连区域的分割需要解决的问题有两个,即在何处分割以及如何进行分割。文献[4]介绍了一种较为简单、直观的粘连区域分割方法——等值线跟踪法。此方法对二值图象作距离变换,根据局部极大的特点搜索区域核心代替极限腐蚀,用等值线跟踪代替条件膨胀,利用跟踪过程中前后两次周长的跃变发现两区域合并的时间,从而确定分割点的位置,最后用作区域连接段骨架垂线的方法进行粘连部分的分割。此方法不仅处理速度快,所得分割区域的形状也大为改观,见图1(d)。

当然,确定分割点也并非一定要采用等值线跟踪才行。也可根据粘连区域连接段象素的特点,设计相应的分析算法不经跟踪直接寻得。本文在完成了一幅存在粘连的钢筋端面图象分割的基础上,总结得出若干分割原则。限于篇幅,本文只介绍象素属性分析法中分割位置的搜索算法,后续分割部分参见文献[4]。

2 术语定义

2.1 三个检测环

为了识别象素的属性,需要考察该象素所在邻域内相关象素的状态,本分割方法中需使用三个检测环。它们是以当前待测象素为中心的3×3、5×5

点,见图2。它们分别称为内环、中环与外环。图中,中心象素用星号表示,内环用数字1~8表示,中环用小写字母a~p 表示,外环用大写字母A~Z 和数字1~6表示。主要用以测试环上数据的跳变,以及数值的大小关系与某类象素数目的多少等。 2.2 象素类型

为行文方便起见,对不同类型的象素与数据定

义若干专用名词。

·边界点:图象中距离值为1的点。 ·背景点:图象中距离值为0的点。

·(粘连区域)连接线:连接粘连两区域的(单点宽或双点宽)骨架,它们应取同一距离值。

·当前点:处于邻域中央,考察其是否在连接线上的那个象素。

·等值点:指在检测邻域内数值等于当前点的距离值的那些象素,连接线上的点必须是等值点。 ·内点、外点:指在检测邻域内距离值分别大于、小于当前点的距离值的那些象素。

·角点:内环上只有两个与当前点等值的点,并且它们构成直角三角形时,称当前点为角点。 ·图象的最大距离值:全图象素中最大的距离值,它大致等于图象中最大区域的等效半径。

图3给出了三个检测点及其所在邻域的例子,图中数据为象素的距离值。为清楚起见,图中中心象素加粗后再加下划线,中环象素用粗体字表示。在图3(a)中, 带下划线的7为当前点,中环上面水平线上的两个7为等值点,其间的8为内点,当前点周围的5、6为外点,而此时当前点7是一个角点。

3 分割点的特征

骨架上。同时由于涉及区域间的连通关系,与象素的拓扑特性也有关。这样便与图象处理中的一些基本概念联系了起来。其中,骨架、梯度和距离值的跳变数等概念在本判别中起着关键的作用,本节先对这些基本概念作一些说明。

3.1 距离图象的骨架

距离图象有一个很好的特点,即其上的等值线绝大部分是单点宽的,它们层层嵌套排列很有规律,每层的距离值相差1,内大外小。只有在区域核心部位与骨架上才有少量双点宽短线,如图3(b)中数值为2的象素为双点宽骨架。距离图象的骨架在数值上大都取所在邻域的极大值。

3.2 中环梯度

因为距离图象上的骨架不仅仅分布在区域的瓶颈部位,区域内部也有不少。对于单点宽骨架而言,若处于瓶颈部位时,其上象素的中环处前后左右接近对称,即该处的梯度值会比内部骨架处小些。梯度值的计算,即求中环上下边界与左右边界平均差分的绝对值之和,再设置阈值予以区分。图3中三个点的梯度值分别为10、7、8。显然,图3 (a)不在连接线上,而(b)、(c)则在连接线上。

3.3 正跳变数

在图象细化处理中跳变数是一个非常重要的概念,它是指当前点所在的邻域中一个围绕中心象素的封闭曲线上0与1之间的跳变数,用于表示该点的拓扑特性,确定该点在细化时是否可以删除,如图4(a)中中心象素周围0至1的跳变数为3,表示中心处的直线有三个分支。由于是二值图象,正、负跳变数相等,不用区分。对于距离图情况稍有不同。因为它不是二值图象,正跳变是指由邻域中心点数值向上的跳变,见图4(b)。距离图中距离值内大外小,正跳变指向内部,负跳变指向外部,故正、负跳变数有不

同的含义。现

在关心的是与

内部的联系。

所以,在分割

点的判别中需

要的是正跳

变,图4(b)中

的两图正跳变

都为2。

3.4 连接线象素的类型的象素分成三种类型,即双

连点、单连点与中连点[4],见图5。图中当前象素用1表示,图中的其他1为等值点,2为内点,0为外点。由图可见,双连点连接两个区域,它直接可作分割点用;单连点是连接线的端点,它与其中一个区域内部相连,还需要通过线条跟踪寻找另一个端点;中连点处于连接线上但并不与区域直接相连,故需要寻找连接线段的两个端点。除了第一种情况外,后两种情况下,需要再根据连接线段的端点确定实际分割点。在以它们为中心的3×3邻域中,它们分别有2、1、0个内点。其中,双连点的邻域中的两个内点不能相邻接,见图5(a)。不失一般性,当当前象素的距离值为N时,图5中的数据同时增加N-1,分类情况不变。

4 识别算法

由于文献[4]已解决了得到连接线上一个点后寻找整条连接线,进而确定实际分割点位置,最后将两个粘连区域切割开的问题。本文仅介绍寻找粘连区域连接线上的象素的方法。由于每条连接线上只需寻出一个点即可。因此,所设条件是充分条件并非必要条件,为了便于将不符合条件的点剔除,这些条件有时也把连接线上的许多点筛选掉了。条件的选择以便于处理,能得到可供使用的点,并且无有害遗漏为标准。由于边界点的情况与内点有所不同,两者的识别分别进行。

4.1 边界上连接线象素的识别

⑴中环正跳变数必须为2,此为首要条件。

⑵第二条件——内环正跳变数分三种情况:

①正跳变数为2时即为分割点,此为类型1。此点与所连两区域直接邻接。

②正跳变数为1时,内环边界点数应大于4,此为类型2。其目的是使内环中不至混入太多背景点。

③正跳变数为0时,中环背景点数应小于7,此为类型3。其目的是为了保证当前象素保持在粘连区域的瓶颈部位。

图6给出了这三类边界线分割点的例子。上方为粘连区域图象,分割点在图象中央,下面数据为

相关文档
最新文档