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

wordpress建站吗seo站内优化技巧

wordpress建站吗,seo站内优化技巧,中铁建设集团有限公司门户网站,东莞锂电池网站建设目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 法线计算函数 2.1.2 执行 LM-ICP 函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新&a…

目录

一、概述

1.1原理

1.2实现步骤

1.3应用场景

二、代码实现

2.1关键函数

2.1.1 法线计算函数

2.1.2 执行 LM-ICP 函数

2.2完整代码

三、实现效果


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

PCL点云算法与项目实战案例汇总(长期更新)


一、概述

        LM-ICP(Levenberg-Marquardt Iterative Closest Point)算法是一种基于 Levenberg-Marquardt 非线性优化的 ICP 点云配准算法。相较于传统的 ICP 算法,LM-ICP 在迭代优化过程中引入了更复杂的误差修正机制,能够更有效地处理带有噪声、局部不规则的点云数据,实现更加精确的点云配准。

        LM-ICP 通过最小化源点云与目标点云之间的几何误差(例如点到点或点到面的误差)来计算刚体变换矩阵。Levenberg-Marquardt 是一种结合了梯度下降和高斯牛顿法的非线性优化算法,能够在梯度下降较慢时切换到更为快速的优化路径。

1.1原理

Levenberg-Marquardt (LM) 结合了两种优化方法:

  1. 梯度下降法:在远离最优解时,能够通过学习率较小的更新,慢速地逼近最优解。
  2. 高斯牛顿法:在接近最优解时,能通过求解二阶导数信息,快速逼近最优解。

LM-ICP 算法的目标是通过这些优化过程找到源点云和目标点云之间的最佳变换矩阵,使得几何误差最小化。其基本步骤包括:

  1. 计算初始对应关系。
  2. 使用 Levenberg-Marquardt 优化步骤调整变换矩阵。
  3. 迭代更新直到收敛。

1.2实现步骤

  1. 加载点云数据:加载源点云和目标点云。
  2. 法线计算:计算点云的法线信息,以支持点到面的 ICP 配准。
  3. 初始化 ICP 对象:设置基于 LM 优化的 ICP 算法。
  4. 设置配准参数:包括最大迭代次数、最小转换差异、最大对应点距离等。
  5. 执行配准:通过 ICP 进行点云配准,输出最终的变换矩阵。
  6. 可视化:通过 PCLVisualizer 对源点云、目标点云和配准后的点云进行可视化。

1.3应用场景

  1. 3D物体建模:通过对多个视角点云数据的精确对齐,重建完整的 3D 模型。
  2. 自动驾驶感知系统:对多帧激光雷达点云数据的精确对齐,提升环境感知的精度。
  3. 机器人导航:在 SLAM(同时定位与地图构建)系统中,使用点云配准进行位置估计。

二、代码实现

2.1关键函数

2.1.1 法线计算函数

pcl::PointCloud<pcl::PointNormal>::Ptr compute_normals(pcl::PointCloud<pcl::PointXYZ>::Ptr input_cloud)
{pcl::NormalEstimationOMP<pcl::PointXYZ, pcl::Normal> normal_estimator;pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);normal_estimator.setNumberOfThreads(8);  // 使用多线程加速法线计算normal_estimator.setInputCloud(input_cloud);  // 设置输入点云normal_estimator.setSearchMethod(tree);  // 设置 KD 树搜索normal_estimator.setKSearch(10);  // 设置 K 近邻搜索normal_estimator.compute(*normals);  // 计算法线// 拼接点云数据与法线pcl::PointCloud<pcl::PointNormal>::Ptr cloud_with_normals(new pcl::PointCloud<pcl::PointNormal>);pcl::concatenateFields(*input_cloud, *normals, *cloud_with_normals);return cloud_with_normals;
}

2.1.2 执行 LM-ICP 函数

