寻找翻译和规模上的两组穴位得到最小均方误差在他们的距离是多少? [英] Finding translation and scale on two sets of points to get least square error in their distance?

查看:146
本文介绍了寻找翻译和规模上的两组穴位得到最小均方误差在他们的距离是多少?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两套3D点(原件及重建)和关于对信件的信息 - 这点从一组重presents第二个。我需要找到3D平移和缩放系数,其将重构设定的平方距离之和将至少(旋转将是很好过,但点都同样地旋转,所以这不是主要优先事项和简单起见,可能会被省略,速度)。所以我的问题是 - 这是解决了在互联网上的某个地方?就个人而言,我会用最小二乘法,但我没有太多的时间(虽然我在数学上有所好,我不经常使用它,所以这将是我最好避免它),所以我想如果存在使用其他的解决方案。我用的OpenCV的C ++ preFER的解决方案,例如,但仅靠算法不够好。

I have two sets of 3D points (original and reconstructed) and correspondence information about pairs - which point from one set represents the second one. I need to find 3D translation and scaling factor which transforms reconstruct set so the sum of square distances would be least (rotation would be nice too, but points are rotated similarly, so this is not main priority and might be omitted in sake of simplicity and speed). And so my question is - is this solved and available somewhere on the Internet? Personally, I would use least square method, but I don't have much time (and although I'm somewhat good at math, I don't use it often, so it would be better for me to avoid it), so I would like to use other's solution if it exists. I prefer solution in C++, for example using OpenCV, but algorithm alone is good enough.

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

If there is no such solution, I will calculate it by myself, I don't want to bother you so much.

解决方法:(从你的答案)
对于我来说,Kabsch alhorithm;
基本信息: http://en.wikipedia.org/wiki/Kabsch_algorithm
通用的解决方案: http://nghiaho.com/?page_id=671

SOLUTION: (from your answers)
For me it's Kabsch alhorithm;
Base info: http://en.wikipedia.org/wiki/Kabsch_algorithm
General solution: http://nghiaho.com/?page_id=671

仍然没有解决: 我还需要规模。从SVD刻度值不理解我;当我需要的所有轴系规模约1-4(由我估计),SVD规模约[2000,200,20],这是没有帮助的。

STILL NOT SOLVED: I also need scale. Scale values from SVD are not understandable for me; when I need scale about 1-4 for all axises (estimated by me), SVD scale is about [2000, 200, 20], which is not helping at all.

推荐答案

您可能想尝试ICP(迭代最近点)。 由于两套3D点,它会告诉你的转换(转+译)从第一组去第二个。 如果你有兴趣在一个C ++轻量级实现,尝试libicp。

You might want to try ICP (Iterative closest point). Given two sets of 3d points, it will tell you the transformation (rotation + translation) to go from the first set to the second one. If you're interested in a c++ lightweight implementation, try libicp.

祝你好运!

这篇关于寻找翻译和规模上的两组穴位得到最小均方误差在他们的距离是多少?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