首页 > 其他分享 >Open3D 三维重建-Alpha Shapes (α-形状)

Open3D 三维重建-Alpha Shapes (α-形状)

时间:2024-08-08 08:58:17浏览次数:8  
标签:Shapes 形状 mesh pcd alpha 点云 Alpha o3d 三维重建

目录

一、概述

1.1原理

1.2实现步骤

二、代码实现

2.1关键函数

2.1.1函数

2.1.2参数详解

2.2完整代码

三、实现效果

3.1原始点云

3.2处理后点云


Open3D点云算法汇总及实战案例汇总的目录地址:

Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客


一、概述

        Alpha Shapes(α-形状)是一种用于点云边界重建的算法。通过调节α参数,可以生成不同分辨率的边界形状。α-形状是通过将点云中的点连成三角形,并移除长于α的边,从而生成符合数据特征的形状。

1.1原理

α-形状算法的基本原理是

  1. 构建点云的Delaunay三角剖分。
  2. 移除所有边长大于α的边。
  3. 剩下的边和三角形构成了α-形状。

1.2实现步骤

  1. 加载点云数据:读取点云数据文件。
  2. 计算α-形状:使用α-形状算法重建边界。
  3. 可视化和保存结果:可视化生成的形状,并将其保存到文件中。

二、代码实现

2.1关键函数

2.1.1函数

def create_from_point_cloud_alpha_shape(self, alpha, alpha_1, tetra_mesh, pt_map):

2.1.2参数详解

1.alpha (float):
        控制形状细节的参数α。较小的α值会生成较细致的形状,而较大的α值会生成较粗略的形状。α值决定了要移除的边的最大长度。
2.alpha_1 (float):
        备用的α参数,用于生成备选的α-形状。当alpha参数生成的形状不理想时,可以使用alpha_1参数进行调整。
3.tetra_mesh (open3d.geometry.TetraMesh):
        四面体网格对象,表示通过 Delaunay 三角剖分生成的四面体网格。这个参数是用来辅助计算α-形状的中间数据。
4.pt_map (open3d.utility.Vector3iVector):
        点映射,用于记录点云中的点在四面体网格中的映射关系。这个参数是用来辅助计算α-形状的中间数据。

2.2完整代码

import open3d as o3d
import numpy as np


pcd = o3d.io.read_point_cloud("bunny.pcd")
o3d.visualization.draw_geometries([pcd], width=800, height=800,
                                  window_name="原始点云",
                                  mesh_show_back_face=False)  # 可视化点云
alpha = 0.03
print(f"alpha={alpha:.3f}")
mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(pcd, alpha)  # 执行单一alpah阈值
mesh.compute_vertex_normals()  # 计算mesh的法线
o3d.visualization.draw_geometries([mesh], window_name="单一alpah阈值的结果",
                                  width=800, height=800,
                                  mesh_show_back_face=True)

# 从给定点云中计算多个a-shape
tetra_mesh, pt_map = o3d.geometry.TetraMesh.create_from_point_cloud(pcd)  # 从点云创建四面体网格
for alpha in np.logspace(np.log10(0.5), np.log10(0.01), num=4):
    print(f"alpha={alpha:.3f}")
    mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(
        pcd, alpha, tetra_mesh, pt_map)
    mesh.compute_vertex_normals()
    o3d.visualization.draw_geometries([mesh], mesh_show_back_face=True)

三、实现效果

3.1原始点云

3.2处理后点云

alpha=0.030

alpha=0.500
 

alpha=0.136

alpha=0.037

alpha=0.010

标签:Shapes,形状,mesh,pcd,alpha,点云,Alpha,o3d,三维重建
From: https://blog.csdn.net/qq_47947920/article/details/140904192

相关文章

  • WPF locate discreted points via periodically and set transparency via the alpha,
    //xaml<Windowx:Class="WpfApp229.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • C#Alpha混合
    publicstaticint[]ColorAlpha(intfrontA,intfrontR,intfrontG,intfrontB,intbackA,intbackR,intbackG,intbackB){intr=frontR*frontA/255+backR*backA/255*(1-frontA/255);intg=frontG*frontA/255+backG*backA/......
  • 合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等技术应用
     合成孔径雷达干涉测量(InterferometricSyntheticApertureRadar,InSAR)技术作为一种新兴的主动式微波遥感技术,凭借其可以穿过大气层,全天时、全天候获取监测目标的形变信息等特性,已在地表形变监测、DEM生成、滑坡、火山活动、冰川运动、人工建筑物形变信息提取等多种领域展开......
  • 有没有任何命令可以给我一个基于多点几何的 alpha 形状?
    大家好,我拥有具有多点作为几何形状的聚类地理数据。我能够使用geopanda的方法convex_hull创建凸包。但不知何故,我无法找到类似的命令来创建alpha形状。或者给我一个给定簇中所有点的严格边界。出于演示目的,我将在此处提供代码。该代码从OpenStreetMap下......
  • Delphi皮肤控件AlphaControls去NAG提示
    国外知名皮肤控件AlphaControls,一些好看的皮肤会弹出对话框....用查找句柄的方法去发消息关闭对话框,都不得行...,以为是屏敝了消息,自定义消息也失效。后面用修改内存地址指令的方法,就可以有效的去掉NAG提示functionFindPattern(ProcessHandle:THandle;StartAddr,EndAddr:D......
  • alpha-beta六子棋博弈算法
                c语言Alpha-Beta剪枝算法六子棋   介绍Alpha-Beta剪枝算法是一种用于优化博弈树搜索的算法,可以在搜索过程中减少不必要的计算,从而提高搜索效率。该算法常用于博弈游戏,如六子棋。六子棋是一种类似于五子棋的棋类游戏,在一个六边形的棋盘......
  • 三维重建工作的一些调研
    GPT关于3D-GS的回答如果我获得了一个3D高斯溅射的表达,给定任意的相机内参和外参,是不是就能生成一副2D图像Yes,givena3DGaussiansplattingrepresentationandtheintrinsicandextrinsiccameraparameters,youcangeneratea2Dimagefromanydesiredviewpoint.......
  • xalpha-一个可以预测股票,基金走势的Python库
    xalpha-一个可以预测股票,基金走势的Python库xalpha是什么xalpha是一个开源的Python库,主要用于量化投资和数据分析。它集成了大量的金融数据接口,提供了丰富的API用于股票、期货、外汇等金融数据的获取和处理。xalpha的设计简洁明了,易于上手,让初中级程序员也能轻松地进行金......
  • 阿基米德算法优化变分模态分解AOA-VMD数字信号去噪(优化K值 alpha值 )【含Matlab源码 48
    ......
  • PointCloudLib alpha shapes算法提取平面点云边界 C++版本
    测试效果算法简介AlphaShapes算法是一种用于提取平面点云边界特征的方法,以下是对其原理和步骤的详细解释:1.AlphaShapes算法概述目标:从点云数据中提取曲面边界信息,通过计算点云中点的Alpha形状,获得边界特征。Alpha形状:一个可以描述几何体边界的参数。其计算基于一......