毕业设计,毕业论文代写。专业水平。钻石水准,黄金品质。

计算机专业毕业设计,论文,设计代写。电邮:elevenor@gmail.com。专业水平,质优价廉。

转载 分段线性骨架收藏

新一篇: 基于图论的图像分割技术 | 旧一篇: Linux文件系统

1         引言

实现分段线性骨架是图像处理领域的重要课题之一。它很多时候用于手写体和印刷体字符图像中,虽然实现方法并不是特有的。我们观察一个图像时,可以把它看做是一系列曲线的集合,而不是像素光栅。从早期的数字计算机开始,实现分段线性骨架便是模式识别领域中研究人员的挑战之一,模式识别是用来模仿人类思维能力的技术。根据实际经验来看,曲线的骨架并不是像素光栅,而是一组细曲线。分段线性骨架的实现可以减少存储空间和图像处理时间。这种实现方法在寻找可识别字符图像方面具有显著的效果。

 

2         主曲线综述

主曲线概念是Hastie[14]于1984年提出的。主曲线是通过数据分布“中央”并满足“自相合”的光滑曲线,其目的是根据给定的数据集合求出一条曲线,使得这条曲线对给定的数据集合是某种意义下的对偶。形象地说,希望能寻找通过数据分布“中央”的曲线,使它能真实地反映数据的形态,即曲线是数据集合的“骨架”,数据集合是这个曲线的“云”。由此可见,主曲线对数据的信息保持性好。主曲线的理论基础是寻找嵌入高维空间的非欧氏低维流形,也是线性主成分的非线性推广。由于主曲线的这些性质和优点,自20世纪90年代以来在国外取得了较快的发展。1992年Banfield和Raftery[13]提出了BR主曲线,1999年Kegl[12]等人提出了PL主曲线,2000年Verbeek等人给出了K段主曲线算法,2001年Delicado[12]等人提出了D主曲线。虽然在主曲线的原理中使用了较复杂的数学,但由于其广泛的应用前景,在20世纪90年代后期已引起国外计算机科学家的关注,现在他们已报道了许多主曲线在计算机方面的应用,如线性对撞机中对电子束运行轨迹的控制、图像处理中辨识冰原轮廓、手写体的主曲线模板化和数据可视化等。

主曲线的定义:假设随机向量 的概率密度为 ,通过Y数据分布中间的一条曲线 ,如果满足 ,则称 是Y的一条主曲线其中 是数据点y投影到曲线 上s点的值,即 。

由主曲线定义可知:主曲线上每个点是所有投影至该点的数据点的条件均值,它满足自相合性。主曲线的理论基础是寻找嵌入高维空间的非欧氏低维流形,也是线性主成分的非线性推广,它能真实地反映数据的形态。

2.1 主曲线算法研究

本程序定义了主曲线和确定主曲线的实际算法。多边形线算法的基本运算法则是首先确定一条直线段,然后在循环算法中通过不断加入新的顶点来增加线段的数量。在加入一个新的顶点以后,所有的顶点位置在一个内部的环中被更新。由算法所产生的曲线如图1,在这个例子中,PL运算法则和HS运算法则在计算的复杂程度和算法的完善程度上作出了比较。


图1  100个数据元在PL算法所产生的曲线,(a),(b),(c),(d)分别有一段、二段

、4段和15段,由在半圆上任意两个坐标点加入单独的高斯误差而产生。

PL算法[12]在由NIST19号专有数据库产生的单独数据元构成的图像中得到了测试。我们发现PL算法可以有效的找出没有环和分叉的图像的中间轴。这个在图2中有显示。由于中间轴可能是一些曲线连接而成而不是只有一条曲线,所以在这里我们扩展了PL算法,找出数据元的主曲线。扩展了的算法也包含了实现分段线性骨架的两个原则,一种获取字符图像近似轮廓的初始化方法和一系列用来改善由初始化方法获得的骨架结构质量的更改结构工作。为了避免混淆,我们用术语“骨架”来表示近似性中间轴的二元图像,我们把由PL算法产生出的连接曲线看做模板骨架曲线图。

 


图2  PL算法可以有效地找出没有环和交叉的简单字符图像的光滑的中间轴。

主曲线以前被用在图像处理领域。这种图像用来描述在卫星拍摄下的冰川及其轮廓。其主程序用了一个闭合的曲线来估算冰川的轮廓。专家们除去了HS算法[13]中不合适的部分,并且用更完善的粗略估算冰川轮廓的程序来取代HS算法的初始化步骤。此外,采用数据元集合,而不是HS算法所产生的点或线的集合,向中间轴集中的方式来扩展现有的聚合算法。初始化的曲线由SOM算法[12]的一个变量产生,在SOM算法中相互关系被定义为字符图像的一个最小二叉树。HS算法用来使曲线与模板相对应。下一步的要点与SOM算法的更新规则类似。

