问题引入

迭代最近点(Iterative Closest Point, 下简称ICP)算法是一种点云匹配算法。

假设我们通过RGB-D相机得到了第一组点云 ,相机经过位姿变换(旋转加平移)后又拍摄了第二组点云 ,注意这里的  和  的坐标分别对应移动前和移动后的坐标系(即坐标原点始终为相机光心,这里我们有移动前、移动后两个坐标系),并且我们通过相关算法筛选和调整了点云存储的顺序,使得  中的点一一对应,如在三维空间中对应同一个点。

现在我们要解决的问题是:计算相机的旋转   和平移  ,在没有误差的情况下,从 坐标系转换到 的公式为:

但由于噪声及错误匹配(如  其实并不对应空间中同一点,但特征匹配算法错误地认为二者是同一点)的存在, 上式不总是成立,所以我们要最小化的目标函数为

常用的求解  和  的方法有:

  1. SVD
  2. 非线性优化

非线性优化的描述比较繁琐,下面只介绍SVD方法。为了后面能使用SVD,我们需要在数学上做一点小小的变形。首先定义两组点云的质心(center of mass)为 ,,并作出如下处理:

MATLAB Example

MATLAB R2018a提供了ICP例程,需要安装Computer Vision System Toolbox,我们来简单看一下这个例子。

首先,加载了原始的点云图

对点云进行旋转30度、向xyz分别平移5、5、10后得到变换后的点云图

由于每个点在三位矩阵中的下标并没有发生变化,只是每个点的坐标发生了变化,满足我们之前所要求的点云已经配准前提。调用ICP函数

tform = pcregistericp(ptCloudTformed,ptCloud,'Extrapolate',true);

输出结果

ICP算法详解——我见过最清晰的解释相关推荐

  1. PnP算法详解(超详细公式推导)

    PnP算法详解 PnP概述 PnP数学模型 PnP求解方法 DLT直接线性变换法 EPnP EPnP的特点 步骤 理论推倒 1.控制点及齐次重心坐标系 2.控制点的选择 3.计算控制点在相机坐标系下的 ...

  2. 回溯算法详解之全排列、N皇后问题

    回溯算法详解 回溯算法框架.解决一个回溯问题,实际上就是一个决策树的遍历过程.你只需要思考 3 个问题: 1.路径:也就是已经做出的选择. 2.选择列表:也就是你当前可以做的选择. 3.结束条件:也就 ...

  3. md5与des算法有何不同_Python算法详解:为什么说算法是程序的灵魂?

    算法是程序的灵魂,只有掌握了算法,才能轻松地驾驭程序开发.软件开发工作不是按部就班,而是选择一种最合理的算法去实现项目功能.算法能够引导开发者在面对一个项目功能时用什么思路去实现,有了这个思路后,编程 ...

  4. 20200118:(leetcode)最长回文子串(中心扩展算法详解及思考)

    最长回文子串(中心扩展算法详解及思考) 题目 中心扩展算法详解 代码实现 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: " ...

  5. LDA主题模型(算法详解)

    LDA主题模型(算法详解) http://blog.csdn.net/weixin_41090915/article/details/79058768?%3E 一.LDA主题模型简介 LDA(Late ...

  6. kmeans聚类算法matlab_KMeans聚类算法详解

    "如果把人工智能比作一块大蛋糕,监督学习只是上面的一层奶油". 日常生活中,从人脸识别.语音识别到搜索引擎,我们看到越来越多人工智能领域的算法逐渐走向落地.尽管全球每日新增数据量以 ...

  7. java制作海报一:java使用Graphics2D 在图片上写字,文字换行算法详解

    文章目录 前言 一.直接上代码 1. 写字方法 2. 换行算法 二. 叙述换行算法 前言 代码都上传到GitHub了,这里仅仅是贴出来主要部分,GitHub传送门:https://github.com ...

  8. 图解机器学习算法(13) | 聚类算法详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  9. 离线强化学习(Offline RL)系列3: (算法篇) Onestep 算法详解与实现

    [更新记录] 论文信息: David Brandfonbrener, William F. Whitney, Rajesh Ranganath, Joan Bruna: "Offline R ...

  10. 【强化学习】Sarsa算法详解以及用于二维空间探索【Python实现】

    Sarsa算法 Sarsa算法,是基于Q-Learning算法.改动其实很小. 本文工作基于之前的Q-Learning的项目,如果有疑问可以看下面两个问题: [强化学习]Q-Learning算法详解以 ...

最新文章

  1. mysql检索有什么区别_检索行时,MySQL中AND或OR运算符有什么区别?
  2. uvm_comps.svh
  3. hdu 3199 动态规划
  4. ES6基础2(块级作用域、数组对象解构)-学习笔记
  5. iOS开发-平台使用TestFlight进行Beta测试
  6. Linq表达式和Lambda表达式用法对比
  7. 第22课 抽奖 《小学生C++趣味编程》
  8. python pytest mark
  9. [转]电影《龙纹身女孩》中的那句 SQL-----The Girl With The ANSI Tattoo
  10. 不依赖jstack的java 线程dump和死锁检查工具
  11. 数据结构c语言描述第课后答案李学刚,数据结构(C语言描述)(第2版)
  12. Atitit.视频文件加密的方法大的总结 java c# php
  13. 使用SecretScanner发现容器镜像和文件系统中的敏感数据
  14. 小白入门——关于什么是区块链
  15. 图形镜像对称(示意图)
  16. 1月1号开始租房一年期到几号_先承认我迷糊。现在请帮忙,租房合同中从7月1日起到次年的几月几日是一年日期?是6月31日还是7月31日...
  17. 从阿里云购买、域名购买、SSL免费购买到SSL集成开发(网络编程安全三)
  18. 一般试卷的纸张大小是多少_考试试卷用的是什么尺寸的纸
  19. trigger()方法
  20. Python 实现京东自动登录领京豆

热门文章

  1. exls表格搜索快捷键_excel表格查找快捷键|excel表格的常用功能快捷键介绍
  2. excel如何选中空单元格并计算总计、平均值、率
  3. 形容等待时间长的句子_形容等待的句子
  4. dht11温湿度传感器工作原理引脚功能电路接线图
  5. 八位颜色代码查询_RGB颜色代码全表
  6. matlab LSB算法的三种改进
  7. linux下删原来的盘符命令,linux中创建磁盘分区 删除分区
  8. 如何玩Chrome的小恐龙游戏
  9. 电子或计算机机类学校,热门理工科工程专业当然属于计算机、电子信息和机械...
  10. “L3级”自动驾驶落地指导思想:高速辅助人,低速替代人