当前位置:文档之家› 三维网格分割的经典方法

三维网格分割的经典方法

三维网格分割的经典方法摘要:本文针对三维网格分割问题,提出一个经典的方法。

该方法基于微分几何和测地距离。

在算法中,将面片类型相同的顶点分割在一起。

测地距离利用顶点之间的最短路径表示,这里可以利用一些经典的算法求最短路径,如Dijkstra 算法。

但是当网格的数量很多时,Dijkstra 算法的效率很低。

因此,此算法避免了在整个网格上应用最短路径算法,在局部网格中求最短路径,从而减少了计算量。

本文在人造物体的三维网格模型以及分子结构中验证了该方法的有效性。

关键字:几何算法 面片分割 测地距离简介3D 物体的三维网格表示法具有很多的应用。

例如,在图像分析中,表示利用深度图像重建的物体表面。

此外,在复杂物体和场景的建模和可视化中也有广泛的应用。

在网格面片的分析中,网格分割已经成为一个关注的问题。

网格分割也就是将网格上相互接近并且具有相似曲率的顶点分成一组。

网格分割在很多方面具有重要的应用。

特征提取,模型匹配等。

Mangan 和Whitaker 提出三维网格分割的分水岭算法。

Razdan 和Bae 扩展了此算法,将基于点元(voxel-based )和分水岭算法相结合,来分割三角网格。

这两种方法在分割中都需要计算整个曲率,然后在局部曲率最小处建立初始分割。

然而,在某些物体中,局部曲率的最小值是很难确定的。

因此,在这里提出一个初始分割的新方法。

在该算法中,应用基于面片的类型信息的网格区域增长方法,对顶点进行初始分割。

利用高斯曲率和平均曲率对顶点所在的面片进行分类。

这里利用离散微分几何计算高斯曲率和平均曲率。

通过本文提出的新方法来求得测地距离。

文章结构:第二部分,介绍网格面片的曲率分析和面片分类。

第三部分,详述本文的分割算法。

第四部分,实验以及其分割结果。

第五部分,结论。

2 面片分析在面片分析中,首先计算高斯曲率和平均曲率,然后利用它们进行面片分类。

顶点P 0的高斯曲率K 的计算公式如下:,A K θρ∆= ,∑-=∆i i 2θπθ ∑=ii A A , A 为相邻三角形T i ( i =1,2,3,…)的面积总和。

ρ为常量3。

如图1所示。

平均曲率定义为沿面法向方向的散度(divergence ),n H ∇=。

面片的平均曲率的法向量的计算公式如下[5、6、7]:∑∈-+=-)())(cot (cot 41i N j i j j j P P A n H βα其中,N(i)为顶点Pi 的邻接多边形的集合。

( P j -P i )为边ij e ,j βα和j 分别为在N(i)中,边ij e 所对的两个角。

A 为N(i)中所有三角型的面积总和。

如图2所示,顶点P i 的平均曲率的近似表示。

利用高斯曲率和平均曲率对一个顶点所在的面片进行分类。

面片的类型T的定义如下,)),sgn(1()),sgn(1(31εεk H T -+++=其中sgn 为分段函数(符号函数)(a tolerance signum function),⎪⎩⎪⎨⎧<-≤>+=εεεεx x x x :1:0:1),sgn(3 网格分割算法设物体O 的网格结构为M ,M 由两部分组成,V 和E 。

},,{},,1|{},,,1|{q p i e i v i v v e N i e E N i v V =====其中,i v 为顶点,v N ,1≤≤q p 且q p ≠,V 是顶点集,E 为连接顶点的边的集合。

e v N N ,分别为M 中顶点和边的总数。

在该方法中,定义了四种分割类型:1. 峰值类型(peak-type ),2. 凹值类型(pit-type ),3. 最小面片类型(minimal surface-type ),4. 平面类型(flat-type )。

对峰面、脊面(ridge)、马鞍面峰值(saddle ridge)的相应顶点进行峰值类型的分割,对凹面、谷面(valley)、马鞍凹面(saddle valley)的相应顶点作凹值类型的分割,对最小面片的相应顶点作最小面片类型的分割,平面类型的分割及对平面片的相应顶点进行操作。

该方法分为三个阶段:a) 分割初始化,b) 计算分割中心,c) 顶点分割和分割合并。

3.1 分割初始化这一步,初步形成上述四种类型的分割。

对于模型中其他类型的相应顶点并不考虑。

本文应用区域增长法来完成分割初始化。

图3为分割初始化算法。

算法中涉及了两个函数,Segment_Initializing 和Mesh_Growing 。

Segment_Initializing 用来建立顶点分割集队列元素(无ID 号),然后迭代的调用Mesh_Growing 函数对没有分割的顶点进行分割。

Mesh_Growing 函数自动的寻找具有相同面片类型的连通顶点。

最后初始分割集的生成。

每一个初始分割都包含具有任意一种面片的类型的连通顶点。

3.2 分割中心的计算设k S 为包括vk N 个顶点的集合(k V )的初始分割。

令k ck V v ∈为k S 的中心顶点。

中心顶点设为:在集合k V 中,到所有顶点的平均测地距离最短。