利用主曲线实现分段线性骨架的方法被Mahmoud、Datta和Parui[14]等人所提出。同样的方法,在SOM算法中用来最优化分段线性骨架的顶点位置。算法在构建骨架方面采用“自顶向下”的策略:近似性地从一个线性拓扑出发,然后逐步加入环和交叉到骨架中,骨架是由基于SOM算法的当前几何样式得出的。SOM算法涉及到一个获取字符图像分段线性骨架的运算法则。这种运算法则以ISODATA算法[12]为基础,ISODATA算法近似于SOM算法。

主曲线算法的目的是找出与字符图像相对应的光滑的分段线性曲线。这些曲线

在某个顶点彼此连接,因而在字符图像的中心平面范围内形成一个欧几里德曲线。一个欧几里德曲线G(V,S)在空间中由变量V和S确定,

主曲线算法从一个基于传统稀释方法的初始化工作开始。初始曲线找出字符图像的近似拓扑结构,然而,它不是平滑的,而且它通常包含许多假的分叉和不适合的结构元素。为了解决这两个问题,在前两步中间增加了更改结构的步骤(图3)使得主曲线算法更加有效。在更改结构步骤中,我们运用一些操作手段来调整曲线骨架结构的不完整的地方。图4举例说明了一个曲线骨架图。


图3  主曲线算法流程图

算法的主要内容是拟合-光滑步骤工作。


图4  骨架曲线的变化

(a)图是在初始化步骤后由主曲线算法生成的曲线骨架;(b)图是经过首次拟合-光滑步骤后生成的曲线骨架;(c)图是经过更改结构后生成的曲线骨架;(d)图是第二次拟合-光滑步骤后产生的曲线骨架(算法输出)。我们重复使用PL算法的扩展版本来构造光滑的骨架曲线,同时保持曲线与字符图像的轮廓的距离近似相等。算法建立在最小能量函数的基础之上

2.2 研究动机与意义

自1904年Spearman[13]提出线性主成分分析方法以来,由于这种方法简单且便于使用,至今还是数据统计分析的重要工具之一。线性主成分分析的原理是将数据集合投影到一个矢量,使得投影的均方差最大,由此,将这个矢量称为数据集合的第一主成分。正是这个考虑,在均方差的意义下,这个方法有两个重要的优点:其一,数据集合可以使用一个矢量来描述,从而达到减小信息描述长度的目的,其二,计算第一以及依次主成分,可以变换为求解基于数据自相关矩阵的特征值方程。另外,第一与依次主成分矢量保持正交关系,这意味着,与主成分矢量平行的矢量具有与主成分相同的性质。正是这两个原因,加上在统计上以均方差为保证,主成分分析得到广泛的应用。 由于信息描述长度与信息保持性之间存在矛盾,相对较长的信息描述长度,较短描述长度的信息描述是以损失信息保持性为代价的,而主成分分析的本质是一种在均方差意义下的统计平均。尽管它可以获得较短的信息描述长度,但是,信息保持性的代价相当大,由于信息保持性是对数据分布的规律性认识,因此,对某些问题,这个代价可接受的,但是,另外一些问题,可能就不能接受了。例如,对原始语音信号的分析,单纯的主成分分析就不一定有效。 为了说明信息描述长度与信息保持性之间的关系,下图是一个简单的例子。图5是由300个包含误差的数据点构成的余弦状分布,图5(a)的直线是数据的第一主成分线,其对余弦数据的描述长度显然较图5(b)要短,因为这些数据点将使一个线段描述,因此,只需给出线段起点和终点即可,可以认为图5(a)给出了一个短描述长度的关于数据集合的描述;显然,图5(b)对数据的信息保持性则比图5(a)要好,一方面,它与数据间的距离均方差也要小,另一方面,它勾画出原始信息的轮廓。图5(b)恰恰是本文所讨论的根据主曲线原理所获得的结果。那么,两种描述哪一个更为合理呢?显然,这没有一个一般性的答案,这取决于所需解决问题的需求。

图5  信息描述长度与信息保持之间的关系

    图5也说明无监督学习较监督学习困难的原因,问题本身的病态定义导致不得不引入复杂性思想,如统计学习理论中的风险结构最小、贝叶斯学派中的贝叶斯信息准则、Kolmogrov算法[11]复杂度引出的最小描述长度等等,来寻求在信息保持性与数据描述长度之间的折衷。目前,尽管在主曲线的研究中,还存在着大量的数学问题,但是,由于其暗示的广泛应用前景,已引起计算机科学家的关注,现在应用方面已有大量的报道,如线性对撞机中对电子束运行轨迹的控制、图像处理中辨识冰原轮廓、手写体的主曲线模板化、语音识别中对声音数据的约简建模和数据可听化、生态学中寻找种群的有序分布及过程监控。同时,在认知领域Seung[14]提出感知以流形方式存在,并在神经生理学上发现整个神经细胞群的触发率可以由少量的变量组成的函数来描述,如眼的角度和头的方向,这隐含了神经元群体活动性是由其内在的低维结构所控制。主曲线本身是流形的一维形式。

