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

网站怎么发布到服务器网站建设需要度搜去

网站怎么发布到服务器,网站建设需要度搜去,中国建筑集团网,网至普的营销型网站布局目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 法线计算函数 2.1.2 执行 LM-ICP 函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接#xff1a; PCL点云算法与项目实战案例汇总#xff08;长期更新 PCL点云算法与项目实战案例汇总长期更新 一、概述 LM-ICPLevenberg-Marquardt Iterative Closest Point算法是一种基于 Levenberg-Marquardt 非线性优化的 ICP 点云配准算法。相较于传统的 ICP 算法LM-ICP 在迭代优化过程中引入了更复杂的误差修正机制能够更有效地处理带有噪声、局部不规则的点云数据实现更加精确的点云配准。         LM-ICP 通过最小化源点云与目标点云之间的几何误差例如点到点或点到面的误差来计算刚体变换矩阵。Levenberg-Marquardt 是一种结合了梯度下降和高斯牛顿法的非线性优化算法能够在梯度下降较慢时切换到更为快速的优化路径。 1.1原理 Levenberg-Marquardt (LM) 结合了两种优化方法 梯度下降法在远离最优解时能够通过学习率较小的更新慢速地逼近最优解。高斯牛顿法在接近最优解时能通过求解二阶导数信息快速逼近最优解。 LM-ICP 算法的目标是通过这些优化过程找到源点云和目标点云之间的最佳变换矩阵使得几何误差最小化。其基本步骤包括 计算初始对应关系。使用 Levenberg-Marquardt 优化步骤调整变换矩阵。迭代更新直到收敛。 1.2实现步骤 加载点云数据加载源点云和目标点云。法线计算计算点云的法线信息以支持点到面的 ICP 配准。初始化 ICP 对象设置基于 LM 优化的 ICP 算法。设置配准参数包括最大迭代次数、最小转换差异、最大对应点距离等。执行配准通过 ICP 进行点云配准输出最终的变换矩阵。可视化通过 PCLVisualizer 对源点云、目标点云和配准后的点云进行可视化。 1.3应用场景 3D物体建模通过对多个视角点云数据的精确对齐重建完整的 3D 模型。自动驾驶感知系统对多帧激光雷达点云数据的精确对齐提升环境感知的精度。机器人导航在 SLAM同时定位与地图构建系统中使用点云配准进行位置估计。 二、代码实现 2.1关键函数 2.1.1 法线计算函数 pcl::PointCloudpcl::PointNormal::Ptr compute_normals(pcl::PointCloudpcl::PointXYZ::Ptr input_cloud) {pcl::NormalEstimationOMPpcl::PointXYZ, pcl::Normal normal_estimator;pcl::PointCloudpcl::Normal::Ptr normals(new pcl::PointCloudpcl::Normal);pcl::search::KdTreepcl::PointXYZ::Ptr tree(new pcl::search::KdTreepcl::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::PointCloudpcl::PointNormal::Ptr cloud_with_normals(new pcl::PointCloudpcl::PointNormal);pcl::concatenateFields(*input_cloud, *normals, *cloud_with_normals);return cloud_with_normals; }2.1.2 执行 LM-ICP 函数 void run_lm_icp(pcl::PointCloudpcl::PointNormal::Ptr source_normal,pcl::PointCloudpcl::PointNormal::Ptr target_normal,Eigen::Matrix4f final_transform, pcl::PointCloudpcl::PointNormal::Ptr icp_cloud) {// 初始化 LM ICP 对象pcl::IterativeClosestPointNonLinearpcl::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::PointCloudpcl::PointNormal::Ptr compute_normals(pcl::PointCloudpcl::PointXYZ::Ptr input_cloud) {pcl::NormalEstimationOMPpcl::PointXYZ, pcl::Normal normal_estimator;pcl::PointCloudpcl::Normal::Ptr normals(new pcl::PointCloudpcl::Normal);pcl::search::KdTreepcl::PointXYZ::Ptr tree(new pcl::search::KdTreepcl::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::PointCloudpcl::PointNormal::Ptr cloud_with_normals(new pcl::PointCloudpcl::PointNormal);pcl::concatenateFields(*input_cloud, *normals, *cloud_with_normals);return cloud_with_normals; }// 执行 LM-ICP 配准 void run_lm_icp(pcl::PointCloudpcl::PointNormal::Ptr source_normal,pcl::PointCloudpcl::PointNormal::Ptr target_normal,Eigen::Matrix4f final_transform, pcl::PointCloudpcl::PointNormal::Ptr icp_cloud) {// 初始化 LM ICP 对象pcl::IterativeClosestPointNonLinearpcl::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::PointCloudpcl::PointXYZ::Ptr source,pcl::PointCloudpcl::PointXYZ::Ptr target,pcl::PointCloudpcl::PointXYZ::Ptr aligned) {boost::shared_ptrpcl::visualization::PCLVisualizer viewer(new pcl::visualization::PCLVisualizer(配准结果));viewer-setBackgroundColor(0, 0, 0); // 设置背景颜色为黑色pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ target_color(target, 255, 0, 0);viewer-addPointCloud(target, target_color, target cloud);/* pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ source_color(source, 0, 255, 0);viewer-addPointCloud(source, source_color, source cloud);*/pcl::visualization::PointCloudColorHandlerCustompcl::PointXYZ aligned_color(aligned, 0, 0, 255);viewer-addPointCloud(aligned, aligned_color, aligned cloud);viewer-spin(); }int main() {pcl::console::TicToc time;// 读取点云数据pcl::PointCloudpcl::PointXYZ::Ptr target(new pcl::PointCloudpcl::PointXYZ);pcl::io::loadPCDFilepcl::PointXYZ(1.pcd, *target);pcl::PointCloudpcl::PointXYZ::Ptr source(new pcl::PointCloudpcl::PointXYZ);pcl::io::loadPCDFilepcl::PointXYZ(2.pcd, *source);// 计算源点云和目标点云的法线pcl::PointCloudpcl::PointNormal::Ptr targetNormal compute_normals(target);pcl::PointCloudpcl::PointNormal::Ptr sourceNormal compute_normals(source);// 执行 LM-ICPpcl::PointCloudpcl::PointNormal::Ptr icp_cloud(new pcl::PointCloudpcl::PointNormal);Eigen::Matrix4f final_transform;run_lm_icp(sourceNormal, targetNormal, final_transform, icp_cloud);// 输出变换矩阵std::cout 变换矩阵\n final_transform std::endl;// 变换点云并进行可视化pcl::PointCloudpcl::PointXYZ::Ptr aligned(new pcl::PointCloudpcl::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://www.dnsts.com.cn/news/156854.html

