一种骨架化物体重建方法

文档序号:6421333阅读:359来源:国知局
专利名称:一种骨架化物体重建方法
技术领域
本发明涉及模式识别与科学计算可视化相结合的技术领域,特别是一种骨架化物体重建方法。骨架化物体重建主要是用于虚拟现实、图象压缩和重建以及目标跟踪。
背景技术
随着数据采集技术的迅速发展,在计算机图形学、计算机辅助设计技术、地理信息系统和医学图像系统中所使用的图象数据分辨率越来越高,数据量也越来越大。骨架化作为一种特征提取和特征描述方法,可以有效的删除冗余信息和保留特征信息,并能根据应用要求重建出原物体。在虚拟现实中,骨架化可以从数据中提取出路径以指导漫游,防止在漫游中迷路。对于文字、工程图、指纹中的”细茎”状图象等都是长而窄的带状图象,也常常需要通过计算它们的骨架来进行识别或重描等处理。在视频处理中,通过骨架提取图象中主要特征,可以精确的对运动物体进行跟踪。
骨架化物体重建得到了广泛的重视,陆续提出了一些典型算法,主要可分为voronoi方法,拓扑细化和距离变换。
Ogniewicz利用计算几何中重要的工具voronoi图来提取出骨架。对于平面中的点,可以得到该点的voronoi多边形,而voronoi图就是这些voronoi多边形的集合。voronoi图中物体边界的点所产生的voronoi边或voronoi面靠近物体的中心,因此这些边可认为是物体的骨架。但是该方法一般只能适用于三角网格模型,并且生成的骨架很粗,杂枝很多。
Rosenfeld提出了拓扑细化的骨架化方法。该算法首先定义那些删除以后不影响拓扑性质的点为简单点。然后从这个概念出发,考虑物体点的8-邻域或者26-邻域的拓扑关系,设计出一些删除模板,使得模板中的物体点满足简单点的定义。然后利用这些删除模板一层层的剥开物体,直到得到骨架为止。但是这种方法计算量太大,运行时间太长。Ma改进了删除模板,并对删除操作进行并行处理以加快运行速度。但细化的结果经常包含很多的杂枝。
Borgefors提出了基于距离变换的骨架化方法。距离变换的方法主要根据他的骨架定义物体的骨架是物体内到物体边界最大距离的点集。这类方法通常是先对二值体数据进行距离变换,然后将变换后的距离图看成一个有向或无向的加权图,最后采用Dijkstra最短路径生成算法得到中心路径。但是该方法对于物体的拓扑保持不好,尤其在物体的分叉处。
通过对上述三种主要方法的描述,骨架化算法应考虑以下六个方面(1)保持连接性;(2)保持中心性;(3)保持物体拓扑性;(4)不受噪声的影响;(5)参数可控的消除杂枝;(6)物体可以重建。