为了说明主曲线的原理、发展脉络以及应用,首先介绍其原始动机是必要的。Hastie在他关于主曲线的开创性论文中描述了其研究动机,Hastie认为主曲线与非线性回归方法的发展上具有对称性,分别是线性主成分分析与线性回归分析的非线性推广模型,Hastie写到:类似于线性回归方法的非线性推广,使用光滑曲线代替线性主成分总结数据,以求出对称变量之间的曲线,这样的曲线从数据的中部光滑地通过,且不限制于对数据的光滑线性平均,甚至不限制于数据的中部是直线,只希望使得数据点集合到曲线的正交距离最小。这个陈述清晰地指出了他的研究与主成分分析和回归分析的区别,并给出了建模的统计目标。同时,从这个陈述中也可以看出,基于直线的主成分分析只是主曲线的一个特例。因此,主曲线的提出,可以理解为基于线性的主成分分析方法向更精确描述实际世界的非线性分析方法的推广。 应该指出的是,目前,“向非线性”推广是数据统计分析的研究主流,但是,存在着不同的技术路线。最典型的研究大致可以分为两类,其一,根据统计学习理论中的核技术,将数据集合映射到特征空间,然后,在特征空间计算数据集合的主成分,称为核主成分分析(KPCA),这个技术路线的本质还是线性主成分分析。其二,从数据本身的分布出发,希望找到能最好描述数据内在结构的概率分布模型,如生成式拓扑映射(Generative Topographic Mapping,缩写为GTM),矢量量化(VQ)及主曲线,以及流形拟合等。提出“主曲线的研究与回归分析有何区别”是自然的,两者的动机都是企望求出一个函数代替数据集合,但是,两者有本质的差别:其一,一般地说,回归分析是假设数据集合的变量有因果关系,换句话说,数据的变量可以表示为一个因果关系的函数,有些是自变量,有些则是因变量。其二,回归分析一般需要给定一个数学基函数,回归分析是根据数据集合中变量的因果关系,计算这个数学基函数待定的参数。这与主曲线的研究动机完全不同。对于前者,主曲线的研究目标是解决数据变量没有必然因果关系的问题,更重要的是后者,认为事先假定数据服从某种分布(如正态分布)的方法(这与给定数学基函数,根据数据确定参数的方法类似),对某些未知世界的解释是不合理的,因为这个假设可能是错误的,为了保证数据分析不是假设在一个错误结构下,主曲线的研究强调非参数分析。当然,这并不是完全否定了参数法这一经典方法,事实上,参数法在先验知识明确时存在相当大的好处。总之,根据上述讨论的动机,主曲线是寻找一种几何上直观、理论上完备、就解决的问题而言,这个方法与主成分分析一致,但是,主曲线的目标不是仅仅寻找一个数据集合的脊梁骨,而是希望获得数据集合的骨架。数据集合的脊梁骨可以使用线性的方法解决,但骨架就需要借助非线性方法了。应该强调的是,主曲线继承了主成分分析的众多思想,它是主成分分析的非线性推广。另外,尽管这个方法似乎与回归分析的目标类似,都是试图获得对数据集合信息长度更短的表示,但是,这个方法与回归分析完全不同,最大的差别是它不是事先给定一个基函数(或假定一个分布),从而将问题变换为参数估计问题,而是一种非参数的方法。

2.3 线性动态手写特征模板

 

基于动态形状模板的思想,线性AHM利用主元分析PCA(Principal Component Analysis)[12]来捕捉手写字符的变化。PCA的主要动机是降低优化空间的维数。在识别(匹配)阶段,AHM调节少量的形状参数而获得可变的模板去拟合目标字符。

对于某类别字符的M个训练样本 ,其中 ,即每个样本由N个关键点来表示而形成一个2N维向量。均值向量 。样本 与Ψ的差可表示为 。 所有这些均差向量形成一个2N×M维矩阵。协方差矩阵的特征向量 和特征值 可由下式求得:

(1)

各维特征向量的变化大小由相应的特征值刻画。大多数变化集中在M个特征向量上,一般地, 。于是,我们可用均值向量Ψ及特征向量U来生成一个模板:

(2)

这里, 是前 个特征向量, 叫作形状参数,它控制模板的形状变化。

