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>::Ptr
 model_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>::Ptr
 model_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 parameters
    seg.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 cloud
    extract.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]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins 将shell脚本启动方式修改为bash

platform"arm x86" if [[ "$platform" ~ "arm" ]] thenecho "arm" fi最近在调试Jenkins实现的一些功能&#xff0c;发现在本地可以运行的脚本内容到了Jenkins里面就没办法运行了&#xff0c;不是提示unexpected operator就是提示[[ : …

Uni-ControlNet: All-in-One Control toText-to-Image Diffusion Models——【论文笔记】

本文发表于NeurIPS 2023 项目官网&#xff1a;Uni-ControlNet: All-in-One Control to Text-to-Image Diffusion Models 一、Introduction 近两年来&#xff0c;扩散模型在图像合成任务中表现优异&#xff0c;尤其是文本到图像&#xff08;T2I&#xff09;扩散模型已成为合成高…

WebGIS开发0基础必看教程:地图显示——根据地理范围换算出瓦片行列号

2.影像金字塔简介 我们之前反复提到了影像金字塔这个概念&#xff0c;但是没有对其做一个大概的介绍&#xff0c;这里我将这个概念补充一下。 2.1 为什么要出现影像金字塔这个概念 现在&#xff0c;我假设我们的服务器上有一个1G的影像&#xff0c;需要将其在前端进行显示。…

2024全网最全Excel函数与公式应用

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 引言 Excel是一款广泛应用于商业、教育和个人…

hnust 湖南科技大学 2022 数据挖掘课设 完整代码+报告+图源文件+指导书

hnust 湖南科技大学 2022 数据挖掘课设 完整代码报告图源文件指导书 目录 实验一 Apriori算法设计与应用 - 1 - 一、 背景介绍 - 1 - 二、 实验内容 - 1 - 三、 实验结果与分析 - 2 - 四、 小结与心得体会 - 3 - 实验二 KNN算法设计与应用 - 4 - 一、 背景介绍 - 4 - 二、 实…

头条小程序DIY源码系统 带完整的安装代码包以及搭建部署教程

在过去几年中&#xff0c;小程序市场经历了飞速的发展&#xff0c;各种小程序平台如雨后春笋般涌现。作为其中的佼佼者&#xff0c;头条小程序凭借其强大的用户基础和完善的生态体系&#xff0c;吸引了众多开发者的关注。然而&#xff0c;对于许多初学者和中小企业而言&#xf…

C语言qsort函数介绍

前言 学到了函数指针&#xff0c;那这篇博客我们可以根据函数指针&#xff0c;了解一个函数qsort的应用与模拟实现 欢迎关注个人主页&#xff1a;小张同学zkf 若有疑问 评论区见 目录 1.回调函数 2.qsort函数使用 3.qsort模拟实现 1.回调函数 讲这个东西之前我们来认识一下…

春日特惠,爱基百客限时放送,开启您的学术新篇章!

春回大地&#xff0c;万物复苏&#xff0c; 正是探索未知、启发新思的最佳时节。 在这个充满生机的季节里&#xff0c; 我们推出了春季大促活动&#xff0c; 旨在助力每一位科研工作者在新的一年里实现更多突破。 让我们一起迎接科研人的春天&#xff0c; 开启智慧的花朵…

基本设计模式

单例模式 ES5 function Duck1(name:string){this.namenamethis.instancenull }Duck1.prototype.getNamefunction(){console.log(this.name) }Duck1.getInstancefunction(name:string){if(!this.instance){this.instance new Duck1(name)} } const aDuck1.getInstance(a) const…

Jetpack Compose: Hello Android

Jetpack Compose 是一个现代化的工具包&#xff0c;用于使用声明式方法构建原生 Android UI。在本博文中&#xff0c;我们将深入了解一个基本的 “Hello Android” 示例&#xff0c;以帮助您开始使用 Jetpack Compose。我们将探讨所提供代码片段中使用的函数和注解。 入门 在…

