PCL中的点云分割模型的部分常用参数含义

PCL中的SacModel类别常用参数含义

  • 1、SACMODEL_PLANE
  • 2、SACMODEL_LINE(三维直线)
  • 3、SACMODEL_CIRCLE2D(二维圆)
  • 4、SACMODEL_CIRCLE3D(三维圆)
  • 5、SACMODEL_SPHERE(球)
  • 6、SACMODEL_CYLINDER(圆柱)

1、SACMODEL_PLANE

该参数指的是点云平面拟合,拟合后得到的平面方程为:AX+BY+CZ+D=0。执行点云分割算法pcl::SACSegmentation后,输出的归一化向量是[A B C D]。
例如:

pcl::ModelCoefficients::Ptr coefficients;
pcl::SACSegmentation<pcl::PointXYZ> seg;		//创建分割对象
seg.setOptimizeCoefficients(true);				//设置对估计模型参数进行优化处理
seg.setModelType(pcl::SACMODEL_PLANE);			//设置分割模型类别
seg.setMethodType(pcl::SAC_RANSAC);				//设置用哪个随机参数估计方法
seg.setMaxIterations(1000);						//设置最大迭代次数
seg.setDistanceThreshold(1.0);                  //判断是否为模型内点的距离阀值  
seg.setInputCloud(cloudsource);
seg.segment(*inliers, *coefficients);

2、SACMODEL_LINE(三维直线)

点云三维直线拟合,获得的是三维直线上的一点以及其单位方向向量:
[point_on_line.x point_on_line.y point_on_line.z line_direction.x line_direction.y line_direction.z]
直线上一点:[point_on_line.x point_on_line.y point_on_line.z]
单位方向向量:[line_direction.x line_direction.y line_direction.z]

3、SACMODEL_CIRCLE2D(二维圆)

获得的是二维圆的中心以及半径: [center.x center.y radius]
center.x : the X coordinate of the circle’s center
center.y : the Y coordinate of the circle’s center
radius : the circle’s radius

#include <pcl/sample_consensus/sac_model_circle.h>
pcl::SampleConsensusModelCircle2D<pcl::PointXYZ>::Ptrmodel_circle2D(new pcl::SampleConsensusModelCircle2D<pcl::PointXYZ>(cloud));
pcl::RandomSampleConsensus<pcl::PointXYZ> ransac(model_circle2D);
ransac.setDistanceThreshold(.01);
ransac.computeModel();
ransac.getInliers(inliers);
Eigen::VectorXf modelParas;
ransac.getModelCoefficients(modelParas);
//圆心坐标及半径
std::cout << modelParas<< "\n\n";

4、SACMODEL_CIRCLE3D(三维圆)

#include <pcl/sample_consensus/sac_model_circle3d.h>
pcl::SampleConsensusModelCircle3D<pcl::PointXYZ>::Ptrmodel_circle3D(new pcl::SampleConsensusModelCircle3D<pcl::PointXYZ>(cloud));
pcl::RandomSampleConsensus<pcl::PointXYZ> ransac(model_circle3D);
ransac.setDistanceThreshold(.01);
ransac.computeModel();
ransac.getInliers(inliers);  
Eigen::VectorXf modelParas;
ransac.getModelCoefficients(modelParas);
//所计算出的圆心坐标及半径如下,前三个数值为圆心坐标(x, y, z),第四个数值为计算出的圆形点云的半径,最后三个为圆形点云所在平面的法向量:
std::cout << modelParas<< "\n\n";  

5、SACMODEL_SPHERE(球)

获得球心以及半径: [center.x center.y center.z radius]
center.x : the X coordinate of the sphere’s center
center.y : the Y coordinate of the sphere’s center
center.z : the Z coordinate of the sphere’s center
radius : the sphere’s radius

6、SACMODEL_CYLINDER(圆柱)

以下图片来源网上截图
在这里插入图片描述
圆柱方程的核心思想是:圆柱上的一点到圆柱轴线(单位方向向量)的距离为r。以下是圆柱拟合的代码示例:

// Create the segmentation object for cylinder segmentation and set all the parametersseg.setOptimizeCoefficients(true);//设置分割模型类别seg.setModelType(pcl::SACMODEL_CYLINDER);//设置使用那个随机参数估计方法为随机样本共识seg.setMethodType(pcl::SAC_RANSAC);//设置表面法线权重系数seg.setNormalDistanceWeight(0.1);//设置最大迭代数seg.setMaxIterations(10000);//设置是否为模型内点的距离阈值seg.setDistanceThreshold(0.005);//设置估计出的圆柱模型的半径的范围seg.setRadiusLimits(0.01, 0.1);seg.setInputCloud(cloud_filtered);seg.setInputNormals(cloud_normals);//最终获取内点以及模型系数seg.segment(*inliers_cylinder, *coefficients_cylinder);//Extract the cylinder inliers from the input cloudextract.setInputCloud(cloud_filtered);extract.setIndices(inliers_cylinder);extract.setNegative(false);extract.filter(*cloud_cylinder);std::cout << "PointCloud representing the planar component: " << cloud_cylinder-> size() << "data points." << std::endl;writer.write("cylinder_piece.pcd", *cloud_cylinder, false);

获得的参数为圆柱轴线上一点,以及圆柱的轴线单位方向向量,以及圆柱的半径: [point_on_axis.x point_on_axis.y point_on_axis.z]
[axis_direction.x axis_direction.y axis_direction.z]
[radius]

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

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

相关文章

《数字图像处理(MATLAB版)》相关算法代码及其分析(2)

目录 1 将8连通边界转换为4连通边界 1.1 移除对角线转折 1.2 插入额外像素 2 将边界信息转换为二进制图像 2.1 函数定义 2.2 参数处理和验证 2.3 默认大小参数设置 2.4 根据参数调整边界位置 2.5 生成二进制图像 2.6 错误处理 3 对二值图像边界的跟踪和提取 3.1 函…

