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

九洲建设集团网站wordpress 删除作者

九洲建设集团网站,wordpress 删除作者,做网站设计要多少钱,在什么网站做推广目录 一、概述1.1 原理1.2 实现步骤1.3应用场景 二、关键函数2.1 获取初始点对2.2 基于距离的对应关系筛选函数2.3 可视化 三、完整代码四、结果展示 即日起#xff0c;付费专栏所有内容将以永久免费形式陆续进行发表#xff01;#xff01;#xff01; 一、概述 在3D点云的… 目录 一、概述1.1 原理1.2 实现步骤1.3应用场景 二、关键函数2.1 获取初始点对2.2 基于距离的对应关系筛选函数2.3 可视化 三、完整代码四、结果展示 即日起付费专栏所有内容将以永久免费形式陆续进行发表 一、概述 在3D点云的配准过程中我们通常会找到源点云和目标点云之间的对应点对。然而这些对应点对可能包含一些错误的匹配关系。为了提升配准的精度必须通过某些策略来剔除这些错误的对应点。本文将介绍一种基于距离阈值的错误对应关系剔除方法实现对应点对的距离进行筛选并移除那些不符合阈值要求的点对。 1.1 原理 在点云配准中通常通过某种策略找到两个点云之间的初始对应点对。这些对应点对可能包含一些错误的匹配比如距离过远的点对。通过设定一个合理的距离阈值剔除那些不符合要求的点对可以大大提高配准的精度。这里我们使用PCL中的 CorrespondenceRejectorDistance类对初始的对应关系进行筛选保留距离在指定阈值内的点对。 1.2 实现步骤 加载源点云和目标点云。 使用PCL的CorrespondenceEstimation类获取初始的点对匹配关系。 使用CorrespondenceRejectorDistance类基于距离阈值筛选对应点对。 可视化筛选前后的点对匹配关系展示最终的结果 1.3应用场景 多视角点云的精确配准。机器人SLAM中的环境建模。自动驾驶中点云数据的对齐与去噪。 二、关键函数 2.1 获取初始点对 该函数使用CorrespondenceEstimation类来计算源点云与目标点云之间的初始匹配点对。 // 获取初始对应点对 void getCorrespondencesByDistance(const pcl::PointCloudpcl::PointXYZ::Ptr source,const pcl::PointCloudpcl::PointXYZ::Ptr target,pcl::CorrespondencesPtr correspondences) {// 创建对应估计对象pcl::registration::CorrespondenceEstimationpcl::PointXYZ, pcl::PointXYZ corr_est;corr_est.setInputSource(source); // 设置输入源点云corr_est.setInputTarget(target); // 设置输入目标点云// 获取源点云和目标点云的初始对应点对corr_est.determineCorrespondences(*correspondences); }2.2 基于距离的对应关系筛选函数 该函数使用CorrespondenceRejectorDistance类来剔除距离过大的对应点对。 // 基于距离的对应关系筛选 void rejCorrespondencesByDistance(const pcl::CorrespondencesPtr correspondences,pcl::CorrespondencesPtr correspondences_result_rej_dist,double max_distance) {// 使用CorrespondenceRejectorDistance类剔除距离过大的点对pcl::registration::CorrespondenceRejectorDistance corr_rej_dist;corr_rej_dist.setInputCorrespondences(correspondences); // 设置输入的对应关系corr_rej_dist.setMaximumDistance(max_distance); // 设置最大距离阈值corr_rej_dist.getCorrespondences(*correspondences_result_rej_dist); // 获取剔除后的对应关系 }2.3 可视化 // 可视化点云及对应点对 void visualizeRegistrationResult(const pcl::PointCloudpcl::PointXYZ::Ptr source,const pcl::PointCloudpcl::PointXYZ::Ptr target,const pcl::CorrespondencesPtr correspondences_result_rej_dist) {// 创建PCLVisualizer对象boost::shared_ptrpcl::visualization::PCLVisualizer viewer(new pcl::visualization::PCLVisualizer(配准结果));viewer-setBackgroundColor(0, 0, 0); // 设置背景颜色为黑色// 源点云着色为绿色pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ source_color(source, 0, 255, 0);viewer-addPointCloudpcl::PointXYZ(source, source_color, source cloud);viewer-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, source cloud);// 目标点云着色为红色pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ target_color(target, 255, 0, 0);viewer-addPointCloudpcl::PointXYZ(target, target_color, target cloud);viewer-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, target cloud);// 添加对应点对的可视化viewer-addCorrespondencespcl::PointXYZ(source, target, *correspondences_result_rej_dist, correspondence);// 开启渲染循环直到窗口关闭while (!viewer-wasStopped()){viewer-spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(100000));} } 三、完整代码 #include iostream #include pcl/io/pcd_io.h #include pcl/point_types.h #include boost/thread/thread.hpp #include pcl/visualization/pcl_visualizer.h #include pcl/registration/correspondence_estimation.h // 获取对应关系的基类 #include pcl/registration/correspondence_rejection_distance.h // 使用距离剔除的类using namespace std;// 获取初始对应点对 void getCorrespondences(const pcl::PointCloudpcl::PointXYZ::Ptr source,const pcl::PointCloudpcl::PointXYZ::Ptr target,pcl::CorrespondencesPtr correspondences) {pcl::registration::CorrespondenceEstimationpcl::PointXYZ, pcl::PointXYZ corr_est;corr_est.setInputSource(source); // 设置源点云corr_est.setInputTarget(target); // 设置目标点云corr_est.determineCorrespondences(*correspondences); // 获取初始匹配点对 }// 基于距离的对应关系筛选 void rejCorrespondencesByDistance(const pcl::CorrespondencesPtr correspondences,pcl::CorrespondencesPtr correspondences_result_rej_dist,double max_distance) {// 使用CorrespondenceRejectorDistance类剔除距离过大的点对pcl::registration::CorrespondenceRejectorDistance corr_rej_dist;corr_rej_dist.setInputCorrespondences(correspondences); // 设置输入的对应关系corr_rej_dist.setMaximumDistance(max_distance); // 设置最大距离阈值corr_rej_dist.getCorrespondences(*correspondences_result_rej_dist); // 获取剔除后的对应关系 }// 可视化点云及其对应关系 void visualizeCorrespondencesResult(const pcl::PointCloudpcl::PointXYZ::Ptr source,const pcl::PointCloudpcl::PointXYZ::Ptr target,const pcl::CorrespondencesPtr correspondences) {boost::shared_ptrpcl::visualization::PCLVisualizer viewer(new pcl::visualization::PCLVisualizer(u8基于距离的对应关系));viewer-setBackgroundColor(0, 0, 0); // 设置背景颜色为黑色// 为目标点云设置红色pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ target_color(target, 255, 0, 0);viewer-addPointCloudpcl::PointXYZ(target, target_color, target cloud);viewer-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, target cloud);// 为源点云设置绿色pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ source_color(source, 0, 255, 0);viewer-addPointCloudpcl::PointXYZ(source, source_color, source cloud);viewer-setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, source cloud);// 可视化对应关系viewer-addCorrespondencespcl::PointXYZ(source, target, *correspondences, correspondence);// 开启渲染循环直到窗口关闭while (!viewer-wasStopped()){viewer-spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(100000));} }int main(int argc, char** argv) {// ---------------------------------加载源点云----------------------------------pcl::PointCloudpcl::PointXYZ::Ptr source(new pcl::PointCloudpcl::PointXYZ);if (pcl::io::loadPCDFilepcl::PointXYZ(bun000.pcd, *source) -1){PCL_ERROR(读取源标点云失败 \n);return (-1);}cout 从源点云中读取 source-size() 个点 endl;// ---------------------------------加载目标云---------------------------------pcl::PointCloudpcl::PointXYZ::Ptr target(new pcl::PointCloudpcl::PointXYZ);if (pcl::io::loadPCDFilepcl::PointXYZ(bun045.pcd, *target) -1){PCL_ERROR(读取目标点云失败 \n);return (-1);}cout 从目标点云中读取 target-size() 个点 endl;// 2. 获取初始对应点对pcl::CorrespondencesPtr correspondences(new pcl::Correspondences);getCorrespondences(source, target, correspondences);// 3. 基于距离剔除错误对应点对并获取距离pcl::CorrespondencesPtr correspondences_result_rej(new pcl::Correspondences);rejCorrespondencesByDistance(correspondences, correspondences_result_rej, 0.2);cout 初始对应点对数量: correspondences-size() endl;cout 基于中值距离剔除后剩余: correspondences_result_rej-size() endl;// 4. 可视化结果visualizeCorrespondencesResult(source, target, correspondences_result_rej);return 0; } 四、结果展示 从源点云中读取 40256 个点 从目标点云中读取 40097 个点 初始对应点对数量: 40256 基于距离阈值剔除后剩余: 40256
http://www.hkea.cn/news/14551295/

