首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找出两组点的平移和尺度,从而得到距离上的最小平方误差?

找出两组点的平移和尺度,从而得到距离上的最小平方误差?
EN

Stack Overflow用户
提问于 2012-11-17 17:15:08
回答 7查看 22.9K关注 0票数 22

我有两组3D点(原始的和重构的)和关于对的对应信息--从一组中的点代表第二组。我需要找到3D平移和缩放因子来转换重建集,使平方距离之和最小(旋转也很好,但是点也是同样旋转的,所以这不是主要的优先级,为了简单和速度,这可能被省略)。所以我的问题是--这个问题在互联网上得到解决了吗?就我个人而言,我会使用最小二乘法,但我没有太多的时间(虽然我有点擅长数学,但我不经常使用它,所以最好避免它),所以如果它存在的话,我想使用别人的解决方案。我更喜欢C++中的解决方案,例如使用OpenCV,但是算法本身就足够好了。

如果没有这样的解决方案,我会自己计算,我不想打扰你这么多。

解决方案:(来自您的答案)

对我来说,这是一种卡布希算法;

基本信息:算法

通用解决方案:id=671

还没有解决:我也需要规模。SVD的标度值对我来说是不可理解的;当我需要所有轴的1-4标度时(据我估计),SVD的标度约为2000,200,20,这一点也没有帮助。

EN

Stack Overflow用户

发布于 2015-07-28 07:37:26

如果你的点在所有方向上都是一致的(我也不能理解SVD-s标度矩阵),就可以在没有SVD的情况下推断出尺度。下面是我如何解决同样的问题:

  1. 测量每个点到点云中其他点的距离,以得到一个2d的距离表,其中(i,j)处的条目是范数( point _ in _J)。对另一个点云做同样的事情,所以你得到两个表-一个是原始的,另一个是重构的点。
  2. 将一个表中的所有值除以另一个表中的相应值。因为这些点是相互对应的,所以距离也是如此。理想情况下,结果表的所有值都是相等的,这就是比例。
  3. 部门的中值应该非常接近您正在寻找的规模。平均值也是接近的,但我选择中位数只是为了排除异常值。

现在,您可以使用标度值来缩放所有重建的点,然后继续估计旋转。

提示:如果点云中有太多的点来找出它们之间的距离,那么一个较小的距离子集也会工作,只要这两个点云的子集是相同的。理想情况下,在没有测量噪声的情况下,只有一个距离对才能工作,例如,当一个点云是直接从另一个点云旋转而来的时候。

票数 0
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13432805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档