仅使用平移和旋转将一组2d点与另一组对齐

And*_*rew 11 math geometry opencv translation rotation

我在OpenCV工作,但我认为没有这方面的功能.我可以找到一个查找仿射变换的函数,但是仿射变换包括缩放,我只想考虑旋转+平移.

想象一下,我在2D中有两组积分 - 让我们说每组都有50分.

例如,设置A = {x1,y1,x2,y2,...,x50,y50}

设置B = {x1',y1',x2',y2',...,x50',y50'}

我想找到最接近映射集A到集合B的旋转和平移组合.我想我将定义"最接近"作为最小化A中的点与BIe中的对应点之间的平均距离,最小化(x1之间的平均距离) ,y1)和(x1',y1')等

我想我可以使用蛮力测试所有可能的翻译和旋转,但这将是非常低效的.有谁知道更简单的方法?

谢谢!

har*_*ath 7

就接近矩阵的奇异值分解(点对之间的距离)而言,该问题具有非常优雅的解决方案.这个名字就是正交普罗克拉斯特斯问题,这是希腊传说中一位为旅行者提供适合任何人的床铺的人.

解决方案来自于找到与给定(不一定是正交)矩阵最接近的正交矩阵.

  • @Andrew:在我看来,它是SVD的一个整洁/令人惊讶的应用.Peter Schonemann的解决方案的动机是测试心理学/社会科学中的指标.为了确定你是否要排除反射(而不是平移和旋转),需要稍微调整一下奇异值. (2认同)