python医学图像处理之三维点云模型特征提取

      hello,小伙伴们,今天我们来聊一聊三维模型特征提取。在我们日常对模型进行一些操作(例如,配准、寻找特定点等),我们总是会遇到一个问题,就是如何从三维模型中提取其特征点。解决这个问题的方法有很多,例如,下采样,iss,甚至是深度学习等方法。

       今天,我会教大家几种基础的方法来进行特征点的提取。

       先清楚咱们今天的主角——示例的点云模型吧。大家可以猜猜这是什么,嘿嘿~

图1 示例点云模型

       首先是超级经典的ISS算法。

       ISS(Intrinsic Shape Signatures)算法是一种用于点云数据的特征提取方法,旨在描述点云中的局部形状信息。其核心思想是通过对点云中的每个点进行评估,为每个点分配一个局部形状签名。这个局部形状签名可以被用来比较点的局部形状,从而识别点云中的特定结构或特征。

import open3d as o3d

# 读取PLY文件
pcd = o3d.io.read_point_cloud("./fengxing_out/316ply/fx_0_l_gg_modify.ply")

# iss
keypoints = o3d.geometry.keypoint.compute_iss_keypoints(pcd)

# 设置特征点的颜色
keypoints.paint_uniform_color([1.0, 0.75, 0.0])  

# 可视化点云
o3d.visualization.draw_geometries([keypoints])

       图2是ISS的结果。我的这个示例模型是一个真实人骨的三维模型,表面凹凸不平,因此ISS在对这样的模型提取特征时效果并不会很好,但ISS在针对三维城市模型提取特征时效果会更好。

图2 ISS算法结果

       接下来呢,是介绍另一类提取特征的方法——点云下采样。这里我会介绍几种常用的点云下采样方法。

       首先是均匀下采样。图3是均匀下采样的结果。

import  open3d as o3d

#点云下采样-均匀下采样
pcd = o3d.io.read_point_cloud("./fengxing_out/316ply/fx_0_l_gg_modify.ply")
pcd_new = o3d.geometry.PointCloud.uniform_down_sample(pcd, 1000)#pcd为点云模型文件,1000为参数,可以按照自己的需求修改参数
o3d.visualization.draw_geometries([pcd_new])

图3 均匀下采样结果

       其次是体素下采样,图4是体素下采样的结果。

import  open3d as o3d

#点云下采样-体素下采样
pcd = o3d.io.read_point_cloud("./fengxing_out/316ply/fx_0_l_gg_modify.ply")

pcd_new = o3d.geometry.PointCloud.voxel_down_sample(pcd, 20)#pcd为点云模型文件,1000为参数,可以按照自己的需求修改参数

o3d.visualization.draw_geometries([pcd_new])

图4 体素下采样结果

       然后是曲面均匀采样,图5是曲面均匀采样的结果。

import  open3d as o3d
#点云下采样-曲面均匀采样
ply = o3d.io.read_triangle_mesh("./fengxing_out/316ply/fx_0_l_gg_modify.ply")

pcd = ply.sample_points_uniformly(number_of_points=1000)#1000为参数,可以按照自己的需求修改参数

o3d.visualization.draw_geometries([pcd])

图5 曲面均匀采样

            最后是泊松磁盘采样,图6是泊松磁盘采样的结果。

import  open3d as o3d

#点云下采样-泊松磁盘采样
ply = o3d.io.read_triangle_mesh("./fengxing_out/316ply/fx_0_l_gg_modify.ply")

pcd = ply.sample_points_poisson_disk(number_of_points=50)#50为参数,可以按照自己的需求修改参数

o3d.visualization.draw_geometries([pcd])

图6 泊松磁盘采样结果

       希望能帮助到各位小伙伴哦~大家可以根据自己的需求进行选择。如果大家对三维模型重建或者医学图像处理感兴趣的话,欢迎大家看看我的其他博客和资源哦~Python-医学图像处理之三维重建(进行切片级重建)_python医学图像处理_Cherry330的博客-CSDN博客

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cherry330

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值