一、表示
1.链码
链码是对边界点的一种编码表示方法,其基本思想是利用一系列具有特定长度和方向的相连的直线段来表示目标的边界。
举例:若设起始点O的座标为(5,5),则分别用如下4方向和8方向链码按逆时针顺序表示区域边界:
4方向链码: (5, 5)1 1 1 2 3 2 3 2 3 0 0 0;
8方向链码: (5, 5)2 2 2 4 5 5 6 0 0 0。
2.链码表示的特点
A、只有边界的起点需用绝对座标表示,其余点都可只用接续方向来代表偏移量;
B、与用座标值相比,链码表达可大大减少边界表示所需的数据量。
3.存在的问题
直接对分割所得的目标边界编码,有可能出现如下问题:
A、产生的码串通常很长;
B、噪声等干扰会导致小的边界变化而使链码发生与目标整体形状无关的较大变动。
4.改进措施
对原边界以较大的网格重新采样,并把与原边界点最接近的大网格点定为新的边界点。
5.链码的起点归一化
A、问题的引出
链码起点的选择常是很关键的。对同一个边界,如用不同的边界点作为链码起点,得到的链码是不同的。
B、归一化
给定1个从任意点开始而产生的链码,可把它看作1个由各方向数构成的自然数。将这些方向数依1个方向循环以使它们所构成的自然数的值最小。我们将这样转换后所对应的链码起点作为这个边界的归一化链码的起点。
举例:
6.链码的旋转归一化
A、问题
用链码表示给定目标的边界时,如果目标旋转,则链码会发生变化。
B、解决方法
利用链码的一阶差分来重新构造1个序列(1个表示原链码各段之间方向变化的新序列)。这相当于把链码进行旋转归一化。
(雷刚萨斯P516:一阶差分是通过计算链码中的分隔两个相邻像素的方向变化的数。是按4方向或者8方向链码的逆时针方向得到的)自己画个图就知道啦!注意是逆时针!原理就是计算相邻两个元素方向变化(按逆时针方向)的次数。例如5→5变化了0步,记为0,4→6变化了两步,记为2。
原码 旋转90度码
链码 10103322 21210033
4方向差分: 33133030 33133030
7.多边形近似
(1)问题的引出
实际应用中的数字边界常由于噪声、采样等的影响而有许多较小的不规则处,这些不规则处常对链码和边界段表达产生较明显的干扰影响。
(2)多边形方法的基本思想
多边形是一系列线段的封闭集合,它可用来逼近大多数使用的曲线到任意的精度。
在实际中多边形表达的目的:要用尽量少的线段来代表边界并保持边界的基本形状,从而用较简单的形式来表达和描述边界。尽量少!
将边界看成是有弹性的线,将组成边界的像素系列的内外边各看成一堵墙,如将线拉紧则可到最小周长多边形。
MPP算法解释,见雷刚萨斯P520.本质上就是一个寻找MPP的算法。记住sgn()函数的意义就好!
sgn参考:https://blog.csdn.net/qq_18234121/article/details/82621723
该算法的效果描述:http://blog.sina.com.cn/s/blog_6f57a7150100opux.html
8.聚合技术
算法步骤:
1)沿着边界选两个相邻的点对,计算首尾连接直线段与原始折线段的误差R。
2)如果误差R小于预先设置的阈值T。去掉中间点,选新点对与下一相邻点对,重复1);否则,存储线段的参数,置误差为0,选被存储线段的终点为起点,重复1)2)。
3)当程序的第一个起点被遇到,程序结束。
9.分裂技术
方法:将一条线段不断的分割为两个部分,直到满足定好的某一标准。
算法步骤:
1)连接边界线段的两个端点(如果是封闭边界,连接最远点);
2)如果最大正交距离大于阈值,将边界分为两段,最大值点定位一个顶点。重复1);
3)如果没有超过阈值的正交距离,结束。
10.标记图
边界的一维函数表示。最简单的方法是:角度的函数的形式画出质心到边界的距离。
不管怎么生成标记图,概念都是将边界表示简化为描述起来比原来的二维边界更加简单的一维函数
11.边界线段
(1)基本概念
A、一个任意集合S(区域)的凸起外缘H是:包含S的最小凸起的集合。
B、H-S的差的集合被称为集合S的凸起补集D。
分割方法:追踪S的轮廓,并标记进入或者离开一个凸缺的转变点。
存在问题:噪音的影响,导致出现零碎的划分。
改进措施:先平滑边界,然后再分段。
12.骨架
(1)基本思想
表示一个平面区域结构形状的一种重要方法是把它削减成图形。这种削减可以通过细化(也称为抽骨架)算法,获取区域的骨架来实现。
(2)Blum的中轴变换方法(MAT)
设:R是一个区域,B为R的边界点,对于R中的点p,找p在B上“最近”的邻居。如果p有多于一个的邻点,称它属于R的中轴(骨架)
12.1 算法改进思想
在保证产生正确的骨架的同时,改进算法的效率。比较典型的是一类细化算法,它们不断删去边缘点,但要受到下列条件约束:A、不移去端点
B、不破坏连通性
C、不引起区域的过度腐蚀
12.2一种细化二值区域的算法:假设区域内的点值为1,背景值为0。由两个基本操作组成。
二、边界描绘子
1.一些简单的描绘子
1.1边界的长度:
A、定义:区域的边界长度。
B、计算方法
1)周长用边界所占面积表示, 也即边界点数之和, 每个点占面积为1的一个小方块。
2) 当把像素看作一个个点时,则周长用链码表示。此时,当链码值为奇数时,其长度记作 ; 当链码值为偶数时,其长度记作1。即周长p表示为
4邻域表示中,只有0 1 2 3 ,不会有存在,在8邻域表示中:奇数正好是对角线方向,所以要乘以。
1.2 边界的直径
Diam(B) = max[D(pi, pj)]
边界的直径也称为边界的长轴,短轴的定义为垂直于长轴的直线。这样的两条线和边界会有四个交点,这个方形称为基本矩形,长轴与短轴之比称为偏心率, 偏心率也是一个很有用的描绘子。
1.3 边界线的离心率:长轴和短轴的比率。
A、边界最大轴a:是连接距离最远的两个点的线段。
B、边界最小轴b:与最大轴垂直,且其长度确定的包围盒刚好包围边界。
C、基本矩形: 包围边界的矩形。
1.4 曲率
定义为斜率的改变率,描述了边界上各点沿边界方向的变化量。用相邻边界线段(描述为直线)的斜率差作为在边界线交点处的曲率描述子。
2.形状数
(1)定义:形状数是链码的最小值的差分码。
例如:基于4—方向的链码为:10103322,差分码为:33133030,形状数为:03033133。
(2)形状数的阶(order)
形状数序列的长度(即链码的个数)。对闭合曲线,阶总是偶数。对凸形区域,阶对应边界外包矩形的周长。形状数与方向无关
(3)存在问题
虽然链码的首差是不依赖于旋转的,但一般情况下边界的编码依赖于网格的方向。
(4)改进措施(规整化网格方向)
大多数情况下,将链码网格与基本矩形对齐,即可得到一个唯一的形状数。规整化网格方向的一种算法如下 :
A、首先确定形状数的序号n;
B、在序号为n的矩形形状数中,找出一个与给定形状的基本矩形的离心率最接近的形状数的矩形。
C、然后再用这个矩形与基本矩形对齐,构造网格。
D、用获得链码的方法得到链码;
E、再得到循环首差;
F、首差中的最小循环数即为形状数。
2.傅里叶描绘子
https://blog.csdn.net/qq_18234121/article/details/83014424
3.统计矩
(1)基本思想:
将描述形状的任务减少至描述一个一维函数,边界线段的形状可以通过简单的统计矩进行定量的描述,如均值、方差和高阶矩。(2)统计矩的定义
A、把边界当作直方图函数,将g(r)归一化为单位面积下的函数并把它做成直方图,就是讲作为产生值的概率。
函数的获得方式:将线段的两个端点连接起来,旋转该直线,直至其为水平线段,此时所有点的座标也旋转相同的角度。
其他参考资料:https://www.cnblogs.com/ronny/p/3985810.html
三、区域描绘子
1.度量一个区域的致密性的一个描绘子:
(周长)*(周长)/面积
圆度率:
一个区域的面积与具有相同周长的一个圆(最致密的形状)的面积之比。
周长为P的一个圆的面积是:P*P/(4π),圆度率表示为Rc:(就是说这个区域有多圆)
Rc = 4πA/(P*P)
2.拓扑描绘子
拓扑学研究一种图像在没有撕裂和连接的情况下(橡皮伸展变形),不受任何变形影响的性质。
(1)拓扑描绘子由区域内连通分量数来定义
(2)拓扑描绘子由欧拉数来定义 孔洞数H、连通分量的数目C、欧拉数E:
E=C-H
(3)拓扑网络与欧拉数的关系
V-Q+F=C-H=E
(V顶点数、Q边数、F面数)
3.纹理
(1)区域描绘的一种重要方法是量化其纹理内容
A、定义
纹理是由许多相互接近的、 互相编织的元素构成, 它们富有周期性。
纹理描绘子提供了对平滑度、粗糙度和规律性等特性的度量
B、纹理描绘子分类*(具体讲解见雷刚萨斯P536)
a) 统计方法。(采用统计方法对纹理进行分析。)
b) 结构方法。(从图像结构的观点出发,则认为纹理是结构,由纹理基元按一定规律排列而成。 采用句法结构方法。 )
c) 频谱法。(分析纹理的频域特征)