在识别一个细化后的字符或部件时,AHM改变形状参数来拟合目标骨架图像。鉴于模板在一个二值化骨架图像上定位与匹配的困难,AHM采用Chamfer距离变换使得待识骨架成为一个连续值图像,变换后的图像的像素是原骨架点的全局加权距离。Chamfer距离变换的一个重要特点是有效地处理了噪声与扭曲,因为图像边缘上的变换描述了几何位置上的相互影响关系。原图像点的全局距离是由加权迭代求得。对于一个骨架文字图像,先将所有骨架点设为0,其余点设为∞。用一个3*3窗口扫描图像的各像素 ,在本次迭代中其新值 为

(3)

其中, 指其任一4-邻域点, 指其任一对角点。 。

由式(2)可知,寻找相对于目标图像的最优模板等价于寻找最优形状参数。AHM采用梯度下降法寻找最优形状参数b,使得模板与目标间的Chamfer距离最小。由于梯度下降法只能获得局部最优,AHM则结合动态通道算法DTA(Dynamic Tunneling Algorithm)[11]来寻求全局最优。DTA借用了量子力学中粒子穿越通道的概念,使搜索过程跳出当前的局部最优。由于各维特征向量正交,我们可以独立地在每维特征向量上寻找其最优形状参数。图6显示出寻找某维最优形状参数 的过程。梯度下降法从 处正轴方向搜索到局部最优,然后DTA跳出当前最优 ,找到一个新的低于 的起始点。梯度下降法与DTA总是这样交替作用,正轴方向搜索完毕转向负轴方向。

 


 

图6  梯度下降结合动态通道算法图解

2.4 HS主曲线

对某些问题,使用直线描述数据集的全局内在结构不能满足刻画这些问题的需要,为此,期望使用曲线对偶地描述数据分布是自然的考虑,同时希望保证数据对这一曲线的方差最大。事实上,这就是数据分布“中间”性的定性描述,Hastie将描述数据“中间”性的曲线称为主曲线。图7显示出了一组数据集的主曲线描述。


图7 一组数据集的主曲线

定义1(HS主曲线):具有连续概率密度 的数据分布的主曲线是流形M中满足自相合的成员。一条主曲线 是自相合的,如果:

(4)

其中,f(λ)与(3)式的相同,Λf是实线上的闭区间。

根据自相合定义((4)式)主曲线上的每个点是所有投影至该点的数据点的

条件均值,这一定义符合人对数据分布的直观理解。然而,对于有限数据集而言,投影到主曲线上相应位置的数据点至多只有一个,因此,在实际应用中,Hastie引入了邻域概念,即主曲线每一点是投影至该点邻域内的数据点集的条件期望,如图8所示。


图8 主曲线的自相合特性

如果假定数据分布是紧的,曲线可微、非闭且不与自身相交,根据上述定义,给出的主曲线保证投影指标与数据集上的数据点一一对应,不存在模糊点,并保证投影指标连续性和曲线的光滑性。

以下从几何意义上说明主曲线的“中间”性,同时可以看出它与基于线性主成分参数化分析方法的不同。

在变分意义下,主曲线距离函数的静态特性没有光滑性的限制。但是,为了保证主曲线的自相合特性(没有模糊点),Hastie强调主曲线的光滑性,并且这种光滑性由分布密度h来决定,考虑h的主曲线的光滑子集 , 当且仅当 和 在h的支撑下对所有点x是连续的。换句话,即,如果两个点x和y是邻近的,那么这两点在曲线上的投影也是邻近的,因此保证了数据分布的拓扑结构在主曲线上维持不变。这一光滑约束包含了几个含义:

●h的支撑下,每个x在主曲线上仅有一个最近点。

●曲线是全局良定义,即不会产生模糊点。

●没有点位于或者超过曲线曲率中心。即曲线相对于在曲线上的数据所产生

    的方差是光滑的。

由距离函数静态特性可知,主曲线可通过从任意光滑曲线来逼近。这样,主曲线距离函数可以表示为:

(5)

(6)

上式的局部最小等价于寻找曲线f和 使得:

(7)

最小。

显然,当固定f时, 按最近邻原则选取可使(5)式减小,同理,固定 ,按自相合特性求取f可使(5)式减小。由此,Hastie给出了在己知数据分布下的主曲线算法:

(0) 令初始曲线 为X的第一主成分线,设j=0

(1) (投影步) 对所有 ,求

(2) (期望步) 定义

(3) 如果 小于某个阈值,则停止,否则,令j=j+1,转step 1

这一算法相当直观,只需每一过程检查生成曲线是否满足自相合特性,如果是否定的,则继续投影步和期望步,直到收敛。以上算法保证了HS主曲线具有的特点:

(1) 按定义,主曲线是算法的不动点。

(2) 假定每次迭代是良定义的,且形成了一条可微曲线,则期望平方距离 收敛。

