找回密码
 立即注册
查看: 474|回复: 4

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

[复制链接]
发表于 2021-12-3 07:21 | 显示全部楼层 |阅读模式
源代码可在此仓库中找到:如果对您有帮助,还请给一个star,如果大家发现错误以及不合理之处,还希望多多指出。
1 运行结果

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




基础知识介绍:

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


面片(Mesh):三角网格就是由一系列三角形组成的多边形网格,主要用于模拟复杂物体的表面。无法描述模型的内部信息。有多种表达格式,例如OBJ、PLY等,所包含的信息也不同。但都包含顶点信息。应用领域:图形处理,实时渲染、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:开始编号,结束编号,长度。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-12-3 07:31 | 显示全部楼层
大佬啊,摩拜,什么时候我也能像大佬一样。[惊喜][惊喜][惊喜]
发表于 2021-12-3 07:35 | 显示全部楼层
我是小白我学几年可以做到
发表于 2021-12-3 07:43 | 显示全部楼层
如果是基于point cloud,该如何提取骨架?是要先体素化?
发表于 2021-12-3 07:50 | 显示全部楼层
首先保证体素格式,其次需要保证内部需要有数据。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 18:42 , Processed in 0.099627 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表