当前位置: 首页 > news >正文

【点云surface】无序点云快速三角化

1 介绍

GreedyProjectionTriangulation 是一种基于局部二维投影的三维点贪婪三角剖分算法的实现。它假定局部表面光滑,不同点密度区域之间的过渡相对平滑。

GreedyProjectionTriangulation算法的基本思想是通过逐步投影点云数据到一个三角化网格上来进行重建。它首先根据给定的搜索半径找到每个点的最近邻点,然后根据这些最近邻点构建局部三角化表面。接下来,通过迭代地添加新的点并更新三角化表面,最终生成完整的三角化网格模型。

GreedyProjectionTriangulation类提供了一系列参数和方法,用于控制和定制三角化过程。一些重要的参数包括搜索半径、最小和最大角度、法向量平滑度等。此外,它还提供了一些方法来设置输入点云数据、执行重建过程并获取生成的三角化网格。

  1. setSearchRadius(double radius):设置搜索半径。该参数定义了在找到最近邻点时所使用的搜索半径。较大的搜索半径可以包含更多的邻近点,但可能导致模型失真。

  2. setMu(double mu):设置最大边长因子。该参数定义了最大边长与搜索半径之间的比例关系。较小的mu值会导致生成更多的小三角形,而较大的mu值会生成较大的三角形。

  3. setMaximumNearestNeighbors(int num):设置最大最近邻点数目。该参数定义了在搜索半径内要考虑的最大最近邻点数目。增大该值可以提高算法的稳定性,但也会增加计算时间。

  4. setMaximumSurfaceAngle(double angle):设置最大表面角度。该参数定义了三角化表面的最大允许角度。较小的角度值会生成更平滑的表面,而较大的角度值会生成更粗糙的表面。

  5. setMinimumAngle(double angle):设置最小角度。该参数定义了三角形的最小允许角度。较小的角度值可以生成更细致的细节,但也可能导致不稳定的三角形。

  6. setMaximumAngle(double angle):设置最大角度。该参数定义了三角形的最大允许角度。较大的角度值可以生成更平坦的表面,但也可能导致模型的失真。

  7. setNormalConsistency(bool consistent):设置法向量一致性。该参数定义了是否要在计算法向量时考虑法向量的一致性。启用法向量一致性可以提高三角化的质量。

2 处理过程可视化

算法参数仔细调整才有这样的好结果

3 代码

#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/search/kdtree.h>
#include <pcl/features/normal_3d.h>
#include <pcl/surface/gp3.h>#include <pcl/visualization/pcl_visualizer.h>int main()
{pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);pcl::PCLPointCloud2 cloud_blob;pcl::io::loadPCDFile("/home/lrj/work/pointCloudData/bun0.pcd", cloud_blob);pcl::fromPCLPointCloud2(cloud_blob, *cloud);// Normal estimation*pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne;pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);tree->setInputCloud(cloud);ne.setInputCloud(cloud);ne.setSearchMethod(tree);ne.setKSearch(20);pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);ne.compute(*normals);//* normals  contain the point normals + surface curvaturespcl::PointCloud<pcl::PointNormal>::Ptr cloud_with_normals(new pcl::PointCloud<pcl::PointNormal>);pcl::concatenateFields(*cloud, *normals, *cloud_with_normals);pcl::search::KdTree<pcl::PointNormal>::Ptr tree2(new pcl::search::KdTree<pcl::PointNormal>);tree2->setInputCloud(cloud_with_normals);pcl::GreedyProjectionTriangulation<pcl::PointNormal> gp3;pcl::PolygonMesh triangles;gp3.setSearchRadius(0.1);gp3.setMu(2.5);gp3.setMaximumNearestNeighbors(100);gp3.setMaximumSurfaceAngle(M_PI*1.5);gp3.setMinimumAngle(M_PI/180);gp3.setMaximumAngle(2*M_PI/3);gp3.setNormalConsistency(false);gp3.setInputCloud(cloud_with_normals);gp3.setSearchMethod(tree2);gp3.reconstruct(triangles);std::vector<int> parts = gp3.getPartIDs();std::vector<int> states = gp3.getPointStates();pcl::visualization::PCLVisualizer vis("cloud visualization");vis.addCoordinateSystem(0.1);vis.addPolygonMesh(triangles);while(!vis.wasStopped()){vis.spinOnce();}}

 

相关文章:

【点云surface】无序点云快速三角化

1 介绍 GreedyProjectionTriangulation 是一种基于局部二维投影的三维点贪婪三角剖分算法的实现。它假定局部表面光滑&#xff0c;不同点密度区域之间的过渡相对平滑。 GreedyProjectionTriangulation算法的基本思想是通过逐步投影点云数据到一个三角化网格上来进行重建。它首…...

el-select多选下拉框实现全选功能

<el-selectv-model"query.web_ids"multiplecollapse-tagscollapse-tags-tooltip:max-collapse-tags"2"filterableplaceholder"网站"><li class"checkAllBox" style"padding: 0 32px 0 20px; border-bottom: 1px solid #…...

Elasticsearch 聚合查询(Aggregation)详解