上述算法需要假设数据分布已知,如果数据分布未知,同时,要求严格按自相合性质,主曲线上每个投影点最多对应一个数据点,这时,寻找数据集的主曲线,算法上需做调整。

假定己知数据集 ,投影数据点至任意曲线f,对每个点作指标使其投影指标 按升序排列,曲线f可表示成连续投影点形成线段 构成的多边形曲线。计算到每个数据点最近的线段 ,其中 为:

(8)

如果 定义为 区间的线段,则新的投影指标等于从 到 的投影指标。在处理期望步之前,数据点按其投影指标重新以升序排列。

在期望步(step2),自相合条件变为对所有投影指标 邻域内的数据点距离差的加权平均。Hastie建议了几种方法:在主曲线上采用局部(加权)平均或核光滑子(如高斯基);主曲面上采用了二维光滑子(如常用的k-d树搜索)和局部平面光滑方法。HS主曲线算法,在实际数据集计算时,由于必须考察每个数据点与n-1条线段的距离,算法复杂度为 。

主曲线在描述数据分布的“中间”性上给出了对数据的约简,但通常人们还是希望保留更多的信息,自然也希望能在更高维的空间获取数据分布的“中间”性。尽管在主曲线上有多种方法来寻找,然而向高维主曲面推广时,Hastie的思想没有一般性的寻优方法,在主曲面上,由于曲面与曲线的本质区别,相当多在主曲线上适用的性质不能简单推广至二维主曲面。首先,并非所有曲面(如单侧定向的Mobius带)均能实现全局定义,或通过增加约束来隐性的降维,因此须建立局部等价性的方法;其次,主曲线参数化是以弧长来完成的,而弧长在一维下是有全局意义的,然而,向曲面推广时,参数空间的面积单位与曲面上面积单位形成对应,却难以形成全局意义,这也必须引入局部参数化思想。

要找一种具有全局性质的局部等价性方法,用微分流形来探讨主曲线(曲面)理论的高维推广是好的选择,然而,目前在这一方面的理论和应用性研究没有实质性的进展。

Duchamp[11]和Stuetzle[11]研究了平面上的HS主曲线的几何学性质,并论证在椭圆、球形、环形及围绕非线性曲线生成的数据集上HS主曲线的存在性,也给出一个负面的结果:由于主曲线是从数据获得的期望平方距离的临界点,因此在变分意义下没有局部最小,故采用交叉证实法(cross-validation)不能改善模型的复杂性问题。

Hastie在主曲线理论做出了两个重要贡献。首先,从算法的角度来看,HS方法没有假定数据服从何种分布,而更多地侧重于寻找数据变量间的非线性相关性,这是由于其没有采用常规的基于参数建模实现的。HS主曲线也可看成是一条多边形线(polygonal line),因此容易寻找最优的投影指标描述,这使得主曲线算法易于实现,且能推广至大规模数据集合中;其次,从理论的角度来看,主曲线定义为条件期望,符合人的一般性思维。主曲线在距离函数的临界性,使其是主成分的自然推广。线性主曲线就是主成分,以及在主曲线算法中,如果限定在直线迭代,必然收敛至最大主成分这些事实也进一步证实了主曲线是主成分的非线性推广。

 

3  利用主曲线实现分段线性骨架的算法实现

3.1 实现方法概述

本文首先采用推广的多边形(PL)主曲线算法来提取手写数字的骨架结构;然后在详细分析数字主曲线结构特征的基础上,选择数字图像中的回路数作为其整体特征,将笔画数、是否为直线、凸曲线数、凹曲线数、凸凹点及交点的相对位置、笔画端点相对于回路的位置作为其细节特征;最后将两者分别用于对手写数字进行粗分类和细分类。所提方法在Concordia大学的CEMPARMA[13]手写体数字数据库上的实验结果表明:利用这些特征能有效区分相似字符,提高了手写数字的识别率。

3.2 特征提取

我们采用推广的多边形(PL)主曲线算法来提取手写数字的骨架结构。算法主要有以下几步组成:

1. 初始化步。它采用传统的Suzaki-Abe算法来获取原始字迹模板的近似骨架图 。 由两个集合V,S构成,其中 是顶点的集合, 是边的集合。

2. 拟合-光滑步。这一步的目的是调整骨架图 的光滑性,使之更好地拟合字形。对给定数据集 ,用距离惩罚函数 取最小来优化骨架图,其中 是表示数据集中点到图形G中曲线的距离平方的平均值, 是关于G中曲线的平均曲率惩罚函数。 值较小表示骨架图可以较好地拟合数据, 值较小能保证骨架图的光滑性较好。在这一步中首先执行投影步,在投影步中把数据集 划分到属于骨架图顶点和边的最近邻区;其次做顶点优化步,即调整骨架图G中顶点和边的位置,使得距离惩罚函数 取得局部最小值。