发明内容
本发明的目的在于提供一种骨架化物体重建方法。本发明欲解决的技术问题是获取物体的骨架,并可以根据该骨架重建出原物体。我们综合了拓扑细化和距离变换这两种骨架化方法,设计了一种新的方法,以满足上述六个要求。算法主要包括以下三步。
1、数据预处理在介绍预处理之前,我们先讲述一些数字拓扑学的概念。
设p(p1,p2,p3)和q(q1,q2,q3)是三维离散空间Z3上的两个物体点,我们可以定义以下两种距离D1(p,q)=Σi=13|pi-qi|,]]>D∞(p,q)=max{|pi-qi|,i=1,2,3}。
根据这两种距离,我们可以定义两种领域V1i(p)={q|D1(p,q)≤i},]]>V∞i(p)={q|D∞(p,q)≤i}.]]>在骨架化中,通常用到6-领域、18-领域和26领域,它们被定义为N6(p)=V11(p),]]>N26(p)=V∞1(p),]]>N18(p)=V∞1(p)IV12(p).]]>如果q∈Nn*(p)]]>或者p∈Nn*(q),]]>则p和q是n-相邻(其中n=6,18,26),在这里Ni*(p)=Ni(p)-{p},i=6,18,26.]]>给定一个物体集合X,n-路径为一系列定义在X中离散的且n-相邻的物体点。两个物体点是n-连接,如果在X中存在一条n-路径连接这两个物体点。X是n-连接的,如果对于X中任意两个物体点都是n-连接的。X的n-组成是X的非空n-连接子集,且对于该子集中的任意物体点和X中的其他物体点都不是n-连接。
一系列二维图象堆放在一起则构成了三维图象。在三维图片中,单位边是指长度为1的两个点;单位正方形是指1×1的四个点;单位立方体是指1×1×1的八个点。其中的长度1是指每幅图片中两个相邻像素点的距离或相邻两层图片相对应像素点的距离。
以上的概念都是定义在三维中的,对于二维,则可以把上述概念中的3变为2即可,同时还可得到4-领域和8-领域这两种领域。
我们所提出算法的预处理主要包括以下三个部分阈值分割、滤波和拓扑规范化。
我们采用阈值分割来提取感兴趣的区域,但是我们的分割方法同一般的阈值分割又有所区别。首先设置5个值Phighmax,,Phigh,Plowmin,Plow,(Phigh<Phighmax且Plowmin<Plow)和Ptolerance,其中[Plow,Phigh]表示如果物体点的像素值落在这个范围内,则它一定是分割后的物体点,[Plow min,Phigh max]表示如果物体点的像素值落在这个范围内,则它有可能是分割后的物体点,Ptoleranc e表示两个物体点的像素值之差。如果一个像素满足以下两个条件,则它属于分割以后的物体点,否则属于背景点(1)Plow≤P(x,y)≤Phigh,(2)Plow min≤P(x,y)≤Phigh max,|P(x,y)-Pneighbor(x,y)|≤Ptolerance,其中P(x,y)为物体点的像素值,Pneighbor(x,y)是该物体点8-领域中物体点的像素值。
经过这种阈值分割,我们可以得到一系列拓扑相连的二维图片。但在分割过程中,椒盐噪声的引入是不可避免的,所以在本算法中采用了形态学中的开运算滤波,通过引入合适的运算因子以消除椒盐噪声。
如果将骨架化算法直接用于此时的图象,则不能保证所得到的骨架为单位像素宽,但拓扑规范化的图象能够保证这样的性质。
一个三维图象是拓扑规范化的,如果它满足以下两个条件(1)每个单位正方形至多包含一个物体点的6-组成,(2)每个单位立方体至多包含一个物体点的6-组成。
根据上述定义,本发明了设计了两类加点模板,分别对应于平面和立方体,这两种模板都可以在程序中进行并行处理以加快运行速度。附图1为这两类加点模板的一种。
2、并行细化对Ma的删除模板进行分析可知,比较耗时的地方是D类模板需要对物体点进行简单点判断,这种操作会减弱程序的并行性,从而导致运行时间过长。此外为了能够进行骨架化重建,需要知道距离信息,本发明也在此对Ma的算法做了改进。我们并行细化算法的流程可以见附图2。
在我们的算法中,我们取消了D类模板的简单点判断并把这类模板做了单独处理。但这样的改变需要证明以下结论成立对满足D类模板物体点的删除,并行删除和单步删除是一致的。
从流程图可以看出,我们有三点理由证明它成立(1)从D类模板(见附图3)可以看出,p点的删除并没有影响26-领域内的拓扑性质。D类的其他删除模板可以通过附图3中的两个模板旋转和映射得到,而旋转和映射操作并不影响领域的拓扑性质。(2)我们的改进仍然严格的符合Ma中的数学证明,通过它我们可以知道我们得到的骨架是连续的,并没有改变骨架的拓扑性。(3)因为D类模板是被单独处理并且删除模板中的其他物体点和p点是18-连接的,所以D类模板是很少被使用的,因此D类模板对细化的结果影响很小。
另外一个改进就是使骨架不仅有点的坐标信息,而且还有骨架点到边界的距离信息,从附图2可以看出,在算法的开始部分我们设置了一个整数R,它表示删除点到边界的距离。在执行算法时,我们首先标定边界点,然后只对这些边界点用四类模板删除,对删除点的像素值赋以R,某个边界上所有点被处理完毕以后,则继续处理新的边界,并增加R值以表示新的距离值。当得到骨架以后,则可以以每个骨架点周围的距离值来判断该骨架点到边界的距离。具体做法为判断每个骨架点周围26-领域的最大值,并将此最大值加1作为骨架点到边界的距离。
3、拓扑重组上面并行细化得到的结果经常产生很多的杂枝,并且只得到许多离散的点,没有太多的拓扑信息,所以需要此加以改进。我们采用了体素编码来解决上述问题,并且取得了很好的结果。在讲述拓扑重组之前,我们先解释体素编码和最短路径提取的概念。
设V为一个三维图象,S为选定的种子点所组成的集合,这些种子点都是物体点,m6-m18-m26为体素编码所使用的赋值规则。
首先对于V中所有物体点的像素值初始化为无穷大。然后体素编码开始于那些选定的种子点S,并对这些种子点赋值0,对种子点的N6*(p)、N18*(p)-N6*(p)和N26*(p)-N18*(p)分别赋值为m6、m18和m26。不断的迭带和扩张,假设当前处理值为m的物体点,如果m+m6、m+m18和m+m26小于当前点N6*(p)、N18*(p)-M6*(p)和N26*(p)-N18*(p)中物体点的值,则这些物体点分别赋以m+m6、m+m18和m+m26。
从上面对体素编码的描述可知,初始点和赋值规则的选择是非常重要的。通常如果将物体的边界点作为种子点,则称这种编码为BS-coding。如果以单个物体点作为种子点,则称这种编码为SS-coding。1-2-3和3-4-5通常作为赋值规则。
SS-coding的一个重要应用就是最短路径提取。假设x和y为两个定义在V中的物体点,首先用上面所描述的方法以x作为种子点,选择一个赋值规则进行编码,当遇到y时则可结束编码。然后以y作为初始点,选取其26-领域中值最小的物体点为路径的下一个点,不断的跌带,直到遇到x为止。因为x是整个数据中的最小值,它必定出现在路径的另一端。
拓补重组的整个流程图可参考附图4。我们首先进行体素编码,它采用了SS-coding,以3-4-5作为赋值规则。由于我们重组的是细化后的骨架,所以在种子点的选择比较简单。通常在三维图象的第一层只有一个点或者只有一个连接区域,可以以这个点或者区域的中心作为种子点,其他情况则选择末端点作为种子点。如果在某个物体点的26-领域中只有一个物体点,则该物体点称为末端点。
骨架体素编码完以后,则骨架上的每个物体点就有了距离值,这时我们需要寻找以下两种物体点局部最大点和融合点。如果某个物体点的码值比其26-领域中的任意一个物体点的码值大,则这样的物体点称为局部最大点。如果某个物体点的码值比其26-领域中的至少两个物体点的码值小,并且这些码值大的物体点不是26-连接的,则称这样的物体点为融合点。通过上述的定义,我们可以建立两个数组LMArray和HMArray,分别存储骨架中的局部最大点和融合点,其中LMArray中的点以按照码值的大小降序进行存储。以LMArray中的的每一个点作为起始点,提取最短路径。处理完LMAarray中的点以后,再以HMArray中未出现在已经提取出的路径中的点为起始点,再做最短路径提取。在提取最短路径的过程中,遇到以下两种情况就终止(1)遇到种子点;(2)遇到其他树枝上的点。对于抽取出的每一个树枝我们用BranchArray存储树枝点的坐标值,并建立LabelArray存储这些树枝的父子关系。对于第一种情况,父树枝可以设置一个特殊的标记值,而对于第二种情况则以遇到的树枝的标记为父树枝。
我们设置一个剪枝阈值,当枝条长度(该枝条的BranchArray中存储的点的个数)小于这个值时,则该枝条将被删除,大于的话则保留。通过这个阈值,我们不仅能够删除杂枝,确定骨架的拓扑关系,而且还可以迅速的抽取出原物体的主特征。
4、物体重建通过上面的分析,我们可以看出我们的骨架点的信息非常丰富,这样我们的重建就变得非常的简单。
通过骨架点的坐标和骨架点到边界的距离,我们采取区域增长的方法来重建物体。我们以骨架上的每个点作为种子点,26-领域内的点可视为重建后的物体点,并将该点到边界的距离减1,这样不断的迭带,直到距离减为0为止,这样就可以重建出原物体。
在物体重建中,剪枝阈值也起着非常重要的作用,它控制着重建物体的繁简程度。它的值越小,则重建出的物体越细致,细节也越丰富。它的值越大,则重建出的物体越粗糙,物体细节丢失的也越多。


