首页 > 其他分享 >基于奇异值分解的点云配准RT计算原理

基于奇异值分解的点云配准RT计算原理

时间:2023-05-20 14:34:28浏览次数:45  
标签:RT 配准 mathbf sum 矩阵 right 点云 bar left

问题描述

假设在 \(d\) 维空间 \(\mathbb{R}^d\) 中,存在两个对应点集合 \(P = \left\{ {{{\mathbf{p}}_1},{{\mathbf{p}}_2}, \cdots ,{{\mathbf{p}}_n}} \right\}\) , \(Q = \left\{ {{{\mathbf{q}}_1},{{\mathbf{q}}_2}, \cdots ,{{\mathbf{q}}_n}} \right\}\),其中 \(\mathbf{p}_i\) 与 \(\mathbf{q}_i\) 对应。

我们希望找到一个刚体变换使得这两个集合下的点在最小二乘条件下完成对齐。即找到一个旋转矩阵 \({\mathbf{R}}\) 和平移矩阵 \({\mathbf{t}}\) , 满足对齐后的所有点距离平方加权和最小:

\[\left( {{\mathbf{R}},{\mathbf{t}}} \right) = \mathop {\arg \min }\limits_{{\mathbf{R}} \in SO\left( d \right),{\mathbf{t}} \in {\mathbb{R}^d}} \sum\limits_{i = 1}^n {{w_i}{{\left\| {({\mathbf{R}}{{\mathbf{p}}_i} + {\mathbf{t}}) - {{\mathbf{q}}_i}} \right\|}^2}} \]

求解步骤

经过一系列的复杂推导后,求解 \(\mathbf{R}\) 、\(\mathbf{t}\) 的步骤可以概括为以下几步:

1、计算两个点集的重心:

\[{\mathbf{\bar p}} = \frac{{\sum\nolimits_{i = 1}^n {{w_i}{{\mathbf{p}}_i}} }}{{\sum\nolimits_{i = 1}^n {{w_i}} }},{\mathbf{\bar q}} = \frac{{\sum\nolimits_{i = 1}^n {{w_i}{{\mathbf{q}}_i}} }}{{\sum\nolimits_{i = 1}^n {{w_i}} }} \]

2、计算去除重心后的新点集合:

\[{{\mathbf{x}}_i}: = {{\mathbf{p}}_i} - {\mathbf{\bar p}},\quad {{\mathbf{y}}_i}: = {{\mathbf{q}}_i} - {\mathbf{\bar q}},\quad i = 1,2, \cdots n. \]

3、计算 \(d \times d\) 协方差矩阵(covariance matrix):

\[{\mathbf{S = XW}}{{\mathbf{Y}}^T} \]

其中,\(\mathbf{X}\) 和 \(\mathbf{Y}\) 分别是以 \(\mathbf{x}_i\) 和\(\mathbf{y}_i\) 为列向量构成的 \(d \times n\) 矩阵,对角矩阵\(\mathbf{W} = diag(w_1,w_2,\cdots,w_n)\) 。

4、SVD 分解矩阵 \(\mathbf{S}\) :

\[{\mathbf{S = U\Sigma }}{{\mathbf{V}}^T} \]

5、求解旋转矩阵 \(\mathbf{R}\) :

\[{\mathbf{R}} = {\mathbf{V}}\left( {\begin{array}{*{20}{l}} 1&{}&{}&{}&{} \\ {}&1&{}&{}&{} \\ {}&{}& \ddots &{}&{} \\ {}&{}&{}&1&{} \\ {}&{}&{}&{}&{\det \left( {{\mathbf{V}}{{\mathbf{U}}^T}} \right)} \end{array}} \right){{\mathbf{U}}^T} \]

6、求解平移矩阵 \(\mathbf{t}\) :

\[{\mathbf{t}} = {\mathbf{\bar q}} - {\mathbf{R\bar p}} \]

推导过程

待补充,

参考文献

标签:RT,配准,mathbf,sum,矩阵,right,点云,bar,left
From: https://www.cnblogs.com/gshang/p/17417187.html

相关文章

  • 1102 Invert a Binary Tree
    题目:ThefollowingisfromMaxHowell@twitter:Google:90%ofourengineersusethesoftwareyouwrote(Homebrew),butyoucan'tinvertabinarytreeonawhiteboardsofuckoff. Nowit'syourturntoprovethatYOUCANinvertabinarytree!I......
  • airtest使用案例一则
    文档https://airtest.doc.io.netease.com/基本能力适用范围:支持的手机:android、iphone(含模拟器)服务端部署:linux、windows、mac功能Airtest框架:是一个跨平台的、基于图像识别的UI自动化测试框架《——一般用这个优点:跨平台缺点:不精确,能力受限——之前的使用场景:......
  • Echarts初学(一)
    一、安装在需要创建图表的组件中全局引入 图表组件中入门实例图表<scriptsetuplang="ts">//全局引入import*asechartsfrom"echarts";import{onMounted}from"vue";importTestChartsfrom"@/components/TestCharts.vue";onMounted(()=&g......
  • 可视化:雷达图(Radar Chart)
    什么是雷达图?雷达图(RadarChart)也称为蜘蛛图、网络图或极坐标图,是一种用于可视化多变量数据的图表。该图表由一系列从中心点向外辐射的辐条组成,每个辐条代表一个不同的变量。数据使用线或区域绘制在每个辐条上,最终结果看起来像蜘蛛网。雷达图不同类型雷达图(RadarChart)有三种变体:......
  • PIP SSL:CERTIFICATE_VERIFY_FAILED
    今天再安装pyserial的时候一直提示这个错误,电脑代理什么的都关掉了还是有这个错误,然后根据网上的说明,添加添加信任主机选项后就成功安装上pyserial了。pip--trusted-hostpypi.tuna.tsinghua.edu.cninstallpyserial......
  • 【NLP】Bert下载
    不区分大小写bert-base-uncased版本如果要下载其他版本点modelcard往下滑,根据需要选择对应版本比如这里下载bert-base-uncased版本,点进去后点filesandversions然后下载红框圈住的,其他的可以下也可以不下......
  • CF1228D Complete Tripartite
    有些题解够了,这题和三分图的判定没有什么关系……这里主要是一个转化,一个点会和所以不与自己相连的点处于相同的集合中。换句话说,如果两个点在同一个集合内,那与这两个点相连的点的集合是完全相同的。这里使用了哈希来判定,另外,如果有孤立的点存在,则要特判。constintmaxN=1e5+......
  • reportlab 中文乱码
    1参考地址: Python3操作pdf文件之ReportLab第1篇--解决中文乱码问题_reportlab中文字体_老陈说编程的博客-CSDN博客  2 ......
  • TypeError: Cannot read properties of null (reading 'name')
    报错如下:错误代码:searchList(){this.entity={}this.edit=nullletquery={}query.traceCode=this.codethis.loading=truecodeApi.queryTraceCode(query).then(res=>{...},err=>{......
  • 用户画像是user profile ?还是user portrait?还是user persona?
    用户画像  userprofile、userportrait、userpersona三者的区别:用户画像(userpersona)是产品设计人员在产品规划阶段,基于对用户的真实需求虚拟出的典型人物角色;用户画像(userprofile)是基于大量用户积累下的数据,结合相应的需求和场景沉淀出的一系列标签,这些标签共同为提供......