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

景洪网站建设汽车零部件公司网站建设方案

景洪网站建设,汽车零部件公司网站建设方案,建设机械网站方案设计,昆明网站建设猫咪科技文章目录前言一、ICP算法基础1.1 提取待匹配点对1.2 计算旋转平移矩阵1.3 计算变换后的点和目标点之间的偏差二、ICP算法变种2.1 PLICP2.2 PointToPlane ICP2.3 NICP2.4 LM_ICP三、程序示例1. 传统方法2. PointToPlane ICP总结前言 ICP#xff08;Iterative Closest PointIterative Closest Point最近邻点迭代是应用最广泛的三维点云配准算法之一网上讲ICP算法原理的非常多这里列举几个个人觉得讲的比较好的。 三维点云配准 – ICP 算法原理及推导 ICP迭代最近点算法 PCL学习笔记二Registration (ICP算法) 原始的ICP算法的问题在于点对之间只分析距离之间的关系从而引起迭代次数高最终导致的计算时间过长所以很多学者提出了各种各样的改进算法如PLICPPointToPlane ICPNICPLM_ICP算法等。 本文对各种ICP算法的原理以及其简单的应用进行分析。 一、ICP算法基础 ICP算法的基本逻辑是先通过对应关系估计、关键点检测等方法找到源点云和目标点云的待匹配点对然后计算旋转和平移矩阵对source点云进行旋转平移到target点云上根据设置的阈值进行判断如果不满足阈值要求就重复以上过程继续计算最终达到最大迭代次数或者满足设定的均方差阈值才能停止迭代。 可以用一个公式表示 1.1 提取待匹配点对 首先按需要进行blob。 然后进行Correspondences estimation对应关系估计得到共同部分的点云。 /** \brief A CorrespondenceEstimation object, used to estimate correspondences between the source and the target cloud. */CorrespondenceEstimationPtr correspondence_estimation_;/** \brief The minimum number of correspondences that the algorithm needs before attempting to estimate the * transformation. The default value is 3.*/int min_number_correspondences_;correspondence_estimation_-setInputTarget (target_);if (correspondence_estimation_-requiresTargetNormals ())correspondence_estimation_-setTargetNormals (target_blob);具体源码自行查看下面列出Correspondences estimation的计算代码,里面包含了两种计算方法分别为determineCorrespondences和determineReciprocalCorrespondences 。 determineCorrespondences会计算所有点的对应关系。 determineReciprocalCorrespondences计算两个点云共同部分的对应关系。 最后进行一个CorrespondenceRejector去除错误的估计。 for (std::size_t i 0; i correspondence_rejectors_.size (); i){registration::CorrespondenceRejector::Ptr rej correspondence_rejectors_[i];if (rej-requiresTargetPoints ())rej-setTargetPoints (target_blob);if (rej-requiresTargetNormals () target_has_normals_)rej-setTargetNormals (target_blob);}1.2 计算旋转平移矩阵 我们默认变换为刚性变换通过空间中两点间的变换关系计算R和T矩阵。假定第一次计算的矩阵为R0R_0R0​和T0T_0T0​。PCL中ICP的初始矩阵为 Eigen::Vector4f pt (0.0f, 0.0f, 0.0f, 1.0f), pt_t; Eigen::Matrix4f tr transform.template castfloat ()也就是 [1010101]\begin{bmatrix} 10\\ 10\\10\\1\end{bmatrix}⎣⎢⎢⎡​1​1​1​0001​⎦⎥⎥⎤​ 公式如下 pip_ipi​R0R_0R0​*qiq_iqi​T0T_0T0​ 其中 T [txtytz]\begin{bmatrix} txtytz\end{bmatrix}[tx​ty​tz​] 具体的计算采用奇异值分解的方法具体计算过程前言部分推荐的文章有写。 1.3 计算变换后的点和目标点之间的偏差 对点集p进行变换计算变换后的点集p1p_1p1​和q的距离值。 Distance∑i1n∣∣p1\displaystyle\sum_{i1}^{n}||p_1i1∑n​∣∣p1​-q ||2^22 Distance和设定的阈值进行对比如果大于则跳到第一步重新开始循环迭代如果达到最大迭代次数还没有满足阈值要求也会停止迭代保留最近一次的迭代结果。 PCL中还有一个收敛条件设置setTransformationEpsilon意思是上一个变换矩阵和当前变换矩阵的差异值如果差异值小于阈值也认为达到收敛。 PCL迭代部分的代码如下 // Estimate the transformtransformation_estimation_-estimateRigidTransformation (*input_transformed, *target_, *correspondences_, transformation_);// Transform the datatransformCloud (*input_transformed, *input_transformed, transformation_);// Obtain the final transformationfinal_transformation_ transformation_ * final_transformation_;nr_iterations_;二、ICP算法变种 因为计算点对间的最小距离的方法过于耗时和低效所以出现了很多加速方法例如先提取点云特征然后进行特征间的匹配可以极大减少匹配时间或者对计算源点云中点到目标点云对应点线或者面的最小距离可以降低。 2.1 PLICP PLICP计算当前帧中的点到参考帧中最近邻两点连线的最小距离值在slam中应用较多可以或者更小的迭代次数和更高的精度。 原理可以参考论文 A. Censi, “An ICP variant using a point-to-line metric,” 2008 IEEE International Conference on Robotics and Automation, Pasadena, CA, 2008, pp. 19-25, doi: 10.1109/ROBOT.2008.4543181 2.2 PointToPlane ICP 计算Source点云中点到目标点云对应点形成的面的最小距离值。 这里ni为qi的法线,minE为最小欧式距离。 2.3 NICP NICP与传统ICP的不同之处在于NICP会多考虑曲率和法线的方向一致问题如果对应点的曲率和法线方向超过设定阈值不会建立对应点的匹配。所以在计算的时候需要计算点云的法线信息然后进行匹配时需要额外对对应点对的法线和曲率限定阈值。 2.4 LM_ICP LM_ICP在计算最小距离的时候采用LM模型来进行算法原理可以查看论文 结合Kinect的双目视觉场景三维重建。 三、程序示例 1. 传统方法 传统方法计算全部点云的对应关系导致计算时间非常长。 icp.setInputSource(source); icp.setInputTarget(target); icp.setTransformationEpsilon(1e-8); icp.setMaxCorrespondenceDistance(1); //添加一个最大距离的阈值超过最大距离的点不作为对应点。 icp.setEuclideanFitnessEpsilon(0.00005); icp.setMaximumIterations(150); icp.setUseReciprocalCorrespondences(true);迭代1次 迭代134次 2. PointToPlane ICP PointToPlane ICP的核心类是IterativeClosestPointWithNormals默认情况下此实现使用传统的点对面目标并使用目标点云的法线计算点对面距离。 另外在计算法线的时候采用OpenMP来进行多线程加速。 pcl::IterativeClosestPointWithNormalspcl::PointNormal, pcl::PointNormalptoplane_icp;ptoplane_icp.setInputSource(source_with_normals); ptoplane_icp.setInputTarget(target_with_normals); ptoplane_icp.setTransformationEpsilon(1e-8); ptoplane_icp.setMaxCorrespondenceDistance(1); ptoplane_icp.setEuclideanFitnessEpsilon(0.0001); ptoplane_icp.setMaximumIterations(150); 可见只进行了7次迭代用时1.6s. 总结 ICP算法功能强大算法种类也很多在实际使用时需要根据实际应用场景开发适合的ICP自适应算法。
http://wiki.neutronadmin.com/news/352973/