图1是本发明的两类加点模板图。
图2是本发明的并行细化流程图。
图3是本发明的两种D类模板图。
图4是本发明的拓扑重组的框架流程图。
图5是Ma的结果和本文算法的比较图。
图6是原物体和骨架图。
图7是不同剪枝阈值对应的骨架和重建的物体图。
具体实施例方式
图1中,(a)正方形加点模板(b)立方体加点模板,黑色的点代表物体点,白色的点代表背景点。在具体执行时,对三维图象中的4个体素点或者8个体素点符合图1中左边模板的,则转换成右边模板中的4个或者8个体素点。其他的加点模板可通过这两重模板旋转得到。
本发明图2中的并行细化的步骤如下步骤1初始化距离值。设置一个整数R,该整数代表删除点到边界的距离。当删除完满足删除条件的某一层点以后,则该整数增加1,以便表示下一层被删除的点。
步骤2释放未被删除的边界点并标记新的边界点。如果某个物体点的26-邻域中有一个点是背景点,则该物体点就被标记为边界点。对这些边界点的体素标上一个特殊的标记值,以区别与其他的体素点。同时对于上一次迭带中未被删除的边界点,重新赋为物体像素值。
步骤3用前三类模板删点。在删除标记点时,首先删除满足Ma算法的前三类模板的物体点。
步骤4用第四类模板删点。对于那些不满足前三类模板的物体点,使用改进的第四类模板删点。这一类模板放在一个单独的循环中,以保证并行细化和单步细化是等价的。
步骤5为删除点赋值。当某一层的物体点不能再删除时,为所有的删除点赋以值R,以表示这些删除点到物体边界的距离。
步骤6骨架点赋值。在为骨架点赋值时,以骨架点的26-邻域中所有的物体点的最小距离值加1,作为骨架点到物体边界的距离值。
图3中是Ma算法中的两种D类删除模板,其中p点必须是简单点。在我们的算法中,我们对D类模板进行了改进,取消了p点的简单点判断。其中黑点为物体点,白点为背景点,b中的白色方框中至少有一个是物体点,图4本发明的拓扑重组的框架流程图。
其具体步骤如下步骤1对输入数据进行体素编码。以三维图象的第一层剩余点中心或者末端点作为种子点,以3-4-5作为编码规则进行体素编码。
步骤2根据码值,搜寻局部最大点,建立三个数组分别存储局部最大点,融合点的26-邻域内的点和枝条的标记,并建立两个数组存储他们。再建立一个数组用来存储枝条的标记。
步骤3以局部最大点数组中的点为初始点,利用最短路径提取的方法提取枝条,并存储抽取出的枝条点。如果融合点数组中有提取枝条中的点,则删除这些点。
步骤4以融合点数组中剩余的点为初始点,利用最短路径提取的方法提取枝条,并存储这些枝条点。
步骤5根据阈值,如果某个枝条的点的个数小于阈值,则认为是杂枝,删除该枝条,重新整理各个树枝之间的父子关系。
图5中,最左边为原物体,中间为Ma的结果,右图为本文的结果。右列图是一个三维的空心框和三维的柳树,中间图是Ma算法的结果,右图是我们算法的结果。从图5中我们可以看出,我们的结果比Ma的算法更加能够保持物体的拓扑关系,并且从下行的两个框中右边的方框中可以看出我们的算法消除了杂枝,使得结果更加光滑。
在图6中,左图是将柳树和骨架放在一起,右图是将骨架和气管放在一起,从中可以看出,我们的结果满足了在技术背景中提出的保持连接性,保持中心性,保持物体拓扑性和不受噪声的影响的要求。
图7中,上列图是通过将剪枝阈值分别设置为60,30和15得到的骨架,下列图是通过这些骨架得到的相应的重建物体。从这里可以看出我们的算法满足技术背景中提到的后两个要求,即参数可控性的消除杂枝和物体可以重建。
我们用C++语言实现了本发明所描述的算法,并且在几个不同的数据集上作了实验。所有的实验都是在一台P4 2.4G,512MB内存,操作系统为Windows 2000的PC机上完成的,显示部分使用了标准的OpenGL图形函数库。
从图5中我们可以看出,我们的结果比Ma的算法更加能够保持物体的拓扑关系,并且从下行的红方框中可以看出我们的算法消除了杂枝,使得结果更加光滑。在图6中,我们将得到的骨架和原物体放在一起,从中可以看出,我们的结果满足了在技术背景中提出的前四个要求。在图7中,我们将剪枝阈值分别设置为60,30和15,我们可以得到由简到繁的骨架和通过骨架重建出的物体,从这里也可以看出我们的算法满足技术背景中提到的后两个要求,即参数可控性的消除杂枝和物体可以重建。
下表给出了我们算法具体的执行情况。

