骨架是网格模型的中轴,可以被当做是分水岭。许多三维模型算法通过分析它的骨架而非模型本身,来降低问题的维度。
骨架提取算法有3个关注点:
- 精确的计算三维模型的骨架是一个复杂、计算量大的问题。
- 根据骨架提取的定义,骨架化的过程对模型边界的噪声十分敏感。(通常用Smooth对模型做预处理)。
- 一些新的骨架结构可以缓解Blum骨架的缺点。
Blum Skeleton。1967年Blum通过烧草模型(Grassfire Model)最早给出了中轴(Medial Axis)的物理描述,他假设图形边界点同时着火,以相同的速度从各个方向往内部燃烧,直到熄灭,所有的熄灭点构成了骨架。
形体总是由各个独特的部分组成,人们也总是能够很清楚的分辨出不同部分,这个过程不需要文本信息和先验知识。在计图中,模型分割的任务就是分辨出模型各个逻辑部分。骨架描述了模型的伸展,因此模型分割往往也基于骨架进行分析,正如上图的手所表示的,模型各部分对应着骨架的各个分支。
骨架提取算法一般包括四个方向:
- 基于拓扑与几何分析的方法
- 拓扑细化法(Topology Thinning)
- 基于距离场的方法
- 广义势场法
关于二值图(只有0、1两个值)的拓扑属性的研究称为数字拓扑。在3D中包含的概念有26邻居、6邻居、n路径。
Homotopic,同伦,两个形体之间能够进行连续的过渡。其他一些属性太过细节,我打算先跳过,直接看算法吧,后面遇到算法上不能直观理解的属性在回来看。
参考自
1.《三维模型骨架提取算法研究与实现》彭艺。
2.《Skeletonization and Segmentationof Binary Voxel Shapes》