首页 > 编程语言 >点云配准算法-旋转矩阵估计-Kabsch-Umeyama algorithm

点云配准算法-旋转矩阵估计-Kabsch-Umeyama algorithm

时间:2023-10-02 12:55:12浏览次数:46  
标签:配准 matrix algorithm Umeyama 矩阵 旋转 Kabsch

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.

标签:配准,matrix,algorithm,Umeyama,矩阵,旋转,Kabsch
From: https://www.cnblogs.com/name555difficult/p/17739857.html

相关文章

  • javascript: Sorting Algorithms
     //SortingAlgorithmsintJavaScripthttps://www.geeksforgeeks.org/sorting-algorithms//***fileSort.js*1.BubbleSort冒泡排序法*@paramarry*@paramnszie*/functionBubbleSort(arry,nszie){vari,j,temp;varswapped;for(i=0;i......
  • 进化算法中的遗传算法(Genetic Algorithms)
    进化算法中的遗传算法(GeneticAlgorithms)引言进化算法是一类基于自然进化原理的优化算法,通过模拟生物进化过程中的选择、交叉和变异等操作,来求解复杂问题。遗传算法(GeneticAlgorithms)是进化算法中最为经典和常用的一种方法。本文将介绍遗传算法的基本原理、核心操作和应用领域,以及......
  • java: Sorting Algorithms
     /***encoding:utf-8*版权所有2023©涂聚文有限公司*许可信息查看:https://www.geeksforgeeks.org/sorting-algorithms/*描述:https://www.geeksforgeeks.org/sorting-algorithms/*#Author:geovindu,GeovinDu涂聚文.**#IDE:IntelliJID......
  • CSharp: Sorting Algorithms
     /*****************************************************************//***\fileSortingAlgorithm.cs*\briefcsharpSortingAlgorithms算法*IDEvs2022C#.net6.0*\authorgeovindu*\dateSeptember282023**************************......
  • cpp: Sorting Algorithms
     /*****************************************************************//***\fileSortingAlgorithms.h*\brief排序*\IDEvs2022C++20*\authorgeovindu*\dateSeptember282023********************************************************......
  • c: Prim's Algorithm
    PrimsAlgorithm.h /*********************************************************************************@filePrimsAlgorithm.h*@briefPrim'sAlgorithm*@author(geovindu,GeovinDu,涂聚文)*@date2023-09-26*@copyr......
  • c: Dijkstra's Algorithm
     DijkstrasAlgorithm.h /*********************************************************************************@fileDijkstrasAlgorithm.h*@briefDijkstra'sAlgorithminC迪杰斯特拉算法最短路径算法https://www.programiz.com/dsa/dijkstra......
  • c: Ford - Fulkerson Algorithm
     FordFulkersonAlgorithm.h /*********************************************************************************@fileFordFulkersonAlgorithm.h*@briefFord-FulkersonAlgorithminCFord-Fulkerson算法(FFA)是一种贪婪算法,用于计算流网络......
  • c: Kruskal Algorithm
    KruskalAlgorithm.h /*****************************************************************//***\fileKruskalAlgorithm.h*\briefKruskalAlgorithm克鲁斯卡尔算法*IDE:VSCODEc11https://github.com/hustcc/JS-Sorting-Algorithm/blob/master/2.selectio......
  • python: Sorting Algorithms
     #encoding:utf-8#版权所有2023涂聚文有限公司#许可信息查看:PythonSortingAlgorithms#描述:*https://www.programiz.com/dsa/counting-sort#*https://www.geeksforgeeks.org/sorting-algorithms/#Author:geovindu,GeovinDu涂聚文.#IDE:PyC......