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

怎么判断网站是否被k看板娘 wordpress

怎么判断网站是否被k,看板娘 wordpress,wordpress网址导航页面,上百度推广 免费做网站目录 一、概述 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.w-s-a.com/news/316655/

相关文章:

  • 谁有手机网站啊介绍一下dedecms 网站重复文章
  • 博客网站快速排名微信机器人免费版wordpress
  • 孝感网站建设xgshwordpress网站基础知识
  • 百度为什么会k网站长沙做网站找哪家好
  • 揭阳商城网站建设新闻稿发布平台
  • 电商网站建设免费在线优化网站
  • 厦门网站建设咨询挣钱最快的小游戏
  • 郑州网站网络营销莱芜雪野湖别墅
  • 安装iis8 添加网站河南省建设执业资格中心网站
  • 个人网站电商怎么做广州市营销型网站建设
  • 空间站做网站什么版本wordpress 勾子
  • win7网站服务器制作软件网站浏览图片怎么做的
  • 网站制作平台公司嵌入式软件开发环境
  • 网站服务器镜像微商做网站网站
  • 十大旅游电子商务网站网上定做衣服
  • 怎样进行网站备案上海发布公众号app
  • 网站后台模板论坛网站优化招商
  • 个人网站设计作品能用VUE做网站
  • 网站建设预付阿里云域名备案查询
  • 苏州本地网站免费咨询医生的软件
  • 个人网站做废品回收福建网站开发招聘
  • wordpress网站备案学设计常用的网站
  • 网站建设的频道是什么网站用什么开发软件做
  • 电子商务网站建设与规划总结外链查询网站
  • 西安网站品牌建设做网站需要的东西
  • 网站外围网站怎么做移动端网站开发项目
  • 做网站只做前端可以用吗知更鸟免费 wordpress
  • html5 微信网站主流开发技术标准网站搭建费用
  • 加强统计局网站的建设和管理广州微信网站建设价格
  • 华宁网站建设设计公司 网站