3.重构步。这一步是对拟合-光滑步的补充完善。在重构步中利用骨架图的几何性质对顶点和边的结构进行修改,消除或校正初始图形的瑕疵。例如删除短分支、删除小圈等。

用推广的(PL)主曲线算法提取手写数字的骨架图见图9:


图9 主曲线算法提取手写数字骨架

用推广的(PL)主曲线算法提取如图5所示的手写数字的结构特征后,我们可知每一个数字由几条光滑的曲线组成。一条曲线是由一系列点 组成,并且每对相邻的点 ,j=1,…,l-1有一条边相连。例如第1个数字由3条光滑曲线组成。

3.3 与细化方法比较

由于主曲线与细化方法都是用来提取字符的骨架,所以在这一部分,我们从下面几方面把它与细化方法进行比较。

(1)在基于细化的特征提取算法中,由于字符图像信息是以位图形式存储的,且体现的是像素点信息,因此在特征选取过程中有诸多不便,需要对整幅图像进行扫描等处理。而使用主曲线就完全不同了,主曲线所得到的结果是以矢量形式存储的,这样就有利于特征选取。

(2)由于经过了拟合光滑步和重构步,使处理后的骨架更能准确地反映字符的整体拓扑结构,因此,在其基础上选取的字符特征比原来基于细化而得到的特征不但数量少而且要更加准确。这将对提高字符识别率有很大帮助。

(3)采用主曲线符合人们对字符是按曲线理解而非像素点的特点,即,从图论的角度看,它更有利于进行有效特征的选取。

(4)由于在提取主曲线时,需要对大量数据进行投影,所以其时间效率比细化差一点。

(5)主曲线是字符识别的一种新的尝试,有着更大的发展空间和前景。

3.4 特征的预处理

由于手写数字的书写因人而异,因时而变,形态变化十分巨大。为了更有利于特征选取,我们在用推广的(PL)算法提取完主曲线特征后,在进行特征选取前先对近似回路和回路外的短分支进行处理。例如把 等处理成 ,把 处理成 。具体处理算法如下:

(1)        对一条曲线而言,如果存在一点 到其中某一端点 的距离 以这两点间曲线的长度 小于某一参数,即


则认为这两点间形成一条近似回路。我们添加一条线段 使之构成近似回路。经大量训练样本训练可知参数parameter1=0.213时效果最好。

(2)对两条曲线而言,例如一条曲线的两端点 和 ,另一条曲线的端点

和 。则 和 的距离 除以这两条曲线长度之和

小于某一参数,即


则认为这两条曲线形成一条近似回路。我们添加一条线段 使之构成近似回路。经大量训练样本训练可知参数parameter2=0.267时效果最好。数字中近似回路的个数称为近似回路数。

(3)设曲线的端点为 和 ,回路的端点为 。如果曲线的长度 除以回路的长度 小于某一参数,即


则认为曲线相对于回路可删除,否则就不可删除。经大量训练样本训练可知参数parameter4=0.158时效果最好。

3.5 特征选取

提取数字的主曲线并预处理后,如何充分有效地利用数字的结构信息来选取出最能反映分类本质 的特征是模式识别过程中关键的一步,即如何进行特征选取对提高识别率是非常重要的。虽然手写数字的书写因人而异、因时而变,形态变化十分巨大,但用主曲线来作为其结构特征受字体变形的影响小。通过对数字主曲线特征详细分析后发现:回路数是区分数字的重要特征,且易于检测。利用回路数这一整体结构特征可先对数字进行粗分类,可分3类:


对数字粗分类后,我们再根据笔画数、凸曲线数、凹曲线数、凸凹点及交点的相对位置、笔画端点相对于回路的位置等细节特征将数字进一步区分。例如,我们通过分析发现不管3如何书写其凸曲线数必为2,其他数字则不存在这个特点;8不管如何写预处理之后其回路数必为2;端点与回路的相对位置可区分6和9等规则。

3.6 计算回路数

由于数字是由笔画本身连接或交叉而成,因此用主曲线进行特征提取后得到的图像可看做是一幅连通图。这里设连通图G中边的数量为E,顶点为v,顶点数是n,每个顶点的度数为 。如果以端点、二叉点、三叉点和四叉点作为连通图的顶点,那么显然,其顶点度数分别与它们的连通分量相同,即分别为1,2,3和4。为了检测连通图中的闭合曲线,即回路数,这里结合离散数学中图论知识可给出下面两个定理:

定理1. ,其中, 为G中顶点的集合。

定理2.  设G是连通图,则G中有闭合曲线的充要条件是E n,且当E=n时,G中有且只有一条闭合曲线,当E>n时G中必有多条闭合曲线。