void run_lm_icp(pcl::PointCloud<pcl::PointNormal>::Ptr& source_normal,pcl::PointCloud<pcl::PointNormal>::Ptr& target_normal,Eigen::Matrix4f& final_transform, pcl::PointCloud<pcl::PointNormal>::Ptr& icp_cloud)
{// 初始化 LM ICP 对象pcl::IterativeClosestPointNonLinear<pcl::PointNormal, pcl::PointNormal> lm_icp;// 设置 ICP 参数lm_icp.setInputSource(source_normal);lm_icp.setInputTarget(target_normal);lm_icp.setTransformationEpsilon(1e-10);    // 设置最小转换差异lm_icp.setMaxCorrespondenceDistance(10);   // 设置最大对应点距离lm_icp.setEuclideanFitnessEpsilon(0.001);  // 设置均方误差收敛条件lm_icp.setMaximumIterations(50);           // 设置最大迭代次数// 执行 LM-ICP 配准lm_icp.align(*icp_cloud);final_transform = lm_icp.getFinalTransformation();std::cout << "LM-ICP 配准完成,最终分数: " << lm_icp.getFitnessScore() << std::endl;
}

2.2完整代码

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/features/normal_3d_omp.h> // 使用OMP加速法向量计算
#include <pcl/registration/icp_nl.h>    // 非线性ICP算法
#include <pcl/visualization/pcl_visualizer.h>
#include <boost/thread/thread.hpp>
#include <pcl/console/time.h>  // 控制台时间计时器using namespace std;// 计算法线
pcl::PointCloud<pcl::PointNormal>::Ptr compute_normals(pcl::PointCloud<pcl::PointXYZ>::Ptr input_cloud)
{pcl::NormalEstimationOMP<pcl::PointXYZ, pcl::Normal> normal_estimator;pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);normal_estimator.setNumberOfThreads(8);  // 使用多线程加速法线计算normal_estimator.setInputCloud(input_cloud);  // 设置输入点云normal_estimator.setSearchMethod(tree);  // 设置 KD 树搜索normal_estimator.setKSearch(10);  // 设置 K 近邻搜索normal_estimator.compute(*normals);  // 计算法线// 拼接点云数据与法线pcl::PointCloud<pcl::PointNormal>::Ptr cloud_with_normals(new pcl::PointCloud<pcl::PointNormal>);pcl::concatenateFields(*input_cloud, *normals, *cloud_with_normals);return cloud_with_normals;
}// 执行 LM-ICP 配准
void run_lm_icp(pcl::PointCloud<pcl::PointNormal>::Ptr& source_normal,pcl::PointCloud<pcl::PointNormal>::Ptr& target_normal,Eigen::Matrix4f& final_transform, pcl::PointCloud<pcl::PointNormal>::Ptr& icp_cloud)
{// 初始化 LM ICP 对象pcl::IterativeClosestPointNonLinear<pcl::PointNormal, pcl::PointNormal> lm_icp;// 设置 ICP 参数lm_icp.setInputSource(source_normal);lm_icp.setInputTarget(target_normal);lm_icp.setTransformationEpsilon(1e-10);    // 设置最小转换差异lm_icp.setMaxCorrespondenceDistance(10);   // 设置最大对应点距离lm_icp.setEuclideanFitnessEpsilon(0.001);  // 设置均方误差收敛条件lm_icp.setMaximumIterations(50);           // 设置最大迭代次数// 执行 LM-ICP 配准lm_icp.align(*icp_cloud);final_transform = lm_icp.getFinalTransformation();std::cout << "LM-ICP 配准完成,最终分数: " << lm_icp.getFitnessScore() << std::endl;
}// 可视化配准结果
void visualize_registration(pcl::PointCloud<pcl::PointXYZ>::Ptr& source,pcl::PointCloud<pcl::PointXYZ>::Ptr& target,pcl::PointCloud<pcl::PointXYZ>::Ptr& aligned)
{boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("配准结果"));viewer->setBackgroundColor(0, 0, 0);  // 设置背景颜色为黑色pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> target_color(target, 255, 0, 0);viewer->addPointCloud(target, target_color, "target cloud");/* pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> source_color(source, 0, 255, 0);viewer->addPointCloud(source, source_color, "source cloud");*/pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> aligned_color(aligned, 0, 0, 255);viewer->addPointCloud(aligned, aligned_color, "aligned cloud");viewer->spin();
}int main()
{pcl::console::TicToc time;// 读取点云数据pcl::PointCloud<pcl::PointXYZ>::Ptr target(new pcl::PointCloud<pcl::PointXYZ>);pcl::io::loadPCDFile<pcl::PointXYZ>("1.pcd", *target);pcl::PointCloud<pcl::PointXYZ>::Ptr source(new pcl::PointCloud<pcl::PointXYZ>);pcl::io::loadPCDFile<pcl::PointXYZ>("2.pcd", *source);// 计算源点云和目标点云的法线pcl::PointCloud<pcl::PointNormal>::Ptr targetNormal = compute_normals(target);pcl::PointCloud<pcl::PointNormal>::Ptr sourceNormal = compute_normals(source);// 执行 LM-ICPpcl::PointCloud<pcl::PointNormal>::Ptr icp_cloud(new pcl::PointCloud<pcl::PointNormal>);Eigen::Matrix4f final_transform;run_lm_icp(sourceNormal, targetNormal, final_transform, icp_cloud);// 输出变换矩阵std::cout << "变换矩阵:\n" << final_transform << std::endl;// 变换点云并进行可视化pcl::PointCloud<pcl::PointXYZ>::Ptr aligned(new pcl::PointCloud<pcl::PointXYZ>);pcl::transformPointCloud(*source, *aligned, final_transform);visualize_registration(source, target, aligned);return 0;
}

