open3d 表面重建

news2025/1/19 18:32:08

目录

1. create_from_point_cloud_ball_pivoting

2.  create_from_point_cloud_alpha_shape

3.  create_from_point_cloud_poisson


从以下效果来看,第三个方法最好。

1. create_from_point_cloud_ball_pivoting

关键代码:

rec_mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_ball_pivoting(
    pcd, o3d.utility.DoubleVector(radii))

triangle_mesh_from_point_cloud_ball_pivoting.py 

import open3d as o3d
import numpy as np

if __name__ == "__main__":
    # 1. read pcd
    bunny = o3d.data.BunnyMesh()
    gt_mesh = o3d.io.read_triangle_mesh(bunny.path)
    gt_mesh.compute_vertex_normals()

    pcd = gt_mesh.sample_points_poisson_disk(3000)
    print("Displaying input pointcloud ...")
    o3d.visualization.draw([pcd], point_size=5)

    # 2. creat mesh by ball.
    pcd.estimate_normals()
    distances = pcd.compute_nearest_neighbor_distance()
    avg_dist = np.mean(distances)
    radius = 2 * avg_dist

    # radii = [0.005, 0.01, 0.02, 0.04]
    radii = [radius, radius*2, radius*4, radius*8]
    # radii = [radius, radius*2]
    print('Running ball pivoting surface reconstruction ...')
    rec_mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_ball_pivoting(
        pcd, o3d.utility.DoubleVector(radii))
    print("Displaying reconstructed mesh ...")
    o3d.visualization.draw([rec_mesh])

 

2.  create_from_point_cloud_alpha_shape

关键代码: 

mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(
    pcd, alpha)
import open3d as o3d

if __name__ == "__main__":
    # 1. read pcd
    bunny = o3d.data.BunnyMesh()
    mesh = o3d.io.read_triangle_mesh(bunny.path)
    mesh.compute_vertex_normals()

    pcd = mesh.sample_points_poisson_disk(3000)
    print("Displaying input pointcloud ...")
    o3d.visualization.draw_geometries([pcd])

    # 2. create mesh by alpha
    alpha = 0.03  # 越大形状偏离越大
    print(f"alpha={alpha:.3f}")
    print('Running alpha shapes surface reconstruction ...')
    mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(
        pcd, alpha)
    mesh.compute_triangle_normals(normalized=True)
    print("Displaying reconstructed mesh ...")
    o3d.visualization.draw_geometries([mesh], mesh_show_back_face=True)

  

3.  create_from_point_cloud_poisson

关键代码:

mesh, densities = o3d.geometry.TriangleMesh.create_from_point_cloud_poisson(
    pcd, depth=9)
import open3d as o3d
import numpy as np

if __name__ == "__main__":
    # eagle = o3d.data.EaglePointCloud()
    # pcd = o3d.io.read_point_cloud(eagle.path)
    # R = pcd.get_rotation_matrix_from_xyz((np.pi, -np.pi / 4, 0))
    # pcd.rotate(R, center=(0, 0, 0))
    # print('Displaying input pointcloud ...')
    # o3d.visualization.draw([pcd])
    bunny = o3d.data.BunnyMesh()
    mesh = o3d.io.read_triangle_mesh(bunny.path)
    mesh.compute_vertex_normals()
    pcd = mesh.sample_points_poisson_disk(3000)
    print("Displaying input pointcloud ...")
    o3d.visualization.draw_geometries([pcd])

    print('Running Poisson surface reconstruction ...')
    mesh, densities = o3d.geometry.TriangleMesh.create_from_point_cloud_poisson(
        pcd, depth=9)  # depth值越大,效果越好
    print('Displaying reconstructed mesh ...')
    mesh.paint_uniform_color((0, 1, 1))
    o3d.visualization.draw([mesh])

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/532305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试被问麻了....

前几天组了一个软件测试面试的群,没想到效果直接拉满,看来大家对面试这块的需求还是挺迫切的。昨天我就看到群友们发的一些面经,感觉非常有参考价值,于是我就问他还有没有。 结果他给我整理了一份非常硬核的面筋,打开…

2022年美国大学生数学建模竞赛F题人人为我,我为人人解题全过程文档及程序

2022年美国大学生数学建模竞赛 F题 人人为我,我为人人 原题再现: 背景:   世界上大多数国家签署了1967年联合国《外层空间条约》,条约内容包括同意探索和利用外层空间,包括月球和其他天体,不论各国经济或科学发展程…

低成本挖出电商API接口-程序员要注意那些事项-技术分享

在开发电商应用的过程中,获取天猫API接口是非常必要的一步。天猫API提供了丰富的商品数据获取、订单管理、支付管理等功能,但是天猫API一般需要进行开发者认证,而认证需要企业资质和若干费用支出,这对个人开发者和小型业务开发者来…

Postgresql数组与Oracle嵌套表的使用区别

oracle中的多维数组 Oracle中常说的数组就是嵌套表,下面给出两个多维使用实例,引出和PG的差异: 一维赋值(第一行给1列) set serveroutput on; declaretype arr_num is table of number;type arr_arr_num is table o…

任务队列的Java实现

一、需求背景 当前项目中遇到这样一个需求: 将需要审核的文本提交给人工智能模型接口审核,等待模型接口审核完毕以后拿到审核结果返回给前端展示给用户(另:模型处理数据所消耗的时间会随着用户提交数据的复杂度有所变化)。 以上需…

毫米波雷达系列 | 传统CFAR检测(自适应类)