相关文章:

  • 网站自己建机房深圳网站开发工程师
  • 网站建设实例下载wordpress目录只显示第一个图片
  • 怎么做网站管理系统seo如何分析网站
  • 牛街网站建设网站邮件系统建设招标
  • 第三方商城网站建设网站没有收录了
  • 可以不花钱做网站吗视频直播源码
  • 一流的镇江网站建设魔贝课凡seo课程好吗
  • 建设工程学部研究生培养网站湖南常德邮编
  • 腾讯云建站流程2023年10月爆发新冠
  • 福步外贸网站wordpress如何修改模板
  • 网站优化分析wordpress更好用吗
  • 网络建设网站有关知识高端轻奢品牌
  • 网站 整站 抓取深圳网站建设公司流程
  • 制定网站建设规划书软件推广简报
  • 中国国防新闻兰州企业网络推广优化
  • 企业网站模板 首页大图企业信息查询网官网
  • 长沙公司建设网站公司名字大全最新
  • 网站后台管理怎么进衡水精品网站建设价格
  • 天津百度关键词排名外贸网站建设seo优化
  • 中石油技术开发公司网站东莞做网站注意事项
  • 301的网站用什么来做连锁租车网站源码
  • 广州网站建设性价比网站域名查主机
  • 阿里云建立网站培训机构图片
  • 常州淄博网站优化软件库合集软件资料2024
  • 定制高端网站建设报价视频网站如何推广
  • 怎么免费网上做公司网站石狮网站建设费用
  • wordpress网站语言商业广告
  • 电商类网站建设需要多少钱互联网做什么行业前景好
  • 织梦网站漏洞修复哔哩哔哩免费网站观看
  • 网站开发的论文题目网站检测工具