链码 Chain Code 链码是对边界点的一种表示方法 特点一利用一系列具有特定长度和方向的 相连的直线段来表示目标的边界,每个线 段的长度固定,而方向数目取为有限,只 要边界的起点用(绝对)坐标表示,其余 点只用方向来代表偏移量 表示1个方向数比表示个坐标值所需的比特数少,而 且对每1个点又只需1个方向数就可以代替2个坐标值, 因此链码表达大大减少边界表示所需的数据量
链码Chain Code ❖ 链码是对边界点的一种表示方法 ❖ 特点-利用一系列具有特定长度和方向的 相连的直线段来表示目标的边界,每个线 段的长度固定,而方向数目取为有限,只 要边界的起点用(绝对)坐标表示,其余 点只用方向来代表偏移量 表示1个方向数比表示1个坐标值所需的比特数少,而 且对每1个点又只需1个方向数就可以代替2个坐标值, 因此链码表达大大减少边界表示所需的数据量
4-directional chain code 2 0 8-directional chain code 2 3 43 5 2 4 0 7 0
0 1 2 3 4 0 1 2 3 5 6 7 4-directional chain code 8-directional chain code 0 X Y 0 2 1 3 0 X Y 0 1 2 4 3 5 6 7
今实际中直接对分割所得的目标边界编码 有可能出现2个问题: 如此产生的码串很长 2、噪声等干扰会导致小的边界变化,而使链码发生与目标 整体形状无关的较大变动 常用的改进方法 对原边界以较大的网格重新采样,并把与原 边界点最接近的大网格点定为新的边界点 这样获得的新边界具有较少的边界点, 而且其形状受噪声等干扰的影响也较小 消除了目标尺度变 化对链码的影响
❖ 实际中直接对分割所得的目标边界编码 有可能出现2个问题: 1、如此产生的码串很长 2、噪声等干扰会导致小的边界变化,而使链码发生与目标 整体形状无关的较大变动 对原边界以较大的网格重新采样,并把与原 边界点最接近的大网格点定为新的边界点 常用的改进方法 这样获得的新边界具有较少的边界点, 而且其形状受噪声等干扰的影响也较小 消除了目标尺度变 化对链码的影响
使用链码时,起点的选择是很关键的,对同一边界,如用 不同的边界点作为链码起点,得到的链码是不同的 具体做法: 归一化处理 给定一个从任意点开始而产生的链码,可把它看 作1个由各个方向数构成的自然数 将这些方向数依1个方向循环以使它们所构成的自然数的 值最小,将这样转换后所对应的链码起点作为这个边界的 归一化链码的起点,如图所示 4邻域0 原链码归一化链码 10103322 01033221 4|3: 起点归一化
使用链码时,起点的选择是很关键的,对同一边界,如用 不同的边界点作为链码起点,得到的链码是不同的 具体做法: 归一化处理 给定一个从任意点开始而产生的链码,可把它看 作1个由各个方向数构成的自然数 将这些方向数依1个方向循环以使它们所构成的自然数的 值最小,将这样转换后所对应的链码起点作为这个边界的 归一化链码的起点,如图所示 0 3 3 2 2 1 0 1 10103322 原链码 归一化链码 01033221 起点归一化 3 3 2 2 1 0 1 4邻域
用链码表示给定目标的边界时,如果目标平移,链码不 会发生变化,而如果目标旋转,则链码将会发生变化 相邻2个方向按 反方向相减 用链码的1阶差分来重新构造1个序列(1个表示原链码各段 之间方向变化的新序列),相当于把链码进行旋转归一 (2)101033-22 33133030 22 左转90度 00 为最右1个 方向数循 033 环到左边 2 33133030 }3-: 目标旋转后,原链码发生变化, 但差分码没有变化
用链码表示给定目标的边界时,如果目标平移,链码不 会发生变化,而如果目标旋转,则链码将会发生变化 用链码的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个方向按 反方向相减