Mybatis学习记录

Mybatis学习记录 1.快速开始示例1.1 什么是MyMyBatis&#xff1f;1.2 代码示例 2.基本使用2.1 #{}和${} 2.2 参数传入2.2.1 概念说明2.2.2 单个简单类型2.2.3 实体类型2.2.4 零散简单数据类型2.2.5 Map类型 2.3 返回值2.3.1 单个简单类型2.3.2 实体类型2.3.3 Map类型2.3.4 List…

java 版本企业招标投标管理系统源码+功能描述+tbms+及时准确+全程电子化

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

基于MVO优化的Bi-LSTM多输入回归预测(Matlab)多元宇宙算法优化长短期神经网络回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&am…

探索Java开发面试笔记:以听为目的,助力编程技术提升与面试准备

文章目录 一、制作背景介绍二、 Java开发面试笔记&#xff1a;为你的编程之路加速2.1 公众号主题和目标读者群体2.2 为什么面试笔记对于提高编程视野和技术至关重要2.3 親測效率 三、形式案例3.1 文章形式3.2 手机案例3.3 电脑案例 一、制作背景介绍 做公众号的背景&#xff1a…

【LeetCode:98. 验证二叉搜索树 + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

就业班 2401--3.1 Linux Day9--文件查找和压缩

一、文件查找与打包压缩 grep: 文件内容过滤 [rootqfedu.com ~]# grep root /etc/passwd #从/etc/passwd文件中过滤root字段 grep ^root root$ root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin 查找命令 [rootqfedu.com ~]# which ls ali…

【基于HTML5的网页设计及应用】——float实现页面布局

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

Java基础-运算符,表达式和语句

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 一、Java 运算符 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 条件运算符&#xff…

游戏寻路之A*算法(GUI演示)

一、A*算法介绍 A*算法是一种路径搜索算法,用于在图形网络中找到最短路径。它结合了Dijkstra算法和启发式搜索的思想,通过综合利用已知的最短路径和估计的最短路径来优化搜索过程。在游戏自动寻路得到广泛应用。 二、A*算法的基本思想 在图形网络中选择一个起点和终点。维护…

常用的17个运维监控系统(必备知识)

1. Zabbix Zabbix 作为企业级的网络监控工具&#xff0c;通过从服务器&#xff0c;虚拟机和网络设备收集的数据提供实时监控&#xff0c;自动发现&#xff0c;映射和可扩展等功能。 Zabbix的企业级监控软件为用户提供内置的Java应用服务器监控&#xff0c;硬件监控&#xff0c…

Python web框架fastapi中间件的使用,CORS跨域详解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;Fastapi 景天的主页&#xff1a;景天科技苑 文章目录 fastapi中间件与CORS1、中间件1.创建中间件方法2.中间件里面添加响应头…

跨地域传文件时 面临的安全、效率等问题要如何解决?

近年来&#xff0c;企业在异国、异地设立分支机构的越来越多&#xff0c;在日常经营中&#xff0c;企业总部和分支机构间存在平行、垂直及互相交叉的管理模式和业务往来需求&#xff0c;因此&#xff0c;大型企业存在必然的跨地域传文件场景&#xff0c;比如跨地理域文件交换、…

揭秘麦肯锡的方法:产品经理解决问题指南

您是否想知道世界上最成功的产品经理如何始终如一地提供不仅满足而且超出预期的解决方案&#xff1f;秘密可能就在于世界上最负盛名的咨询公司之一麦肯锡公司所磨练的方法论。本文深入探讨了麦肯锡的问题解决流程&#xff0c;该流程专为希望提升水平的产品经理量身定制。 01. 麦…

2024最新AI大模型产品汇总

文章目录 1. 写在前面2. 效率工具3. 聊天机器人4. 应用开发工具5. Prompt工具与社区6. 通用基础大模型7. 训练框架8. 开源数据集9. 推理与部署平台及工具 【作者主页】&#xff1a;吴秋霖 【作者介绍】&#xff1a;Python领域优质创作者、阿里云博客专家、华为云享专家。长期致…

Flutter整体框架

Flutter整体框架由三部分组成&#xff1a;Framework、Engine和Embedder。 Framework Framework提供了一个用 Dart 语言编写的现代、反应式框架&#xff0c;由许多抽象的层级组成。它包括一套丰富的布局、动画、绘制、手势UI组件及配套代码&#xff0c;以及更基础的异步、文件、…

李沐动手学习深度学习——4.5练习

1. 在本节的估计问题中使用λ的值进行实验。绘制训练和测试精度关于λ的函数。观察到了什么&#xff1f; 修改代码运行如图所示&#xff0c;可以发现对于lamda值的变化而言&#xff0c;对于训练loss和测试loss的影响不大。但是如果λ 太大后&#xff0c;train和test的loss会变得…

Databend 开源周报第 134 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 支持多语句事务…

基于dashscope在线调用千问大模型

前言 dashscope是阿里云大模型服务平台——灵积提供的在线API组件。基于它&#xff0c;无需本地加载大模型&#xff0c;通过在线方式访问云端大模型来完成对话。 申请API key 老规矩&#xff1a;要想访问各家云端大模型&#xff0c;需要先申请API key。 对于阿里云&#x…

STM32(14)USART

USART:一种片上外设&#xff0c;用来实现串口通信&#xff0c;就是stm32内部的串口 USART简介 串并转换电路 串行通信和并行通信 串行&#xff1a;一根数据线&#xff0c;逐个比特位发送 为什么要串并转换 移位寄存器 USART的基本模型 通过查询SR&#xff08;状态寄存器&…