Elasticsearch中的聚合查询&#xff0c;类似SQL的SUM/AVG/COUNT/GROUP BY分组查询&#xff0c;主要用于统计分析场景。 实例&#xff1a; import org.apache.http.HttpHost; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.…...

数据库其它调优策略

文章目录 1. 优化MySQL服务器2. 优化数据库结构2.1 差分表&#xff1a;冷热数据分离 3. 大表优化3.1 读/写分离3.2 垂直拆分3.3 水平拆分 1. 优化MySQL服务器 电商平台&#xff0c;双十一&#xff0c;CPU使用率达到99%&#xff0c;系统的计算资源已经耗尽&#xff0c;再也无法…...

【AI认证笔记】NO.2人工智能的发展

目录 一、人工智能的发展里程碑 二、当前人工智能的发展特点 1.人工智能进入高速发展阶段 2.人工智能元年 三、人工智能高速发展的三大引擎 1.算法突破 2.算力飞跃 3.数据井喷 四、AI的机遇 五、AI人才的缺口 六、行业AI 人工智能算法&#xff0c;万物互联&#xff…...

Python与设计模式--观察者模式

23种计模式之 前言 &#xff08;5&#xff09;单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、&#xff08;11&#xff09;策略模式、责任链模式、命令模式、中介者模…...

Elasticsearch底层原理分析——新建、索引文档

es版本 8.1.0 重要概念回顾 Elasticsearch Node的角色 与下文流程相关的角色介绍&#xff1a; Node Roles配置主要功能说明masternode.roles: [ master ]有资格参与选举成为master节点&#xff0c;从而进行集群范围的管理工作&#xff0c;如创建或删除索引、跟踪哪些节点是…...

ts实现合并数组对象中key相同的数据

背景 在平常的业务中&#xff0c;后端同学会返回以下类似的结构数据 // 后端返回的数据结构 [{ id: 1, product_id: 1, pid_name: "Asia", name: "HKG01" },{ id: 2, product_id: 1, pid_name: "Asia", name: "SH01" },{ id: 3, pro…...

C语言--根据成绩判断等级

一.题目描述 如果学生的成绩小于60分&#xff0c;那么输出不及格 如果学生的成绩大于60分小于85分&#xff0c;那么输出良好 如果学生的成绩大于85分&#xff0c;那么输出优秀 二.代码实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> //根据成绩打印等级 //scor…...

Rust多线程任务,发现有些线程一直获取不到锁【已解决】

问题描述 项目中用到rust&#xff0c;其中在多线程中用到了同一个对象的锁&#xff0c;然而发现其中一个线程一直拿不到这个锁。 解决过程 我先是在线程A中加入了sleep方法&#xff0c;这样做的效果就是&#xff0c;比最初好一些&#xff0c;但是拿到锁还是要较长时间&#xf…...

【区块链】产品经理的NFT初探

常见的FT如比特币&#xff08;BTC&#xff09;&#xff0c;以太币&#xff08;ETH&#xff09;等&#xff0c;两个代币之间是完全可替换的。而NFT具有唯一性&#xff0c;不可以互相替换。本文作者对NET的发展现状、相关协议、应用场景等方面进行了分析&#xff0c;一起来看一下…...

香港服务器减少延迟的几种方法

我们在租用香港服务器时&#xff0c;总觉得网站程序反应太慢。选择了香港服务器的开发商和企业对香港服务器目前的访问速度不满意 怎么办&#xff1f;第一点是换服务器。更换配置更大、带宽更高的服务器&#xff0c;可以更好的解决网站访问速度。如何减少香港服务器的延时 速度…...

PowerShell命令小记

1. 使用命令删除指定文件或文件夹 在 PowerShell 中&#xff0c;你可以使用 Remove-Item 命令递归删除文件夹下的指定文件。以下是一条命令的示例&#xff0c;该命令删除指定文件夹及其子文件夹中的所有 .txt 文件&#xff1a; Remove-Item -Path "D:\test" -Recur…...

C语言小练

目录 打印斐波那契数列指定位置的值 给定两个数&#xff0c;求这两个数的最大公约数 三个数从大到小输出 模拟用户登陆情况&#xff0c;且只能输如三次 采用二分法查找数组中的指定元素 打印输出九九乘法表 数一下1-100中所有整数出现多少个数字9 打印1-200之间的素数&…...

Webhook端口中的自签名身份验证

概述 有时&#xff0c;可能需要通过 Webhook 端口从交易伙伴处接收数据&#xff0c;但该交易伙伴可能需要更多的安全性&#xff0c;而不仅仅是用于验证入站 Webhook 请求的基本身份验证用户名/密码 – 或者您可能只想在入站 Webhook 消息上添加额外的安全层。 使用 Webhook 端…...

CSS预处理器(如Sass或Less):变量、嵌套规则和混合器等高级功能

在Vue项目中&#xff0c;可以使用CSS预处理器&#xff08;如Sass或Less&#xff09;来编写样式。 这些预处理器提供了一些高级功能&#xff0c;如变量、嵌套规则和混合器等。 1. 变量 在Sass中&#xff0c;我们可以使用$符号定义变量。这些变量方便我们在多个地方重复使用&a…...

