c# - 迭代最近点实现

标签 c# algorithm computational-geometry

我目前正在使用以下伪代码在 C# 中实现 ICP 算法。从ICP Powerpoint获得

function ICP(Scene,Model)
 begin
  E` = + ∞;
  (Rot,Trans) = In Initialize-Alignment(Scene,Model);
  repeat 
E = E`;
Aligned-Scene = Apply-Alignment(Scene,Rot,Trans);
Pairs = Return-Closest-Pairs(Aligned-Scene,Model);
(Rot,Trans,E`) = Update-Alignment(Scene,Model,Pairs,Rot,Trans);
  Until |E`- E|  < Threshold
  return (Rot,Trans);
 end    

但是我不完全确定应该如何实现更新对齐?如果有人能比 powerpoint 解释得更清楚一点,那就太好了:)我已经编写了计算对应误差和对齐误差的方法,但是我不确定如何应用这些方法来获得新的更新对齐。

最佳答案

幻灯片 10 上的公式(它们实际上是编写相同公式的两种等效方式)为您提供对齐的均方误差。您想要选择旋转和平移(q 向量是这些的组合)以最小化均方误差。 MSE 是 q 向量的一个很好的可微分函数,因此很容易使用诸如共轭梯度法之类的东西从当前比对开始找到一个(至少在局部)最小化 MSE 的新比对。

关于c# - 迭代最近点实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4423016/

相关文章:

c# - (413请求实体太大

C# WinAPI 点击菜单项

c# - 在每个方法中初始化一个新的套接字是一件好事吗?

algorithm - 是否有一些众所周知的算法可以将用户的绘图变成平滑的形状?

c# - OnMouseOver() 不适用于 child

algorithm - 如何找到最大的总和和最小的正差?

c# - 如何在 C# 中解决 Randomize in place 算法?

algorithm - 差异算法?

analytics - 包含混合数据类型(离散和连续)的向量的相似性度量

java - 如何对角度值进行低通滤波