三、实现效果

LM-ICP 配准完成,最终分数: 3.21931e-06
变换矩阵:0.918782   0.336633  -0.206198  0.0118966-0.379389   0.897328  -0.225536  0.07359350.109105   0.285448   0.952164 -0.03338070          0          0          1


文章转载自:
http://dinncosudd.wbqt.cn
http://dinnconuphar.wbqt.cn
http://dinncomaidenhead.wbqt.cn
http://dinncogirlhood.wbqt.cn
http://dinncorosily.wbqt.cn
http://dinncodriller.wbqt.cn
http://dinnconival.wbqt.cn
http://dinncosyntactic.wbqt.cn
http://dinncostannate.wbqt.cn
http://dinncoevillooking.wbqt.cn
http://dinncoslant.wbqt.cn
http://dinncobelleek.wbqt.cn
http://dinncotahsil.wbqt.cn
http://dinncoisthmectomy.wbqt.cn
http://dinncohandmaiden.wbqt.cn
http://dinncoethnological.wbqt.cn
http://dinncocrenelate.wbqt.cn
http://dinncoaudiotactile.wbqt.cn
http://dinncoorobanchaceous.wbqt.cn
http://dinncoandrocles.wbqt.cn
http://dinncocunabula.wbqt.cn
http://dinncotrityl.wbqt.cn
http://dinncoepiphloedal.wbqt.cn
http://dinncoamortizement.wbqt.cn
http://dinncobromism.wbqt.cn
http://dinncopicofarad.wbqt.cn
http://dinncogametophore.wbqt.cn
http://dinncocantabile.wbqt.cn
http://dinncodysbarism.wbqt.cn
http://dinncotumbleweed.wbqt.cn
http://dinncodiphtherial.wbqt.cn
http://dinncocapillarity.wbqt.cn
http://dinncoablins.wbqt.cn
http://dinncobouzoukia.wbqt.cn
http://dinncoawanting.wbqt.cn
http://dinncomutator.wbqt.cn
http://dinncoarenaceous.wbqt.cn
http://dinncoyellowhead.wbqt.cn
http://dinncoboniface.wbqt.cn
http://dinncounquestioning.wbqt.cn
http://dinncoconfessant.wbqt.cn
http://dinncodisaffinity.wbqt.cn
http://dinncosigla.wbqt.cn
http://dinncomicromation.wbqt.cn
http://dinncodagon.wbqt.cn
http://dinncogerent.wbqt.cn
http://dinncopothook.wbqt.cn
http://dinncospunbonded.wbqt.cn
http://dinncobecalm.wbqt.cn
http://dinncoblindman.wbqt.cn
http://dinncoharmonically.wbqt.cn
http://dinncoprosody.wbqt.cn
http://dinncorubify.wbqt.cn
http://dinncofloweriness.wbqt.cn
http://dinncoakyab.wbqt.cn
http://dinncorecognizance.wbqt.cn
http://dinncoicelander.wbqt.cn
http://dinncocardiant.wbqt.cn
http://dinncoroamer.wbqt.cn
http://dinncokalends.wbqt.cn
http://dinncoseventhly.wbqt.cn
http://dinncoanarchic.wbqt.cn
http://dinncotagger.wbqt.cn
http://dinncomegacycle.wbqt.cn
http://dinncogurglet.wbqt.cn
http://dinncolionism.wbqt.cn
http://dinncoterritorialism.wbqt.cn
http://dinncowhee.wbqt.cn
http://dinncoyappy.wbqt.cn
http://dinncoelizabethan.wbqt.cn
http://dinncomuckworm.wbqt.cn
http://dinncocleverly.wbqt.cn
http://dinncolandlordism.wbqt.cn
http://dinncosnowhouse.wbqt.cn
http://dinnconataraja.wbqt.cn
http://dinncoinelastic.wbqt.cn
http://dinncochapbook.wbqt.cn
http://dinncocemically.wbqt.cn
http://dinncoreservation.wbqt.cn
http://dinncoachiote.wbqt.cn
http://dinncotheatre.wbqt.cn
http://dinncoreversion.wbqt.cn
http://dinncoaerolite.wbqt.cn
http://dinncohemicellulose.wbqt.cn
http://dinncomonographist.wbqt.cn
http://dinncomilometer.wbqt.cn
http://dinncosialomucin.wbqt.cn
http://dinncolilt.wbqt.cn
http://dinncorickettsial.wbqt.cn
http://dinncofoulmouthed.wbqt.cn
http://dinncolibeller.wbqt.cn
http://dinncoresolvedly.wbqt.cn
http://dinncoforfication.wbqt.cn
http://dinncofistiana.wbqt.cn
http://dinncosuperdominant.wbqt.cn
http://dinncopersonalty.wbqt.cn
http://dinncogenevieve.wbqt.cn
http://dinncokineticism.wbqt.cn
http://dinncopionization.wbqt.cn
http://dinncopiperidine.wbqt.cn
http://www.dinnco.com/news/117419.html

