编辑: 飞翔的荷兰人 | 2013-06-01 |
0 3
3 2
2 1
0 1
10103322 原链码 归一化链码
01033221 起点归一化
3 3
2 2
1 0
1 4邻域 用链码表示给定目标的边界时,如果目标平移,链码不会发生变化,而如果目标旋转,则链码将会发生变化 用链码的1阶差分来重新构造1个序列(1个表示原链码各段之间方向变化的新序列),相当于把链码进行旋转归一化
3 3
2 2
1 0
1 (2)
1 0
1 0
3 3
2 2
3 3
1 3
3 0
3 0
0 0
3 3
2 1
2 1 左转90度(3)
2 1
2 1
0 0
3 3
3 3
1 3
3 0
3 0 为最右1个方向数循环到左边 目标旋转后,原链码发生变化,但差分码没有变化 相邻2个方向按反方向相减 Chain code:
0 0
0 0
3 3
0 3
3 3
2 1
2 3
2 3
3 Chain code:
0 0
0 7
6 7
6 6
4 2
4 6
5 6
0 6
4 4
4 0
3 2
2 2
1 2
1 2
1 1
2 1
0 1
1 0
0 1
3 3
2 4
3 2
1 0
0 1 4邻域 8邻域 边界段boundary segments 链码对边界的表达是逐点进行的,而一种表达数据量更节省的方法是把边界分解成若干段分别表示,可以减少边界的复杂度,并简化描述过程将边界分解为多个边界段,一般借助凸包的概念来进行 如图(a)是1个任意的集合S,它的逼近凸包H是包含S的最小凸形,如图(b)黑线框内部所示 常把H-S叫S的凸残差(convex deficiency),并用D,即图(b)中黑线框内各白色部分表示 当把S的边界分解为边界段时,能分开D的各部分的点就是合适的边界分段点,也就是说,这些分段点可借助D来唯一确定 跟踪H的边界,每个进入D或从D出去的点就是1个分段点,如图(c)所示. 具体做法 这种方法不受区域尺度和取向的影响 多边形近似Polygonal Approximations 在实际中,由于噪声、采样等影响,在边界处有很多较小的不规则处.这些不规则处常对链码和边界段表达产生较明显得干扰一种抗干扰性能更好,且更节省表达所需数据量的方法-用多边形去近似逼近边界 多边形是一系列线段的封闭集合 在数字图像中,如果多边形的线段数与边界上的点数相等,则多边形可以完全准确的表达边界 多边形表达的目的-要用尽可能少的线段,来代表边界,并保持边界的基本形状,这样就可以用较少的数据和较简洁的形式来表达和描述边界 常用的多边形表达方法
1、基于收缩的最小周长多边形法
2、基于聚合(merge)的最小均方差线段逼近法
3、基于分裂(split)的最小均方差线段逼近法 对于第1种方法-将原边界看成是有弹性的线,将组成边界的象素序列的内外边各看成一堵墙,如图(a)所示,如果将线拉紧,则可得到如图(b)所示的最小周长多边形 (a) (b) 对于第2种方法-沿边界依次连接象素.先选1个边界点为起点,用直线依次连接该点与相邻的边界点,分别计算各直线与边界的(逼近)拟合误差,把误差超过某个限度前的限度确定为多边形的1条边,并将误差置0,然后以线段另一端点为起点,继续连接边界点,直到绕边界1周,这样就得到1个边界的近似多边形 如图给出基于聚合方法的多边形逼近.原边界由点a,b,v,d,e,f,g,h等表示的多边形.现在先从点a出发,依次做直线ab,ac,ad,ae等,对从ac开始的每条线段计算前一边界点与线段的距离作为拟合误差,图中设bi和cj没有超过预定的误差限度,而dk超过该限度,所以选d为紧接点a的多边形顶点,再从点d出发继续如上进行,最终得到的近似多边形的顶点为adgh 对于第3种方法-先连接边界上相距最远的2个象素(即把边界分成2部分),然后根据一定准则进一步分解边界,构成多边形逼近边界,直到拟合误差满足一定限度 如图给出以边界点与现有多边形的最大距离为准则分裂边界的原理: a a a b b b c c c d d d (a)原始边界 (b)按最大距离分割边界 (c)连接垂直点 (d)最后的多边形 标记Signature 标记是边界的1-D泛函表达产生标记方法很多: 最简单的是-先对给定的物体求重心,然后把边界点与重心的距离作为角度的函数,得到一种标记 如图(a)和(b)所示,给出两个通过该方法得到标记的例子 (a) (b) 在(a)中, r(q)是常数,在(b)中r(q) = Asecq 不管用何种方法产生标记,其基本思想都是把2-D的边界用1-D的较易描述的函数形式来表达 把2-D形状描述 ->