下面我们给出数字图像中是否存在闭合曲线的检测方法:

(1)在主曲线图中抽取端点、二叉点、三叉点和四叉点,分别记录其个数 。

(2)用Euler公式计算出图中的边数 ;顶点数 。

(3)若E>n,则图中至少有2条闭合曲线存在;

若E=n,则图中有且仅有1条闭合曲线;

若E<n,则图中没有闭合曲线存在。

3.7 细节特征的选取

提取数字的主曲线后,通过详细分析,我们发现除回路数这一整体特征外,笔画数、凸曲线数、凹曲线数、凸凹点及交点的相对位置、笔画端点相对于回路的位置、是否为直线是区分数字的重要细节特征。

下面具体说明有关的细节特征:

数字中光滑曲线段的个数称之为笔画数(在这里一个回路表示一画),容易知道,笔画数=最大分叉数-回路数。例如2有一个四叉点,因而最大分叉数是4,又因为回路数为1,所以笔画数为3。

除回路以外,组成数字的各曲线中,如果曲线在X方向具有极大值,则称之为凸曲线。凸曲线的条数称为凸曲线数。例如3的凸曲线数为2,如果曲线在X方向具有极小值,则称之为凹曲线。凹曲线的条数称为凹曲线数。例如4的凹曲线数为1。

在这里定义的直线是近似直线。设曲线的两个端点为 ,如果曲线满足两端点间距离 除以曲线长度 大于某一参数,即


则认为这条曲线是直线,否则称曲线不是直线。经大量训练样本训练可知参数parameter3=0.847时效果最好。

 

4  程序调试与运行结果

本程序在eclipse运行环境下编译和执行,初始运行界面如图10所示:

 


图10

 

可以找出特定线从而实现图形的分段线性曲线,下面给出部分例子:

首先选中Sample菜单,选取图形如half circle(半圆),首先给出数据点的集合,然后按下“start”按钮,程序将运用多边形线算法计算出所选图形的主曲线,如图11所示,这个图形是半圆的主曲线,在次基础上对曲线进行了分段线性分割。


图11

程序还可以实现圆,S曲线,半椭圆等图形的主曲线,下面给出图例:


图12

图12显示的是圆形图形经过算法分析得出的分段线性骨架。


图13

图13是S类图形经过主曲线算法得出的分段线性曲线。

图14

图14是半椭圆在本程序分析后得出的分段线性曲线图。

按住Add vertex可以在分段中加入新的顶点。本程序还可以从外部网络引入需要的图形进行分析,分别通过Download Data和Load Data菜单栏选项进行操作。

5          开发工具简介

Java是SUN公司开发的一种面向对象的新一代网络编程语言,它可以在各种不同的机器、操作系统的网络环境中进行开发,具有解释型语言(如Basic语言)和编译型语言(如C语言)的特性。Java摒弃了C++中各种弊大于利的功能和许多很少用到的功能,用Java开发的程序可以在网络上传输,并运行于任何客户机上。

Java语言通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外,Java也适合于在小型机上运行,它的基本解释器及类的支持只有40KB左右,加上标准类库和线程的支持也只有215KB左右。库和线程的支持大概有215KB左右。

Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其它对象。

Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制,在编译时,Java提示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。

用于网络、分布环境下的Java必须要防止病毒的入侵。Java不支持指针, 一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。

Java解释器生成与体系结构无关的字节码指令,只要安装Java运行系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。

与平台无关的特性使Java程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java 系统本身也具有可移植性。

Java解释器直接对Java字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。和其它解释执行的语言如BASIC、TCL不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。

多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。

Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。

总之,Java语言提供一种强有力的工具支援程序设计员。Java让程序设计变得更容易,因为它属于面向对象语言,而且提供了自动的内存垃圾收集功能。再者,由于Java码具备结构中立性,因此其应用程序成为非同质性运算环境 (例如Internet)的理想方案。

结  论

实现分段线性骨架是图像处理领域的重要课题之一。它很多时候用于手写体和印刷体字符图象中。实现分段线性骨架的目的是找出特定曲线的中间轴。本文所描述的方法重新定义了主曲线和确定主曲线的实际算法。多边形线算法的基本运算法则是首先确定一条直线段,然后在循环算法中通过不断加入新的顶点来增加线段的数量。在加入一个新的顶点以后,所有的顶点位置在一个内部的环中被更新。从理论上讲,训练集的规模越大越好,但从实验中发现训练集规模达到一定程度时,本算法的识别率已很高且稳定。初步观察发现它所要求的训练集规模比其他方法相对要小,这样就会节省不少训练时间。下一步将对本算法的时间和空间复杂度进行深入的理论分析与实验验证,并与其他方法进行分析比较。同时为了进一步完善本系统的性能,我们将考虑如何把数字的统计信息引入到本方法中,充分利用结构信息与统计信息来设计更好的分类器。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

