常用的链码根据中心像素点相邻方向的个数分为4连接链码和8连接链码。 4连通链码中有四个相邻点,分别是中心点的上、下、左、右。 8连通链码比4连通链码多了4个倾斜方向,因为任意像素点周围都有8个相邻点,而且8连通链码与像素点的实际情况一致,能够准确描述中心像素及其相邻点的信息。 因此,8连接链码使用得比较频繁。
(a) 四路链码的方向符号; (b) 八路链码的方向符号。
八个链码如下:
1. 链码定义
根据水平、垂直和两个对角线方向,可以为两个相邻像素定义四个方向符号:0、1、2和3,分别代表0°、90°、180°和270°。 方向。 同样,也可以定义8个方向符号:0、1、2、3、4、5、6、7。链码是由线段的起点和这些方向符号组成的一组序列,即通常称为链码。 当使用链码表示曲线时,需要曲线的起点。 对于8链码,奇数和偶数对应的线段长度不同。 规定偶数的单位长度为1,奇数的单位长度为1.414。
2.曲线的链码表示
(1)原始链码从边界(曲线)的起点S开始,顺时针方向观察每条线段的方向,并用对应的指针来表示。 结果是代表边界(曲线)的数字序列,称为原始链码。 ,表示为
其中,S表示边界(曲线)的起点坐标,当N=4或8时,分别表示四链码和八链码。 当边界(曲线)闭合时,会回到起点,S可省略。
(2) 标准化链码
原始链码具有平移不变性(平移过程中指针不变),但当起始点S改变时,会得到不同的链码表示,即不唯一。 为此形状,可以引入标准化链码。 方法是:
对于闭合边界,选择任意点S来得到原始链码。 链码被视为由各个方向的数字组成的n位自然数。 代码沿一个方向循环,以最小化其构成的n位自然数。 此时,形成的具有唯一起点的链码称为标准化链码,也称为标准化链码。 我们将这样转换后的链码对应的起点作为该边界的归一化链码的起点。
(3) 链码的旋转归一化
当链码用于表示给定目标的边界时,即使目标被平移,链码也不会改变。
但是,如果目标旋转,则链码会发生变化。 为了获得旋转不变的链码,我们可以定义所谓的差分码。 链码对应的差分码定义为:
通过对差分码(起点)进行归一化,可以获得归一化的(唯一的)差分码,该差分码具有平移和旋转不变性和唯一性。
3. 边界的形状数表示
由于归一化差分码对于目标的平移和旋转来说既唯一又不变,因此可以用它来表示边界,称为形状数。 形状数序列的长度(位数)称为形状数的阶,可以作为闭合边界的周长。
如上图所示,目标边界为
原链码为: ,
差分代码为: ,
形状数量: ,
形状编号的顺序为 10。