C++ //练习 10.31 修改前一题的程序,使其只打印不重复的元素。你的程序应使用unique_copy(参见10.4.1节,第359页)。

C Primer&#xff08;第5版&#xff09; 练习 10.31 练习 10.31 修改前一题的程序&#xff0c;使其只打印不重复的元素。你的程序应使用unique_copy&#xff08;参见10.4.1节&#xff0c;第359页&#xff09;。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09…

基于ERNIR3.0的文本多分类

还在用BERT做文本分类&#xff1f;分享一套基于预训练模型ERNIR3.0的文本多分类全流程实例【文本分类】_ernir 文本分类-CSDN博客 /usr/bin/python3 -m pip install --upgrade pip python3-c"import platform;print(platform.architecture()[0]);print(platform.machine…

深度学习500问——Chapter02:机器学习基础(3)

文章目录 2.10 主成分分析&#xff08;PCA&#xff09; 2.10.1 主成分分析&#xff08;PCA&#xff09;思想总结 2.10.2 图解PCA核心思想 2.10.3 PCA算法推理 2.10.4 PCA算法流程总结 2.10.5 PCA算法主要优缺点 2.10.6 降维的必要性及目的 2.10.7 KPCA与PCA的区别 2.11 模型评估…

什么是跨站脚本攻击(XSS)

厦门微思网络​​​​​​https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle OCP\CKA\K8S\ CISP\CISSP\PMP\ ​ 跨站脚本攻击&#xff08;Cross-site Scripting&#xff0c;通常称为XSS&#xff09;&#xf…

MCU设计--M3内核详解(2)

内核架构 FETCH取指单元DEC指令译码EXEC执行LSU内存取数ETM_INTF调试接口STATUS状态上报 内核-寄存器 不同指令集支持不同的寄存器分配。R13用于主堆栈指针(MSP)&#xff0c;进程堆栈指针(PSP)R13 连接寄存器存储子程序指针&#xff0c;提高速度R15 程序计数器PC 剩下的一些 …

Gemma模型一些细节讲解

Gemma模型报告中提到的几个点进行代码细节解读一下&#xff1a; &#xff08;1&#xff09;Embedding层共享参数 &#xff08;2&#xff09;输入输出层均进行RMSNorm Embedding层共享参数 共享embedding的权重给最后的llm_head层。是词嵌入层的共享&#xff0c;与旋转位置编码…

羊大师揭秘羊奶探秘,不止于营养的美味饮品

羊大师揭秘羊奶探秘&#xff0c;不止于营养的美味饮品 羊奶作为一种古老而珍贵的乳制品&#xff0c;不仅具有丰富的营养价值&#xff0c;还拥有独特的口感和风味&#xff0c;使其成为一种不止于营养的美味饮品。以下是对羊奶的深入探秘&#xff1a; 独特的风味&#xff1a;羊…

【JavaEE进阶】 Linux搭建Java部署环境

文章目录 &#x1f343;前言&#x1f334;Linux权限&#x1f6a9;用户操作&#x1f6a9;三种角色&#x1f6a9;文件类型和访问权限&#x1f388;文件类型&#x1f388;基本权限 &#x1f6a9;修改文件权限 &#x1f38d;搭建Java部署环境&#x1f6a9;apt&#x1f388;apt常用命…

【C++基础】STL容器面试题分享||上篇

&#x1f308;欢迎来到C基础专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C STL 1.请说说 STL 的基本组成部分2.详细的说&…

08 OpenCV 腐蚀和膨胀

文章目录 作用算子代码 作用 膨胀与腐蚀是数学形态学在图像处理中最基础的操作。其卷积操作非常简单&#xff0c;对于图像的每个像素&#xff0c;取其一定的邻域&#xff0c;计算最大值/最小值作为新图像对应像素位置的像素值。其中,取最大值就是膨胀&#xff0c;取最小值就是腐…