致  谢

 

正值论文完成之际,谨向所有曾给予我鼓励、关心和帮助的老师、同学、朋友表示深深的谢意!!

首先要感谢我的导师刘传才教授,在整个“毕业设计”的过程中,他给了我各方面的悉心指导,使我有可能完成论文。他严谨求实的作风和渊博深厚的学识深深的感染了我。

我还要感谢我们班以及我们系我所认识的好友,是他们给了我好的环境和鼓励帮助,让我愉快的完成了这次的设计。

感谢在我成长过程中所有关心我、帮助我的人们。

参 考 文 献

1          张军平,王珏.主曲线研究综述[J].计算机学报,2003,26(2):129~146.

2          陈允,张超.复杂图形中提取主曲线的方法.上海:上海交通大学出版社,

3          张红云,苗夺谦.基于主曲线的手写数字结构特征分析及选取.上海:同济大学出版社,

4          娄震,胡钟山.基于轮廓分段特征的手写体阿拉伯数字识别.计算机学报.

5          1999;22(10):1065~1073.

6          刘俊义,王润生.基于冲刷模拟的灰度模式骨架化算法.北京:电子工业出版社,

7          王峰.分段线性变换研究.北京:机械工业出版社,

8          黄宗任.分段线性化实例教程.北京:机械工业出版社,

9          刘波,王克宏.字符图像的轮廓表示.北京:电子工业出版社,

10      吴建平,冯晓冬等.JAVA程序设计语言.北京:清华大学出版社,

11      刘德意.JAVA编程指南. 北京:清华大学出版社,

12      赫勒.P等.JAVA高级开发指南.北京:电子工业出版社,

13      Jeff Friesen.用实例学JAVA.北京:电子工业出版社,

14      Kégl B. ,"Principal curves: learning, design, and applications", Ph. D. Thesis, Concordia University, Canada, 1999.

15      Kégl B. , Krzyzak A. , et al , "A polygonal line algorithm for constructing principal curves", Neural Information Processing Systems 1998, MIT Press, 1999, pp. 501-507.

16      15.Kégl B. , Krzyzak A. , et al, "Learning and design of principal curves", IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000,22( 3): 281-297

更多内容:

麻省理工算法导论翻译
http://blog.csdn.net/ctu_85/archive/2007/06/08/1643179.aspx
华容道游戏与算法
http://blog.csdn.net/ctu_85/archive/2007/05/15/1610722.aspx
中国象棋对战程序C语言源代码
http://blog.csdn.net/ctu_85/archive/2007/05/04/1596351.aspx
浙江大学ACM试题解答(四月)
http://blog.csdn.net/ctu_85/archive/2007/04/24/1576831.aspx
浙江大学ACM试题解答(三月)
http://blog.csdn.net/ctu_85/archive/2007/03/20/1535556.aspx
三维建筑物图像的二维建模
http://blog.csdn.net/ctu_85/archive/2006/12/20/1451106.aspx
基于图论的图像分割技术
http://blog.csdn.net/ctu_85/archive/2006/06/15/799857.aspx
Linux文件系统
http://blog.csdn.net/ctu_85/archive/2006/06/12/791644.aspx
分层模型
http://blog.csdn.net/ctu_85/archive/2006/06/07/777997.aspx
汉语编程企业管理应用软件可行性研究报告
http://blog.csdn.net/ctu_85/archive/2007/01/22/1490139.aspx
汉语编程企业管理应用软件需求说明书
http://blog.csdn.net/ctu_85/archive/2007/01/22/1490136.aspx
计算机专业操作系统课程设计报告
http://blog.csdn.net/ctu_85/archive/2007/01/22/1490130.aspx
软件可行性报告
http://blog.csdn.net/ctu_85/archive/2006/06/06/775894.aspx
软件需求分析报告
http://blog.csdn.net/ctu_85/archive/2006/06/06/775892.aspx
两种计算Ack(m,n)的非递归算法
http://blog.csdn.net/ctu_85/archive/2006/11/29/1419396.aspx
浙江大学计算机复试解答1
http://blog.csdn.net/ctu_85/archive/2006/10/15/1334936.aspx
浙江大学计算机复试解答2
http://blog.csdn.net/ctu_85/archive/2006/10/16/1336101.aspx
浙江大学计算机复试解答3
http://blog.csdn.net/ctu_85/archive/2006/11/02/1363159.aspx

发表于 @ 2006年06月15日 14:48:00|评论(loading...)|编辑

新一篇: 基于图论的图像分割技术 | 旧一篇: Linux文件系统

评论:没有评论。

发表评论  


登录
Csdn Blog version 3.1a
Copyright © ctu_85