Freeman链码
Posted 扰扰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Freeman链码相关的知识,希望对你有一定的参考价值。
【简介】
链码(又称为freeman码)是用曲线起始点的坐标和边界点方向代码来描述曲线或边界的方法,常被用来在图像处理、计算机图形学、模式识别等领域中表示曲线和区域边界。它是一种边界的编码表示法,用边界方向作为编码依据,为简化边界的描述,一般描述的是边界点集。它将线状地物或区域边界,由起点和一系列在基本方向上的单位矢量,给出每个后续点相对其前继点的方向编码表示。(百度百科)
【原链码】
常用的链码按照中心像素点邻接方向个数的不同,分为4连通链码和8连通链码。4连通链码的邻接点有4个,分别在中心点的上、下、左和右。8连通链码比4连通链码增加了4个斜方向,因为任意一个像素周围均有8个邻接点,而8连通链码正好与像素点的实际情况相符,能够准确地描述中心像素点与其邻接点的信息。因此,8连通链码的使用相对较多。
首先给出 Freeman编码的定义描述: 任选一个像素点(通常对已细化的图像进行)作为参考点,与其相邻的像素分别在 8 个不 同 的 位 置上, 给它们赋予方向值 0~7(如图 1), 称为0~7 位链码方向值, 一个线条可以用Freeman 链码 的 码值串来表示称为该线条图形的链码。如图 2, 给出一个9 ×9 的点阵图, 其中一条线段, S 为起始点, E 为终点,此线段可做如表示为 L = 43322100000066。
【归一化链码】
原链码具有平移不变性(平移时不改变指向符),但当改变起点S时,会得到不同的链码表示,即不具备唯一性。为此可引入归一化链码,其方法是:对于闭合边界,任选一起点S得到原链码,将链码看作由各方向数构成的n位自然数,将该码按一个方向循环,使其构成的n位自然数最小,此时就形成起点唯一的链码,称为归一化链码,也称为规格化链码。也就是找到闭合链码能表示的最小值。下图可以看出,当起点为箭头指向的0开始时最小。
【差分码】
为了得到具有旋转不变性的链码,我们可定义所谓的差分码。链码对应的差分码定义为:表示未旋转前的指向符加上m后对4(四链码)或8(八链码)取模。
取模运算:
利用链码的一阶差分来重新构造一个序列(一个表示原链码各段之间方向变化的新序列)这个差分可用相邻两个方向数相减得到
以上是关于Freeman链码的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 例程200篇222. 特征提取之弗里曼链码(Freeman chain code)