权利要求
1.骨架化广泛应用于模式分类和识别,现有的骨架化算法基本上都是按照距离变换或者拓扑细化来获得骨架的,如比较成熟的体素编码技术,它的基本思想是分别以物体的边界和物体内部的某个参考点作为种子点进行距离变换,然后根据这两种距离变换值来提取骨架,但是体素编码不能很好的保持复杂物体的拓扑结构,尤其不能很好的保持物体的分叉;由于我们综合了拓扑细化算法,我们提出的方法就可以解决拓扑保持的问题,而且还可以消除拓扑细化的杂枝效应,首先通过删除模板进行拓扑细化,并且在细化的过程中对每个删除点赋以一个整数值,该值表示这个物体点是在那一步被删除的,不断的迭带,直到不能再删除物体点为止,此时剩余的物体点可以作为我们的初始路径,接下来对初始路径进行体素编码,按照提取最短路径的方法,获得最终骨架,并设置一个删除阈值以光顺最终骨架。
2.为了确保初始骨架是单位像素宽,我们需要将输入数据进行前处理,尤其是要将输入数据进行拓扑规范化,我们总结了两种类型的加点原则来规范化输入数据,并在此原则的基础上设计了两类加点模板,通过这两类模板对输入数据并行处理,我们可以得到拓扑规范化的输入数据。
3.本方法的最终目的是能够实现对物体的重建,由于我们设置了删除阈值,我们可以得到不同精度的骨架,从而得到不同精度的重建物体,在重建的时候,由于我们的骨架信息中含有骨架点到物体边界的距离,我们可通过区域增长的方法以恢复原物体。
4.一种骨架化物体重建方法,包括以下步骤数据预处理;并行细化;拓扑重组。
5.根据权利要求4的骨架化物体重建方法,其特征在于,数据预处理步骤包括阈值分割步骤、滤波步骤和拓扑规范化步骤。
6.根据权利要求5的骨架化物体重建方法,其特征在于,阈值分割的方法,采用阈值分割来提取感兴趣的区域,首先设置5个值Phighmax,,Phigh,Plowmin,Plow,(Phigh<Phighmax且Plowmin<Plow)和Ptolerance,其中[Plow,Phigh]表示如果物体点的像素值落在这个范围内,则它一定是分割后的物体点,[Plowmin,Phighmax]表示如果物体点的像素值落在这个范围内,则它有可能是分割后的物体点,Ptolerance表示两个物体点的像素值之差。
7.根据权利要求6的骨架化物体重建方法,其特征在于,一个像素满足以下两个条件,则它属于分割以后的物体点,(1)Plow≤P(x,y)≤Phigh,(2)Plowmin≤P(x,y)≤Rhighmax,|P(x,y)-Pneighbor(x,y)|≤Ptolerance,其中P(x,y)为物体点的像素值,Pneighbor(x,y)是该物体点8-领域中物体点的像素值。
8.根据权利要求5的骨架化物体重建方法,其特征在于,滤波步骤的方法,采用了形态学中的开运算滤波,通过引入合适的运算因子以消除椒盐噪声。
9.根据权利要求5的骨架化物体重建方法,其特征在于,拓扑规范化的方法,满足以下两个条件(1)每个单位正方形至多包含一个物体点的6-组成,(2)每个单位立方体至多包含一个物体点的6-组成。
10.根据权利要求4的骨架化物体重组方法,其特征在于,并行细化步骤包括步骤1初始化距离值;步骤2释放未被删除的边界点并标记新的边界点;步骤3用前三类模板删点;步骤4用第四类模板删点;步骤5为删除点赋值;步骤6骨架点赋值。
11.根据权利要求4的骨架化物体重建方法,其特征在于,拓扑重组步骤包括步骤1对输入数据进行体素编码,步骤2建立三个数组分别存储局部最大点,融合点的26-邻域内的点和枝条的标记,步骤3以局部最大点数组中点为初始点,提取枝条,并存储抽取出的枝条点。如果融合点数组中有提取枝条中的点,则删除这些点,步骤4以融合点数组中剩余的点为初始点,提取枝条,步骤5根据域值,删除杂枝,并重新整理各个树枝之间的父子关系。
全文摘要
本发明涉及模式识别与科学计算可视化相结合的技术领域的一种骨架化物体重建方法。包括步骤数据预处理,并行细化,拓扑重组。骨架化物体重建主要是用于虚拟现实、图象压缩和重建以及目标跟踪。广泛的应用于图象压缩和重建、虚拟现实中的自动漫游以及计算机视觉中的目标跟踪等。本算法通过开运算滤波和拓扑规范化转换来预处理传输图象。在得到拓扑性好的图象以后,对图象进行并行细化,得到图象的骨架和骨架点到边界的距离,然后对骨架进行体素编码以消除杂枝,最后使用区域增长方法重建出原物体。
文档编号G06T15/20GK1629888SQ20031012333
公开日2005年6月22日 申请日期2003年12月17日 优先权日2003年12月17日
发明者张晓鹏, 刘剑飞 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1