由于平均距离和距离总和是可以等价的,中心点又可表示为,}min{∑i ik ck v v ,k ik V v ∈,⋅表示测地距离。

测地距离可以利用顶点的最短路径来近似的表示。

为了解决这个问题,首先建立一个带权矩阵,该矩阵既可以表示k V 中网格之间的联系,也可以表示相邻顶点间的欧几里得距离(即两点间距离公式求得)。

令k A 为k V 的vk vk N N ⨯的带权方阵,[]jk ik k v v A ,为方阵k A 的元素,其中k jk ik V v v ∈,。

k A 的定义如下,[]⎪⎩⎪⎨⎧∞∈∈=otherwise E v v if E v v if v v v v A jk ik jk ik jk ik jk ik k ,},{,0},{,,其中,||为欧几里得距离,E 为边的集合。

对k A 利用Dijkstra 算法求所有点对的最短路径(测地距离)。

此时所得到的方针k A 中元素均为最小值。

中心顶点ck v 满足在矩阵k A 中纵行距离和以及横行距离和均最小。

ck v ]},[min |{jk ik k ck v v A v ∑=图4为求图的中心顶点的例子。

3.3 分割在这一步,将未被分割的顶点i v 分割到距分割中心距离最小的分割集k S 中。

由此,我们可以知道顶点分割集[i]中是无标记的。

图5展示了i v 的分割算法。

首先建立一个集合D c ,D c 中存储顶点i v 到它的相应类型的所有分割中心的欧几里得距离。

如果初始分割的类型中,没有满足i v 的类型,D c 为空。

如果说在网格中,没有凹值类型的顶点,但具有低谷值类型和马鞍凹面类型的顶点,在这种情况下,不需建立凹值类型的初始分割集。

但是稍后,需要为低谷值类型和马鞍凹面类型的顶点新建立一个凹值类型的分割。

第二步,核对D c 。

如果D c 为空,则新建立一个包括i v 的分割,然后将这个分割添加到初始分割集中。

如果D c 非空,我们继续执行下一步。

第三步,选择一个距离域值p dist _,用于下一步中局部网格的生成。

p dist _为D c 中第p 个最短距离,p 的初始值为1。

p 每次加一或减一。

第四步,建立一个新的顶点集V t ,集合中的所有顶点到点i v 的距离都小于p dist _。

第五步,检查Vt 中局部网格的连通性。

首先,创建V t 的邻接矩阵来表示V t 中顶点的连通性。

设it v 为集合V t 中的顶点,i=1,…,N t ,N t 为集合V t 中顶点的总数。

令S t 为V t 的t t N N ⨯的邻接矩阵,矩阵中元素的定义如下,⎩⎨⎧∈=otherwise E v v if v v A jt iy jt iy t ,0},{,1],[ 在t A 中以i v 为根结点,进行深度优先搜索。

由此,可以得到与i v 相连通和非连通集合。

在这两个集合中分别可分割成中心顶点、以分割顶点、未分割顶点。

然后,从V t 中删除与i v 非连通的所有顶点。

对于与i v 相连通的顶点集,检查分割中心是否与i v 相连通。

如果连通,则执行第六步,否则更新p 值重复第三步。

第六步,在顶点集V t 中应用Dijkstra 算法计算i v 与分割中心以及其他顶点的最短路径。

然后将i v 分割到与分割中心距离最小的分割集中。

所有的顶点分割完后,以分割中心为根结点,利用深度优先搜索检查是否所有的顶点都是连通的。

非连通的顶点则从分割集中删除。

可能出现一种情况,某些顶点不属于任何一个分割集。

因此,我们利用网格增长算法将相似类型的顶点分成一组。

若得到的分割集太小(过分割问题),可以将这些小的分割集删除掉,或者是将它与其邻近的分割集相合并,但是要满足合并的两个分割集的整个曲率的差值应小于一个阈值。

一个分割的整个曲率即为该分割集中所有顶点曲率的平均值。

4 实验为了验证该方法的有效性,本文中进行了蛋白质三维网格模型和人工合成网格模型的分割。

这里在蛋白质结构的三维体柱结构中应用the marching cube algorithm ,对每种蛋白质三维网格结构的重构。

实验中建立了人造的模型,这些模型具有显著的特征,例如,低谷面、峰面、马鞍面,试验结果很容易的看出对这些特征的分割。

本文利用图形学建模软件Maya 来创建人造模型。

图3则标明了每个模型的信息。

图6 为蛋白质分割的结果显示。

图7为人造模型的分割结果显示。

对于每个模型,用不同的颜色表示不同的分割部分。

从试验结果可以看出,采用本算法可以很准确对显著特征进行分割。

这些分割结果可以应用在其他的网格分析中,例如,蛋白质的docking 应用。

5 结论本文利用微分几何和测地距离,提出一个新的网格分割方法。

在局部网格中应用Dijkstra算法。

此外,在分割检验和分割初始化过程中,分别应用了深度优先搜索和区域增长法。

对于网格面片的曲率,应用离散微分几何来求得。

从实验中可以看出,该方法能够准确的分割物体的显著特征,并得到满意的结果。

目前,该方法已经应用在蛋白质docking系统中。

相关主题