相关文章:

  • 免费网站入口2021新闻做的差的网站
  • 重庆模板建站公司电子商务网站建设是学什么
  • 提供石家庄网站推广文字图片设计制作在线
  • 网站目录怎么做301跳转域名注册过后怎么使用
  • 怎样做网站快手刷粉山东网站建设网站
  • 打开无忧管理后台网站宝安住房和建设局网站电话
  • 北京学设计去哪个网站福田公司官网
  • 网站点击按钮排序企业网站服务门户
  • 一家专门做特卖的网站手机版深圳品牌网站建设服务
  • 安顺做网站的公司潜水艇官方网站代理
  • 怎么做分享网站代账公司注册条件
  • 洛阳网站设计哪家专业网站模板建设报价单
  • 中国建设银行官网站预约纪念币wordpress audio主题
  • 网站seo方案建设目标网站安全优化
  • 网站会员注册系统怎么做视频亚马逊主机wordpress
  • 网络推广的网站中融木业网站是那个网站做的
  • 建设官方网站需要那些人员做销售在那个网站找
  • ie常用网站设置一二三年级手工
  • 外贸怎么上国外的网站动漫设计与制作主修课程
  • 网站优化排名如何做优化制造业布局
  • 做网站 图片侵权搜索关键词推荐
  • 潍坊百度网站建设快速网站开发框架
  • 如何借助织梦制作一个简单的网站企业官网门户网站管理系统
  • 网站建设费用做什么科目北京网架公司
  • 服务器硬件影响网站速度网站右侧浮动导航
  • 网站开发费用怎么账务处理佛山十大进出口贸易公司
  • 网站正在建设中的素材动图百度联盟是什么
  • 江苏华江建设集团有限公司网站群辉怎么做视频网站
  • 网站文章不显示长春网络公司排名
  • 网站制作作业百度指数免费添加