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

骨架提取算法应用 1、引言 根据个人理解,骨架提取(顾名思义)就是根据各个连通区域,将其抽离出与其轮廓近似的单像素表示形态。以便于直观观察、图像的后继处理。因此可以将其视为图像处理中的预处理,其操作是基于二值图。为了更好的提取图像骨架,必要时需要对图像进行相应的预处理(比如去噪、滤波、形态学变换等)。 我的应用主要集中在对一些包含线条型的零件检测,除此之外,骨架提取的应用特别广泛,比如文字的检测/识别、道路观测等。... 阅读详情
AI摘要

本文深入探讨三维骨架提取技术,对比分析体素和面片Mesh两种数据格式,并介绍三种主流骨架提取方法:scikit图像处理库的skeleton_3D,matlab的skeleton3d框架,以及ImageJ和ImagePy软件。同时,分享了基于ImagePy的骨架分析实践,包括节点和长度的提取。

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


[我的知乎]

[个人主页]

常见问题总结:

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

1 运行结果

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

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

2 基础知识介绍:

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

  2. 面片(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:开始编号,结束编号,长度。

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

【三维重建】三维骨架提取——相关文献和资料 骨架提取,其实在2D图像中,已经有了较大的应用。但在3D中,一直有研究,但总有种不够完善的感觉,这有点涉及到图形学等知识。 3D的骨架提取,根据模型输入的不同主要分为两种:点云(point cloud)和面片(mesh),一个是零散的无序的输入,一个是具有封闭曲面的输入。 1. 3d skeletons: A state-of-the-art report (2016年) 2. 基于改进自适应k均值聚类的三维点云骨架提取的研究 (自动化学报2020) 3. L1-medial skeleton o 阅读详情

相关推荐

[论文学习]:Skeleton Extraction by Mesh Contraction

论文学习:Skeleton Extraction by Mesh Contraction基础知识论文内容代码资源核心任务 基础知识 这里是利用mesh进行3D骨架提取的第一篇文章。 基础知识部分可以参考此处。 下面选取一些有代表性的列在下面。 面片(Mesh):三角网格就是由一系列三角形组成的多边形网格,主要用于模拟复杂物体的表面。无法描述模型的内部信息。有多种表达格式,例如OBJ、PLY等,所包含的信息也不同。但都包含顶点信息。应用领域:图形处理,实时渲染、3D人物模型等。 面片Mesh格式:只需要顶点

qq_43580325的博客 1359

【OpenCV 例程 300篇】224. 特征提取之提取骨架

骨架可以由区域的边界计算。提取骨架的常用方法是用重建开运算来实现。 skimage 中提供了函数 **skimage.morphology.skeletonize** 可以获取图像的骨骼。

youcans的博客 7490

基于深度学习的3D骨架动作识别

关于2D视频动作识别,请移步这两篇博客1,博客2 3D骨架动作识别,现在主要有两种方法,一是用LSTM进行时序上的记忆,二是将骨架坐标转换成特殊的图片,用卷积网络进行特征提取以及记忆。 目前使用的最大最全的数据集是NTU-RGBD,后来又出现了一个,但这个数据集是一段视频包含多段动作,主要是用来做detection的。 基于lstm的3d骨架动作识别 因为骨架信息是3D坐标,两帧之间的变化...

liudiudiu 1万+

【图像】骨架提取与分水岭算法

1、骨架提取 骨架提取,也叫二值图像细化。这种算法能将一个连通区域细化成一个像素的宽度,用于特征提取和目标拓扑表示。 morphology子模块提供了两个函数用于骨架提取,分别是Skeletonize()函数和medial_axis()函数。 1.1. Skeletonize()函数 输入和输出都是一幅二值图像。 from skimage import morphology,data,color import matplotlib.pyplot as plt image=color.rgb

liudongdong_jlu 6416

3D骨架抽取算法

3D骨架抽取需根据数据特性(网格/点云、完整性)、应用场景(实时性、精度)及计算资源选择算法。拓扑细化和距离变换是基础方法,模型分割与几何优化可提升特定场景的效果,而工具库(Matlab/Python)为快速实现提供支持。

百态·数智思维 | 聚焦大数据、量化与未来AI 1400

python 提取图中头像_医学图像处理案例(十一)——3D骨架提取算法

今天将分享人体三维主动脉血管骨架提取案例。1、常见3D骨架提取算法常见的两种图像细化方法有(1)、核滤波器,(2)、决策树。核滤波器方法是将结构元素应用在图像上,例如迭代地侵蚀物体的表面,直到仅保留骨架为止,该方法通常可以扩展到更高维度上。决策树方法是迭代处理26邻域内中目标和背景体素所有可能的二进制组合,并在每次迭代时找到所有可删除的表面点,虽然该方法仅限于2D和3D,但却比形态滤波...

weixin_33478314的博客 1530

opencv骨架提取(深入分析算法步骤)

前言 个人感觉骨架提取提取的就是开运算过程的不可逆。 一.算法步骤 1.算法步骤 首先上一下比较官方的算法步骤: 1.获得原图像的首地址及图像的宽和高,并设置循环标志1 2.用结构元素腐蚀原图像,并保存腐蚀结果 3.设置循环标志为0,如果腐蚀结果中有一个点为255,即原图像尚未被完全腐蚀成空集,则将循环标志设为1. 4.用结构元素对腐蚀后的图像进行开运算(消除小的白色区域),并求取腐蚀运算与开运算的差(得到消除的白色区域) 5.用[4]中求得的结果与之前求得的骨架进行并集运算,以获得本次循环求得的骨架 6.

qq_52095705的博客 8719

动态骨架模型与算法

动态骨架模型与算法在不同领域中有不同的应用和技术路线,以下是主要方向的详细分析:核心模型:时空图卷积网络(ST-GCN)动态骨架算法算法骨架(Algorithmic Skeletons)动态骨架曲线模型动态骨架模型与算法的核心在于对动态结构(如骨架、网络或材料行为)的建模与优化:动态骨架模型在人体动作识别中的最新进展主要集中在以下几个方面:时空图卷积网络(ST-GCN):多视角和多尺度交互方式:图神经网络(GCN)的应用:数据增强和生成模型:细粒度人体骨架动作识别:注意力机制和混合编码器:综上所述,动态骨架

百态·数智思维 | 聚焦大数据、量化与未来AI 743

基于3D骨架与AI的神经退行性疾病步态分析:技术原理与工程实践

计算机视觉与人工智能技术正逐步渗透到医疗健康领域,其中动作识别与行为分析是关键技术方向。其核心原理在于通过传感器捕捉人体运动信息,并利用深度学习模型从中提取有意义的模式。这项技术的核心价值在于能够实现客观、定量、无创的生理功能评估,为传统依赖主观观察和昂贵仪器的诊断方式提供了高效的数字化补充方案。在工程实践中,3D骨架数据因其数据效率高、隐私保护好、对背景变化鲁棒性强而成为理想的特征表示。通过图卷积网络(GCN)等模型,可以有效地建模人体关节间的空间关系与动作的时序依赖,从而精准捕捉细微的运动异常。这一技术

weixin_30384217的博客 326

不用写代码!用AIStarter 5.0.0离线包部署InfiniteTalk的完整指南(Windows/Mac/Linux全平台)

本文详细介绍了如何使用AIStarter 5.0.0离线包在Windows、Mac和Linux平台上零代码部署InfiniteTalk数字人。从环境准备、离线资源获取与验证,到全平台部署实操指南,提供了完整的本地化安装流程和优化建议,帮助用户快速实现AI项目的一键部署。

weixin_30275415的博客 272

Optisystem软件与Matlab软件的联合数据读取

目录 Matlab软件程序编写 Optisystem软件的连接与设置 数据读取结果 Matlab软件程序编写 利用Matlab软件按照下图编写程序,保存为getdata.m文件。 OutputPort1 =InputPort1; fileID=fopen('OSAdata.txt','wt'); fprintf(fileID,'%f\n',OutputPort1.Sampled.Signal); fclose(fileID); Optisystem软件的连接与设置 (以基于线性插值法

Vivian_Chen_的博客 4853

3D人体骨架检测(mediapipe)

在本教程中,我们将学习如何使用python中的mediapipe库进行实时3D骨架检测。

walchina2017的博客 2万+

WPS制作甘特图实操(带图超详细)

一、数据准备 图1 二、添加公式 在表格的E3处添加公式:=IF(C3>=G3,0,IF(C3+D3>=G3,G3-C3,D3)),点击该单元格的右下角。使鼠标箭头变“+”后下拉拖拽,复制该公式。F3处的公式为:=D3-E3,使用相同的拖拽方式复制公式应用,操作完毕如下图3. 图2 图3 三、插入图表 1、选中方框1内容,按住ctrl按键,继续选择2、3列的内容,点击插入全部图表中的条形图,选择2对应的图标样式,生成图6的样式。 点击图6中的3标尺,右击选择数据弹出图8,点击+号选择表格中

m0_49047167的博客 3万+

【亲测免费】 探索植物世界的骨架:3D点云数据植物骨架提取工具

在现代农业和植物学研究中,3D点云数据的应用越来越广泛。为了帮助研究人员和开发者更高效地从3D点云数据中提取植物骨架,我们推出了这个开源项目——**3D点云数据植物骨架提取代码Demo及测试数据**。该项目提供了一个完整的Python代码Demo,以及用于测试的3D点云数据文件,旨在简化植物骨架提取的过程,为相关领域的研究提供强有力的支持。 ## 项目技术分析 ### 技术栈 - **编程语

gitblog_09811的博客 1258

从FOC到你的无人机:深入浅出讲透Clark/Park变换在无刷电机控制中的核心作用

本文深入解析Clark变换与Park变换在无刷电机控制中的核心作用,揭示其如何将三相交流电转换为旋转坐标系下的直流量,实现无人机电机的高效精准控制。通过STM32硬件加速和工程实践案例,展示这对数学变换如何成为FOC算法的神经中枢,大幅提升系统响应速度和能效表现。

weixin_42628941的博客 167

Windows 10下用VS2022编译AFSIM 2.9.0的完整避坑指南

本文提供了在Windows 10系统下,使用Visual Studio 2022编译AFSIM 2.9.0仿真框架的详细指南。文章系统梳理了从环境准备、CMake配置、编译链接到安装打包的全流程,并重点针对编译过程中常见的文件编码、命名空间冲突等高频错误提供了具体解决方案,旨在帮助开发者高效避坑,顺利完成AFSIM在Windows平台上的构建。

weixin_28839549的博客 548

3D骨架提取

3D骨架提取算法的Python实现和C++实现,包括骨架提取以及写入树文件中: (1)Python import itk # python -m pip install --upgrade pip # python -m pip install itk-thickness3d def OutputTXT(filePath, list_centerLinePoint): with open(filePath, "w+") as fout: fout.writelines(

weixin_43229348的博客 2945

Linux下搭建J-Link调试环境:OpenOCD+GDB实战指南

嵌入式开发中,调试器是连接开发主机与目标硬件的关键桥梁,其核心原理是通过标准协议(如JTAG/SWD)访问芯片内部的调试模块。GDB作为通用的调试客户端,通过远程协议与调试服务器通信,而OpenOCD则扮演了协议转换与硬件驱动的角色,实现了调试命令的翻译与执行。这种开源工具链的组合,为开发者提供了高度的定制化与自动化能力,尤其适合需要与持续集成流程深度结合的复杂项目。在实际应用中,针对特定芯片(如ARM7TDMI)进行正确的内存控制器与时钟初始化是成功调试的前提,这常常涉及对板级支持包的深入理解。本文以S3

weixin_29889665的博客 333

HSMR生物力学骨架重构终极指南:从3D人体骨架生成到运动分析

HSMR(Human Skeleton Mesh Reconstruction)是一个革命性的生物力学骨架重构系统,能够从单张图像或视频中精确重建3D人体骨架和网格。作为CVPR 2025的口头报告项目,HSMR在**3D人体骨架生成**和**运动分析**领域实现了重大突破,为体育科学、医疗康复和动画制作提供了强大的技术支持。 ## 🎯 什么是HSMR生物力学骨架重构? HSMR是一个先进的

gitblog_01180的博客 1233

JavaScript教程-字符集,Unicode转义序列,标识符,数据类型,数字,未定义值,浮点数,字符串,引用数据类型,类型检测,类型转换,运算符,关系运算符,

前端学习

VAN 212

泛微系统流程表单获取节点操作者

泛微系统流程表单获取节点操作者 select typename 流程类型, workflowname 流程名称, nodename 节点名称, (case when nodetype=0 then '创建' when nodetype=1 then '审批' when nodetype=2 then '提交' when nodetype=3 then '归档' else '' end) as 节点类型, groupname 节点操作组, (case when type=1 then '部门+安

烧硬盘 4612

三维网格骨架提取之二

骨架是网格模型的中轴,可以被当做是分水岭。许多三维模型算法通过分析它的骨架而非模型本身,来降低问题的维度。 骨架提取算法有3个关注点: 精确的计算三维模型的骨架是一个复杂、计算量大的问题。 根据骨架提取的定义,骨架化的过程对模型边界的噪声十分敏感。(通常用Smooth对模型做预处理)。 参考自 1.《三维模型骨架提取算法研究与实现》彭艺。 2.《Skeletonization and Segmentationof Binary Voxel Shapes》 ...

weixin_36429070的博客 1952

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

3D点云植物树木骨架提取

项目进展 因为目前主要有两种流行的植物骨架提取方法,一种是用拉普拉斯收缩来做,一种是用最短路径,最小生成树的方法来做。(鉴于我只是本科生,并且数学也不太好,就没用拉普拉斯收缩来做hhhhh) 我们主要是用八叉树来约减数据量,然后用构造邻接矩阵,划分水平层次集、然后计算骨架点。 当然如果用常规流程来做,效果是不好的: 第一个问题是:根部数据集的分层效果不太好 第二个问题是:如果数据集噪声太大或者数据集的密度差异太大,骨架点的偏差会非常严重。 以上两个问题我是做了一些优化的,基本上可以达到理想的效果。但是鉴于数

weixin_46005626的博客 4991

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

推导3D体素骨架的网络图附Matlab代码

在计算机视觉和图形学领域,三维(3D)体素骨架的提取与表示是一个经久不衰的研究课题。其核心目标在于从离散的体素数据中抽取出能够反映物体拓扑结构和几何形状的骨架信息。这些骨架不仅能够提供物体简洁的表示,便于后续的分析、识别和操作,而且在医学图像处理、虚拟现实、计算机辅助设计等多个领域展现出巨大的应用潜力。本文将深入探讨推导3D体素骨架的网络图这一主题,从骨架定义、现有方法、挑战与机遇以及未来发展方向等方面进行全面的阐述。在理解骨架的网络图之前,首先需要明确3D体素骨架的定义。

j_jinger的博客 678

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

骨架动作分析

文章目录全面综述:基于3D骨架的深度学习行为识别方法基于RNN的方法基于CNN的方法基于GCN的方法数据集 全面综述:基于3D骨架的深度学习行为识别方法 2020.2.14 A Survey on 3D Skeleton-Based Action Recognition Using Learning Method 传统的行为分析往往都是基于视频数据,近年来基于骨架的行为识别逐渐发展渐渐成为一个不大不小的领域 骨架信息的获取可以使用 RGB,RGBD 或者 kinect 之类的传感器直接获取 基于骨架信息的

LJ的博客 1812
上一篇: 【3D实践】3D曲率原理及计算(3D-Mesh)
下一篇: 【高质量C++/C总结11】C++线程的基本使用方式
尹豆(douysu)
博客等级 码龄9年 151粉丝 41原创
评论 21
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值