第七章 轮廓表示 把边缘连接起来就成为轮廓(contour).轮廓可以是断开的,也可以是封闭的. 轮廓可以用边缘有序表或曲线来表示。 轮廓表示的评价标准: 效率:轮廓应该是一种简单和紧凑的表示. 精确:轮廓应能精确地逼近图像特征. 有效:轮廓应适合于后续应用阶段的计算.
精确表示轮廓的影响因素: 用于轮廓建模的曲线形式; 曲线拟合算法的性能; 边缘位置估计的精确度。
定义: 如果一条曲线穿过一组点,则这条曲线称为这些点的内插曲线. 逼近是指一条曲线拟合一组点,使得这条曲线非常接近这些点而无需一定穿过这些点. 边缘表是边缘点或边缘段的有序集合.轮廓的最简单表示形式 轮廓是边缘表或用于表示边缘表的曲线. 边界是包围一个区域的封闭轮廓.
7.1 数字曲线 设Pi=(xi,yi)是边缘表中第i个边缘坐标. (1)k斜率是在边缘表相距k个边缘点的两个边缘点之间的(角)方向向量. (2)左k斜率是Pi指向Pi–k的方向, (3)右k斜率是Pi指向Pi+k方向. (4)k曲率是左右k斜率之差值.
(5)数字曲线的长度可以近似为像素之间的线段和: (6)轮廓端点之间的距离为
数字曲线表示-链码 定义: 链码是沿着轮廓记录边缘表的一种表示方法.链码规定了边缘表中每一个边缘点的轮廓方向,其中方向被量化为四个或八个方向中的一个.
曲线的链码是:6022222021013444444454577012 其差分链码是: 220000627712100000017120111 曲线的链码是:024444424323566666676711234 其差分链码是: 22000062771210000017130111
链码的特殊性质: 链码的问题? 一个物体很容易实现45 角旋转.如果一个物体旋转NX45 ,可由原链码加上 n 倍的模8得到. 链码的微分,也称差分码,由原码的一阶差分求得.链码差分是关于旋转不变的边界描述方法. 区域的一些其它性质,如面积和角点,可以由链码直接求得. 链码的问题?
数字曲线表示2-K斜率 用任意的正切方向来表示轮廓可以克服链码的只能用有限个正切方向来表示轮廓的局限性. 假定从边缘表开始,计算正切和弧长s ,画出正切同弧长的关系图,称作s图.
一个轮廓及其s图. 对于封闭轮廓,s图是一个周期曲线.
7.2 曲线拟合 直线段(Line Segment) 圆锥曲线段(Conic Section) 三次样条曲线段(Cubic Spline). 用曲线模型拟合边缘点应考虑如下两个问题: (1) 用什么方法进行边缘点的曲线模型拟合? (2) 如何测量拟合的逼近程度?
常用的误差测量方法: 用di是拟合曲线和候选点之间的误差. 最大绝对误差MAE: 测量最坏情况下边缘点偏离曲线的距离, 均方差MSE: 给出边缘点偏离拟合曲线的总的测度,
规范最大规范误差NME: 最大绝对误差与曲线长度S之比, 误差符号变化数: 用来表示轮廓边缘模型的曲线适合程度的测度. 曲线长度与端点距离之比: 曲线复杂程度的测度.
多直线段是指端点连结端点的直线段序列,直线段序列的连接点称为顶点. 7.2.1 多直线段表示 多直线段是指端点连结端点的直线段序列,直线段序列的连接点称为顶点. 最大规范误差常常作为线段拟合边缘列表好坏的量度
直线段分裂 自顶而下的分裂算法(top-down splitting): 将整条曲线作为初始曲线,通过反复增加顶点数来进行直线段拟合曲线.
直线段合并 不能精确估计角点位置和角度。 (1)自底而上的合并算法(bottom-up merging): 用一条直线段尽量多地拟合边缘表中的边缘.边缘点离直线段太远而无法用该直线段拟合时,开始新的直线段拟合. (2)误差带合并算法: 计算两条离中心线距离为且平行于拟合边缘点的直线段.值表示离有差拟合直线的绝对偏离值。 (3)问题? 不能精确估计角点位置和角度。
分裂和合并 自顶而下的迭代分解方法和自底而上的合并方法组合起来,形成合并和分裂算法. 先分裂后合并来修补坏顶点的位置
算法7.1 一种有效的多线段拟合算法 从边缘表中的前k个边缘构成的子表开始; 用直线段拟合子表中第一和最后一个边缘之 间的边缘点; 如果正则最大误差太大,则将子表缩到最大 误差对应的边缘点处,回到步骤2; 比较当前直线段和原直线段的姿态,如果它 们具有相似姿态,则将这两条直线段合并; 置当前新线段为旧线段,向前移动边缘窗 口使得k边缘在子表中,返回第二步。
7.2.2 锥形曲线 有三种类型的锥形曲线:双曲线,抛物线和椭圆,其中圆是椭圆的一种特殊情况.在几何上,锥形曲线定义为锥体与平面的相交曲线 圆锥曲线表示如下:
(1)圆弧段 用直线段拟合一个圆弧可能需要许多个直线段才能满足拟合误差.如果将这些直线段用一个圆弧段来拟合,则仅需要一条圆弧段即可.因此可见,圆弧段拟合是在多边形的顶点上进行的。
算法7.2 用圆弧段代替直线段算法 1.将顶点窗口初始化为仅包含前两个直线段的三个顶点 算法7.2 用圆弧段代替直线段算法 1.将顶点窗口初始化为仅包含前两个直线段的三个顶点 2.计算两个直线段对应的轮廓长度与两个端点之间距离的比值.如果这一比值很大,则保留第一个直线段不动,将窗口向前移动一个顶点,然后重复这一步. 3.用一个圆来拟合这三个顶点. 4.计算正则最大误差和符号变化数. 5.若正则最大误差太大或符号数太小,则保留第一个直线段不动,将窗口向前移动一个顶点,返回步骤2. 6.如果圆弧段拟合成功,则尽力让该圆弧段合并下一个直线段.重复这一过程,直到没有直线段被合并为止. 7.圆弧段拟合结束后,移动顶点窗口到下一个多直线段顶点,返回步骤2.
(2) 圆锥曲线 圆锥曲线可以拟合轮廓多直线段上的三个顶点.将圆锥曲线段连接在一起的点称为结点.圆锥样条曲线是圆锥曲线的一个序列,它们的端点和端点连接在一起,在结点处具有相等的正切,以便使两个邻接曲线段之间平滑过渡.圆锥逼近如图
圆锥样条中的每一个圆锥曲线由两个端点、两个正切和第三点确定.结点位于多线段顶点之间: 直线段 由两个端点、三顶点构成的正切和第三点定义的圆锥曲线 在圆锥曲线序列中有一个角点 第三点定义为:
7.3 样条曲线 样条曲线的几何意义 当没有合适的函数模型时,用样条函数拟合数据点 最常见的形式是三次样条函数 几何等效和参数等效
7.3.1 三次样条曲线 三次样条是三次曲线的一个序列 样条中的每一个三次曲线称为样条段, 连结样条段的边缘点称为结点.
平面三次曲线方程 三次曲线段有八个参数: 过约束 系数a0, a1, a2 和a3是二元向量(图像平面点),参数u取值范围在0和1之间 第一和最后一个边缘点提供四个约束; 结点处的一阶连续性提供另两个约束; 结点处的姿态仅提供一个附加约束; 结点处的二阶连续性提供两个约束; 方程数量多于每一个三次样条段所需的八个参数。 过约束 .
极小化n-1个结点处二阶导数差值平方的和: 极小化结点处的曲率差值. 极小化n-1个结点处二阶导数差值平方的和: 变量 是结点i处的正切向量
7.3.2 B样条曲线 B样条曲线不必通过结点(称为引导结点)的平滑曲线 三次多项式是最常用的样条曲线: 确定上式四个多项式所对应的16个参数 ? 相邻曲线段以及二阶导数必须连续的条件提供15个等式
样条曲线示意图 (a)直线 (b) 二次样条曲线 (c)三次样条曲线 三次样条曲线的问题?
7.4 曲线回归逼近 穿过边缘子集中每一个元素的内插曲线,精确 ? 不强迫曲线通过某些边缘点,会得到精确的拟合曲线 使用所有边缘点来计算边缘点的最佳曲线逼近 p个参数的隐函数表示一般曲线拟合: p次观测产生p个方程来求解个p未知曲线参数 ?
全回归方法 对数据点与回归模型之间垂直距离平方和进行极小化 角点估计 直线段拟合求出直线段序列,计算直线段之间的交点. 局外点?
鲁棒回归法 鲁棒回归方法要对数据的各种子集进行测试,从中选择一个产生最佳拟合的子集. 设Z是n个数据点的集合,将Z集合中任意m个点的坐标设置成任意值(局外点),构成一个含有m个任意点的集合Z’. 已知回归预估器 由局外点引起的偏差: 断点定义:
最小二次中值回归方法 简单、被证明是解决大量局外点回归问题的非常有效的方法. 容错高达百分之五十的局外点,也就意味着数据点集中,有一半的数据可以取任意值而不会严重地影响回归结果. 在最小中值二次回归方法中,模型参数的估计由极小化残差平方的中值求得:
算法7.3 最小中值二次回归方法 假定有n个数据和p个参数的线性模型 在n各个数据点集中,随机地选择p个点. 用模型拟合p个点. 计算残差平方的中值. 拟合过程重复进行直到得到足够小的残差平方 中值,或者达到预定的再取样步长数值.
直线方程表示存在的问题? 极坐标表示: 空间与 空间的变换 y x
算法7.4 Hough变换算法 适当地量化参数空间. 假定参数空间的每一个单元都是一个累加器, 把累加器初始化为零. 对图像空间的每一点,在其所满足的参数方程 对应的累加器上加1. 累加器阵列的最大值对应模型的参数.
作业: 思考题:7.3, 7.4, 7.5, 7.11, 7.16 计算机练习题:7.2