Kabsch-Umeyama algorithm

参考文献:

  1. https://www.wikiwand.com/en/Kabsch_algorithm

面向点云配准,最小化两点集均方根误差(RMSD, root mean squared deviation)来计算最佳旋转矩阵。

注:该算法只能计算旋转矩阵,做点云配准还需要计算平移向量。当平移和旋转都正确计算出,该算法有时也叫_partial Procrustes superimposition (see also orthogonal Procrustes problem)_

步骤:

  1. a translation
  2. the computation of a covariance matrix
  3. the computation of the optimal rotation matrix

First Step: Translation

将两组点集的质心对齐坐标系原点:

\[\hat{P} = || P - P_{centroid} ||_1
\]

Second Step: calculate the covariance matrix

calculate the corrs-covariance matrix \(H\) between \(P\) and \(Q\)

\[H = P^TQ
\]

Third Step: calculate the optimal rotation matrix

base calculating formula:

\[R=(H^TH)^{\frac{1}{2}}H^{-1}
\]

但是如果出现一些特殊情况,例如:\(H\) 不存在逆矩阵时,上述公式变得复杂,甚至不可解。所以一般都会使用SVD(奇异值分解,singular value decomposition)变换上述公式。

\[SVD: H=U\Sigma V^T
\]

并且校正旋转矩阵确保在一个右手坐标系,最终计算最佳旋转矩阵\(R\) 。

\[d = sign(det(VU^T))
\]
\[R = V \begin{pmatrix} 1&0&0\\0&1&0\\0&0&d\end{pmatrix}U^T
\]

最佳旋转矩阵还可以用四元数(quaternions来表示)

Generalizations

The algorithm was described for points in a three-dimensional space. The generalization to D dimensions is immediate.

点云配准算法-旋转矩阵估计-Kabsch-Umeyama algorithm的更多相关文章

  1. 3D点云配准算法简述

    ​蝶恋花·槛菊愁烟兰泣露 槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去. 明月不谙离恨苦,斜光到晓穿朱户. 昨夜西风凋碧树,独上高楼,望尽天涯路. 欲寄彩笺兼尺素.山长水阔知何处? --晏殊 导读: 3D点云 ...

  2. 点云配准的端到端深度神经网络:ICCV2019论文解读

    点云配准的端到端深度神经网络:ICCV2019论文解读 DeepVCP: An End-to-End Deep Neural Network for Point Cloud Registration ...

  3. CVPR2020:训练多视图三维点云配准

    CVPR2020:训练多视图三维点云配准 Learning Multiview 3D Point Cloud Registration 源代码和预训练模型:https://github.com/zgo ...

  4. PCL点云配准(2)

    (1)正态分布变换进行配准(normal Distributions Transform) 介绍关于如何使用正态分布算法来确定两个大型点云之间的刚体变换,正态分布变换算法是一个配准算法,它应用于三维点 ...

  5. PCL点云配准(1)

    在逆向工程,计算机视觉,文物数字化等领域中,由于点云的不完整,旋转错位,平移错位等,使得要得到的完整的点云就需要对局部点云进行配准,为了得到被测物体的完整数据模型,需要确定一个合适的坐标系,将从各个视 ...

  6. NDT(Normal Distribution Transform) 算法(与ICP对比)和一些常见配准算法

    原文地址:http://ghx0x0.github.io/2014/12/30/NDT-match/ By GH 发表于 12月 30 2014 目前三维配准中用的较多的是ICP迭代算法,需要提供一个 ...

  7. NDT 算法和一些常见配准算法

    原文链接:http://ghx0x0.github.io/2014/12/30/NDT-match/ 目前三维配准中用的较多的是ICP迭代算法,需要提供一个较好的初值,同时由于算法本身缺陷,最终迭代结 ...

  8. MeshLab中进行点云配准

    MeshLab是一个开源.可移植和可扩展的三维几何处理系统,主要用于交互处理和非结构化编辑三维三角形网格.它支持多种文件格式: import:PLY, STL, OFF, OBJ, 3DS, COLL ...

  9. 使用正态分布变换(Normal Distributions Transform)进行点云配准

    正态分布变换算法是一个配准算法,它应用于三维点的统计模型,使用标准优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快.下面是PCL官网上的一个例 ...

  10. 【图像配准】基于互信息的图像配准算法:MI、EMI、ECC算法

    简单介绍: 基于互信息的图像配准算法以其较高的配准精度和广泛的适用性而成为图像配准领域研究的热点之中的一个.而基于互信息的医学图像配准方法被觉得是最好的配准方法之中的一个.基于此.本文将介绍简单的基于 ...

随机推荐

  1. OOP4-6题目集总结

    4-6次题目集,从集合框架,正则表达式,类的继承与多态三个方面展开,在帮助我们了解java常用的工具(集合框架,正则表达式)的同时让我们学着利用类与类之间的关系来减少耦合,第六次题目集侧重于类的继承与 ...

  2. React后台管理系统06 路由

    在src目录下新建2views文件夹,用来存放组件,这里我们新建2个路由组件Home About,如下所示: 创建好这两个路由组件之后,在src目录里面我们新建一个router路由文件夹,然后命名一个 ...

  3. W1R3S-1项目实战

    前言 您受聘在W1R3S.inc单个服务器上进行渗透测试,并报告所有发现.他们要求您获得root访问权限并找到标志(位于/root目录中). 难以获得低特权外壳:初级/中级 获得特权升级的难度:初级/ ...

  4. charAt和substring方法的使用

    charAt和substring方法的使用 一.charAt的相关应用 1.charAt方法 charAt截取单个字符,参数index范围从0开始,length-1截止. 2.语法 public ch ...

  5. 记一次.Net分布式事务死锁现象以及解决方法

    在本文中,将介绍一次遇到的.Net分布式事务死锁现象以及解决方法.我们将首先了解事务框架的构成,然后分析导致死锁的代码,最后提出解决方法. 事务框架 本次开发框架JMSFramework将分布式事务划 ...

  6. 基于GPT搭建私有知识库聊天机器人(三)向量数据训练

    在前面的文章中,我们介绍了实现原理和基本环境安装.本文将重点介绍数据训练的流程,以及如何加载.切割.训练数据,并使用向量数据库Milvus进行数据存储. 1. 数据训练依赖于向量数据库 在本文中,我们 ...

  7. 从零实现的Chrome扩展

    从零实现的Chrome扩展 Chrome扩展是一种可以在Chrome浏览器中添加新功能和修改浏览器行为的软件程序,例如我们常用的TamperMonkey.Proxy SwitchyOmega.AdGu ...

  8. 如何使用CCXT交易数字货币现货

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 数字货币现货标准化接口 数字货币市场与股票.期货市场最大的不同点在于数字货币主流交易所数量很多.举个例子 ...

  9. 【go语言】2.1.3 函数的定义和使用

    在 Go 语言中,函数是一种代码抽象和复用的方式.函数可以接受参数,执行特定的操作,并返回结果. 函数的定义 函数的定义以 func 关键字开始,后面跟着函数名.参数列表.返回值列表(可选)以及函数体 ...

  10. 但因热爱,愿迎万难,OpenTiny 社区增加一枚前端程序媛贡献者🎉

    我们非常高兴地宣布,OpenTiny Vue Playground 正式上线! 链接:https://opentiny.github.io/tiny-vue-playground/ 在此非常感谢 xi ...