定源点出发,依据路径长度的递增次序,来产生到所有其它顶点的全局最短路径。于是,若把模型表面多边形的所有边和顶点看作一个连通图,多边形的边的欧式长度作为路径权值,那么运用 Dijkstra算法就可以在模型表面上建立DFS,若把DFB值看作是高度值,则模型的DFB就是一个高度位图,那么骨架分支就是该位图的“山脊线”。若构造某路径权值,使之随DFB值(高度值)单调递减,那么运用 Dijkstra算法得到的某两点间的最短路径,就是这两点间的“山脊线”,这样就得到了一条骨架分支。提取所有这样的分支,就可得到模型的完整骨架。
Gagvani提出一种基于距离变换的带参数控制的三维骨架提取方法。该方法比较每个点与其邻域点的距离变换值,满足一定局部最大条件的点被选为骨架点,再利用一个细化参数控 制骨架点的密度,并且可以由这些骨架点半自动地抽取出三维物体的中心线。
这种方法的优点是,能够由骨架点及其DT值重建出物体,而且它实现起来相对简单,能够抽取出不规则物体的骨架,使用面较广。另外基于距离变换的方法在骨架点的准确度上有明显的优势,且由此类方法求出的骨架具有完全重建原始图形的能力,并具备平移、旋转、比例变化的不变性。但是,用这种方法抽取出 的点集并不能保证得到一个连通的骨架。同时这类方法很难保证骨架的连通性,这将影响骨架拓扑特性的表达。此类方法也不保证骨架结果的单像素特性,这点与骨架定于是不符合的。
1.2.4 广义势场方法
广义势场方法假定物体的边缘上聚集了均匀分布的同种电荷,这些电荷在物体内部产生了一个稳定的电场。该方法首先选择物体边界上的凸点作为起始点,然后依照电场的方向移动到场强为0的地方。起始点的移动轨迹构成骨架的一个分支,最后连接所有分支得到骨架。广义势场方法利用了不同于距离变换的矢量场,取得了很好的结果。Ma等人提出过基于可见互斥力的骨架抽取算法,它应用了物理学上的互斥力的概念来计算模型上的平衡点,最终得到模型的骨架。Cornea等人对广义势场方法进行了改进,该方法将场强为0的点作为关键点,根据其文献所提出的力跟踪方法连接个个关键点,得到物体的核骨架,然后选择曲率较大的边界点继续生成骨架得到物体的层次骨架。