相关文章:

  • 网站收录提交山西建筑工程集团有限公司
  • 网站锚文本与标签nginx 网站开发
  • 设计网站教程wordpress改logo不显示
  • 做网站代码审计哪个工具比较好html网页制作下载
  • 建立网站需要注意事项做外贸的收入一般多少
  • 青提wifi小程序开发教程广州seo优化效果
  • 网站策划报告怎么写网站域名的注册时间
  • h5移动端网站开发免费的虚拟电脑app
  • 长沙专业外贸建站公司连云港网站建设的公司
  • 网站的优化用什么软件辽宁招标工程信息网
  • 记事本做网站怎么调整图片间距wordpress idc主题
  • 全球最好的设计网站网站建设计划表模板下载
  • cms建站平台文登区建设局网站
  • 上海品牌网站开发设计平台市场分析
  • 沧州国外网站建设有什么软件可以做网站
  • 自己电脑做网站好吗北京织梦网站建设
  • 哈尔滨快速建站服务图书拍卖网站开发过程的问题
  • 关键词挖掘查询工具爱站网手机端网站建设步骤
  • 网站自助建设小程序在哪里
  • 网站开发的岗位与分工wordpress建站平台
  • 图片素材网站哪个最多深圳著名设计网站大全
  • 国外平面设计师常看的网站北京列表网
  • 商城网站设计与实现合肥网站推广优化
  • 私人网站服务器搭建办公室装修公司哪里好
  • 网站如何做关键词seo玉田县网站建设
  • 娃哈哈网站建设策划书怎么改网站标题
  • 郑州网站建设精英查询建筑企业网站
  • 开平网站设计科技发展对国家的重要性
  • 教育培训的网站建设关键词抓取工具都有哪些
  • 建设网站的功能定位邢台网络推广系统找哪家