【Linux】Linux第一个小程序 --- 进度条

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和Linux还有算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 …...

每日一练:约瑟夫生者死者小游戏

1. 问题描述 约瑟夫问题&#xff08;Josephus problem&#xff09;是一个经典的数学和计算机科学问题&#xff0c;源于犹太历史学家弗拉维奥约瑟夫斯&#xff08;Flavius Josephus&#xff09;的著作《犹太战记》。问题的描述如下&#xff1a;   在这个问题中&#xff0c;有n…...

双指针算法(题目与答案讲解)

文章目录 题目移动零复写零两数之和N数之和(>2个数) 答案讲解移动零复写零两数之和N数之和 题目 力扣 移动零 1、移动零:题目链接 复写零 2、复写零:题目链接 两数之和 3、两数之和题目链接 N数之和(>2个数) 4、N数之和(三个数、四个数) 三个数:题目链接 四个数题目链接…...

python服装电商系统vue购物商城django-pycharm毕业设计项目推荐

系统面向的使用群体为商家和消费者&#xff0c;商家和消费者所承担的功能各不相同&#xff0c;所对象的权限也各不相同。对于消费者和商家设计的功能如下&#xff1a; 对于消费者设计了五大功能模块&#xff1a; &#xff08;1&#xff09; 商品信息&#xff1a;用户可在商品…...

在 ADT 中高效查看 CDS 依赖细节:吃透 Element Information Popup 与 ABAP Element Info View

在日常的 ABAP CDS 开发里,很多人把精力都放在 DDL 语法、注解、关联、扩展和激活错误上,却忽略了一个非常实用的观察窗口:Element Information Popup 与 ABAP Element Info View。这两个功能看上去像是一个简单的 F2 帮助窗口,真正用熟之后,你会发现它们远不只是看一眼对…...

Laravel WebSockets终极指南:本地与Redis频道管理器深度对比

Laravel WebSockets终极指南&#xff1a;本地与Redis频道管理器深度对比 【免费下载链接】laravel-websockets Websockets for Laravel. Done right. 项目地址: https://gitcode.com/gh_mirrors/la/laravel-websockets Laravel WebSockets是一款为Laravel框架打造的高效…...

30秒React实用工具函数大全:10个必备开发技巧

30秒React实用工具函数大全&#xff1a;10个必备开发技巧 【免费下载链接】30-seconds-of-react Short React code snippets for all your development needs 项目地址: https://gitcode.com/gh_mirrors/30/30-seconds-of-react 30-seconds-of-react是一个专注于提供简短…...

5个关键技术点解析:AirPodsDesktop如何实现Windows/Linux平台的完美AirPods体验

5个关键技术点解析&#xff1a;AirPodsDesktop如何实现Windows/Linux平台的完美AirPods体验 【免费下载链接】AirPodsDesktop ☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP) 项目地址: https://gitcode.com/gh_mirrors/ai/AirPods…...

python批量压缩解压文件

import os import zipfile from pathlib import Path# # 1. 批量解压所有 zip 文件 # def batch_unzip(zip_folder, save_folder):"""批量解压文件夹里所有 .zip 文件zip_folder: 存放压缩包的文件夹save_folder: 解压到哪里"""# 创建输出文件…...

Janus-Pro-7B步骤详解:如何上传本地图片+输入自然语言提问

Janus-Pro-7B步骤详解&#xff1a;如何上传本地图片输入自然语言提问 1. 认识Janus-Pro-7B&#xff1a;新一代多模态AI模型 Janus-Pro-7B是一个创新的多模态AI模型&#xff0c;它能够同时理解和生成文本与图像内容。这个模型的最大特点是采用了一种独特的自回归框架&#xff…...

网络安全信息搜集全流程

概念 方法论 工具链 合法授权实践 一、信息搜集的概念与重要性 信息搜集&#xff08;Information Gathering&#xff09;是网络安全渗透测试、漏洞挖掘&#xff08;SRC&#xff09;及红队评估中的奠基性阶段。其本质是通过主动与被动手法&#xff0c;最大化获取目标系统的…...

SEO_中小企业如何低成本做好SEO?完整方案介绍

前言&#xff1a;SEO对中小企业的重要性 在数字化时代&#xff0c;网站的流量和用户参与度直接影响到企业的销售和品牌知名度。特别是对于中小企业来说&#xff0c;如何通过低成本的方式提升网站的SEO表现&#xff0c;是每一个创业者和市场营销人员都关心的问题。SEO&#xff…...

MAA明日方舟自动化助手:终极一站式长草解决方案

MAA明日方舟自动化助手&#xff1a;终极一站式长草解决方案 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode.c…...

LangGraph应用:设计MusicGen的自动化工作流

LangGraph应用&#xff1a;设计MusicGen的自动化工作流 1. 引言 想象一下这样的场景&#xff1a;你有一个绝佳的音乐创意&#xff0c;想要创作一首完整的歌曲&#xff0c;但面对复杂的音乐制作流程却无从下手。传统的音乐制作需要经历作词、编曲、混音、母带处理等多个环节&a…...