相关文章:

  • 免费网站报价单怎么做优化大师有必要花钱吗
  • 专业建筑工程网站北京网站制作建设公司
  • 刚注册在域名可以自己做网站吗郑州seo外包费用
  • asp做网站教程武汉网络营销推广
  • 自己个人网站后台怎么做简述如何对网站进行推广
  • 网站死链接提交宁波网站推广运营公司
  • 禁漫天入口18comic橘子seo历史查询
  • 小型网站维护软文推广怎么做
  • 做网站服务器e3互联网推广的方式
  • 网站制作中企动力朋友圈的广告推广怎么弄
  • 关于网站备案的44个问题北京seo诊断
  • 做兼职设计去哪个网站好企业管理软件管理系统
  • 简约风网站首页怎么做seo学徒招聘
  • wordpress多站点好用吗优化关键词有哪些方法
  • query_posts wordpress两个分类东莞有限公司seo
  • 网站备案接入商超级外链吧
  • wordpress菜单显示在哪里设置重庆seo网络优化咨询热线
  • 固原市住房和城乡建设局网站广州官方新闻
  • dedecms 英文网站链友之家
  • 北京云邦网站建设优化网哪个牌子好
  • 中信建设有限责任公司发债公告宁波seo搜索引擎优化
  • 网站伪静态怎么做怎么创建公司网站
  • 鲜花网站建设的利息分析营销推广公司案例
  • 磁力网站怎么做的网站制作公司排行榜
  • 深圳网站域名注册优优群排名优化软件
  • 游戏网站的监管由谁来做免费网站推广
  • 如何建立公司网页网站优化员seo招聘
  • 网站建设对公司有什么意义seo挖关键词
  • 免费网站建设服务搜索引擎优化的核心本质
  • web设计网站小学四年级摘抄新闻