【3D实践】3D模型骨架提取及分析

作者:憨豆酒(YinDou),联系我yindou97@163.com,熟悉图形学,图像处理领域,本章的源代码可在此仓库中找到<https://github.com/douysu/person-summary> 


[我的知乎]

[个人主页]

常见问题总结:

博客发布以来收到了许多反馈,点击这里查看常见问题列表常见问题列表链接,也许就可以找到您的答案。

1 运行结果

经历了一个痛苦的过程,做骨架提取的很少众,做三维骨架提取的更加少,中文资料也很少,本人在这里进行总结,帮助需要的人。源代码位置在顶部链接

下面是我对我的数据进行骨架提取的效果。

基础知识介绍:

  1. 体素(Voxel):可以产生体数据集,不仅包含模型的表面信息,而且可以描述模型的内部属性。与表示图像的二维像素比较类似,只不过是从二维的像素扩展到了三维的立方体单元。应用领域:三维成像、地理分析、化学分析、科学资料与医学影像等等等。

  2. 面片(Mesh):三角网格就是由一系列三角形组成的多边形网格,主要用于模拟复杂物体的表面。无法描述模型的内部信息。有多种表达格式,例如OBJPLY等,所包含的信息也不同。但都包含顶点信息。应用领域:图形处理,实时渲染、3D人物模型等。

3 数据准备

体素格式:需要保证内部也要有体素,不能只是表面。体素格式本质是三维矩阵,0是背景,1是前景。

PS:你的数据如果是ply,obj,需要进行体素化操作,常用工具是MeshLab。如果数据是mat,甚至还可能是nparray,可能是图像栈,都没关系,都是可以进行转换

面片Mesh格式:只需要顶点坐标。

4 两种骨架提取方法:

4.1 基于体素的骨架提取的框架以及算法:

目前常用的共三种方法:

(1)Python的scikit图像处理库的skeleton_3D方法  点击链接

(2)matlab的第三开发者骨架提取框架skeleton3d 点击链接

(3)图像处理程序ImageJ、ImagePy。熟悉图像处理领域的读者应该很清楚ImageJ。而ImagePy是国内开发人员开的框架,它模拟了ImageJ。点击链接

这三者使用都是1994年的算法:Building Skeleton Models via 3-D Medial Surface/Axis Thinning Algorithms 此算法是基于体素进行迭代,有兴趣的可以看看此Paper。

以下为对应的官方案例展示结果图。

(1)scikit中没有给出三维案例,只给出了二维案例。

(2)matlab的展示结果

(3)ImagePy的展示结果

4.2 基于三维面片的骨架提取算法:

基于三维面片的骨架提取算法可以参考此篇Paper:Skeleton Extraction by Mesh Contraction

5 骨架分析:

我使用的是ImagePy进行的骨架分析。

在这篇教程中很详细的描述了骨架分析的方法,包括骨架节点的提取,骨架长度的提取等等。参考链接

可以查看一下我的分析效果:

NodeID:端点。

Degree:端点线数目。

X,Y,Z:端点坐标。

骨架:

startID,EndID,Length:开始编号,结束编号,长度。

如果在使用和运行过程中遇到什么问题欢迎联系我,yindou97@163.com 微信ID:douysuu

  • 16
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值