毫米波雷达系列 | 传统CFAR检测(自适应类) VI-CFAR [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dV34CKJt-1684215839850)(毫米波雷达系列 传统CFAR检测(自适应类).assets/image-20230516131206695…

Recognizing Micro-Expression in Video Clip with Adaptive Key-Frame Mining阅读笔记

本文主要贡献 据我们所知,这是第一项旨在将视频剪辑中的信息时间子集的端到端学习与单个网络中的微表情识别相结合的工作。 此外,所提出网络中所有模块的设计都与输入视频剪辑的长度无关。 换句话说,网络容忍各种长度的微表情剪辑。 本文的贡…

水利工程电子(数字)沙盘

水利工程电子(数字)沙盘利用三维地理信息系统、遥感技术、海量数据管理技术、虚拟现实技术、网络通讯技术和高性能计算机技术等现代高新信息技术,采用高精度DEM地形数据、遥感影像、航拍影像和基础地理矢量数据,建立三维空间场景&…

SAAS 与 IAAS 云渲染农场比较

渲染时,最重要的是需要的时间和硬件可用的。此渲染过程需要大量计算能力才能快速创建图像或视频。GPU(图形处理单元)是图形的计算能力,越来越多地用于渲染CAD模型。GPU中有特殊的处理器,可以执行用于快速编辑和显示图像…

TCP的拥塞控制

为了避免发送方无节制地发送数据,从而造成网络拥堵,所以 TCP 有一个拥塞控制。 流量控制:作用于接收方,控制发送者发送速度,从而使接收者来得及接收,防止分组丢失。 拥塞控制:作用于网络&#…

【星戈瑞】Sulfo-Cyanine5 mal红色荧光Cy5-maleimide

Sulfo-Cyanine5 mal是一种具有强荧光信号的染料,主要应用于生物荧光成像领域。它的化学式为C38H43KN4O9S2,分子量为803.00。这种染料具有良好的水溶性,可在水溶液中稳定存在。它的光学特性包括吸收峰位于646 nm和发射峰位于662 nm&#xff0c…

公司新来了个00后软件测试工程师,一副毛头小子的样儿,哪想到是新一代的卷王...

内卷,是现在热度非常高的一个词汇,随着热度不断攀升,隐隐到了“万物皆可卷”的程度。 在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是…

计算机组成简答题整理

作者:爱塔居 多模块交叉存储器是如何加速CPU与存储器之间有效传输? 解:CPU同时访问多个模块,由存储器控制部件控制它们分别使用数据总线进行信息传递。对每一个存储模块来说,从CPU给出访存命令直到读出信息仍然使用了…

同惠 LCR数字电桥测试仪 TH2830

TH283X系列是新一代低成本,高性能紧凑型LCR数字电桥,采用最新工艺和高密度电路设计,浓缩大型LCR测试仪的精华,紧凑,小巧.取消传统机械电源开关,采用软件控制电源开关.0.05%的基本精度和良好的测试稳定性可与高端机型媲美.配备4.3寸LCD显示屏和全新升级的界面系统.美观大方,操作…

EXCEL: 查找符合多个条件,并且不重复的数据的个数的3种方法:公式,数据透视表,数组公式

1 目标问题:想筛选出(在a列月份为5)且不重复的b列数据有几个 有2个条件 查找第1列月份为5月的并且第2列不重复的数据个数 方法1:用加辅助列简单公式的办法 其实逻辑是更清晰的,就是显得步骤繁琐 第1个辅助列1,查找日期中的月份…

vps赚钱的小项目,通过售卖流量赚钱

文章目录 vps赚钱的小项目,通过售卖流量赚钱问题来源为什么能赚钱?赚钱速度呢?注册流程注册复制token 设置vps更新系统组件安装docker通过docker启动项目设置开机自启删掉容器 windows使用方法 查看网页端提现操作总结 vps赚钱的小项目&#…

Arc 打断拆分成多个线段

公司插件的梁齐斜板功能更新,设计师提出需求可以拆分弧梁,并能对齐到板顶。 本文只讨论拆分弧梁,椭圆再后续更新。 首先看以下弧形的创建api API中提供了三种方法 第一种时指定起点与终点,最后选择顶点形成的弧形 第二种是指定面…

MyBatis Plus 插件 动态数据源实现原理与源码讲解 (dynamic-datasource-spring-boot-starter-master)

目录 1. 介绍 2. 基本原理 3. 源码介绍 3.1 使用 AOP 拦截,方法执行前获取到当前方法要用的数据源 3.2 实现自定义 DataSource 接口,实现 DataSource 接口的 getConnect 方法做动态处理 1. 介绍 多数据源即一个项目中同时存在多个不同的数据库连接…

Win11的两个实用技巧系列之关闭分屏模式方法

怎么关闭Win11电脑分屏模式?Win11关闭分屏模式方法 有用户在使用电脑的时候不小心开启了电脑的分屏模式,导致自己无法正常的进行电脑操作了,本文就为大家带来了Win11关闭分屏模式方法,一起看看吧 Win11电脑分屏模式怎么关闭?有用…

oracle杂记

rlwrap…rpm 可以在sqlplus上翻下翻 然后alias sqlplus‘rlwrap sqlplus’ alias rmanrlwrap rman 数据库是由存储部分*.dbf 和运行的process和所使用的内存区域构成 远程安装前确认是否图形化能打开 yum -y install xorg-x11-apps xclock 启动顺序: nomount 启…