边界的链码,归一化链码,差分玛,形状数

复习一下数字图像处理。

按照我自己的理解简单来说:

原链码:按照任意起点走边界一周,方向按照上图对应的表示,得到的数字序列就是原链码。

归一化链码:为了解决原链码中起点不唯一而产生的序列不唯一的问题,规定,对于所有起点得到的原链码中,字典序最小的即为归一化链码(由于序列都是自然数,因此字典序最小也可以理解成,把该序列看成有前导0的自然数之后的数值之后的数值最小。

差分码:为了解决图形旋转之后,原链码和归一化链码都会发生变化,引入差分码。n位原链码(或归一化链码,由于归一化链码只是一种特殊的原链码,之后不再单独强调)可以得到n-1位差分码。具体来说,对于原链码ai,可以得到差分码b[i],_b[i] = ((a[i+1] - a[i])+mod)%mod(i属于1..n-1),_mod根据实际有几个方向决定,通常为4或者8。

形状数:需要强调的是,形状数也是一个序列,而不是一个数。其实形状数就是把差分码按照字典序排序之后,最小的序列。形状数的阶数是该序列的长度。

Freeman链码(弗雷曼链码)是指用曲线起始点的坐标和边界点方向代码来描述曲线或边界的方法,常被用来在图像处理、计算机图形学、模式识别等领域中表示曲线和区域边界。它是一种边界的编码表示法,用边界方向作为编码依据,为简化边界的描述,一般描述的是边界点集。

常用的链码按照中心像素点邻接方向个数的不同,分为4连通链码和8连通链码。4连通链码的邻接点有4个,分别在中心点的上、下、左和右。8连通链码比4连通链码增加了4个斜方向,因为任意一个像素周围均有8个邻接点,而8连通链码正好与像素点的实际情况相符,能够准确地描述中心像素点与其邻接点的信息。因此,8连通链码的使用相对较多。

(a)四方向链码的方向符;                       (b)八方向链码的方向符。

八链码如下:

  1. 链码的定义

按照水平、垂直和两条对角线方向,可以为相邻的两个像素点定义4个方向符:0、1、2、3,分别表示0°、90°、180°和270°四个方向。同样,也可以定义8个方向符:0、1、2、3、4、5、6、7。链码就是用线段的起点加上由这几个方向符所构成的一组数列,通常称之为Freeman链码。用Freeman链码表示曲线时需要曲线的起点,对8链码而言,奇数码和偶数码的对应线段长度不等,规定偶数码单位长度为1,奇数码的单位长度为1.414。

2. 曲线的链码表示

(1)原链码  从边界(曲线)起点S开始,按顺时针方向观察每一线段走向,并用相应的指向符表示,结果就形成表示该边界(曲线)的数码序列,称为原链码,表示为

其中,S表示边界(曲线)的起点坐标,N=4或8时分别表示四链码和八链码。当边界(曲线)闭合时,会回到起点,S可省略。

(2)归一化链码

原链码具有平移不变性(平移时不改变指向符),但当改变起点S时,会得到不同的链码表示,即不具备唯一性。为此可引入归一化链码,其方法是:

对于闭合边界,任选一起点S得到原链码,将链码看作由各方向数构成的n位自然数,将该码按一个方向循环,使其构成的n位自然数最小,此时就形成起点唯一的链码,称为归一化链码,也称为规格化链码。我们将这样转换后所对应的链码起点作为这个边界的归—化链码的起点。

(3)链码的旋转归一化

用链码表示给定目标的边界时,如果目标平移,链码不会发生变化。

但是,如果目标旋转则链码会发生变化。为了得到具有旋转不变性的链码,我们可定义所谓的差分码。链码对应的差分码定义为:

对差分码进行(起点)归一化,就可得到归一化(唯一)的差分码,它具有平移和旋转不变性,也具有唯一性。

3. 边界的形状数表示

由于归一化的差分码既具有唯一性,也具有目标物平移和旋转不变性,因此可用来表示边界,称为形状数。形状数序列的长度(位数)称为形状数的阶,它可作为闭合边界的周长。

如上图所示的目标边界,其

原链码为:42120606454                   ,

差分码为 :   6716626617               ,

形状数:         1662661767               ,

形状数的阶为10 。

参考资料:

图像形状特征(三)--链码及形状数

中南大学_第7章 目标表达和描述技术