【问题标题】:What is the correct way to average several rotation matrices?平均几个旋转矩阵的正确方法是什么?
【发布时间】:2018-07-25 11:11:53
【问题描述】:

我从许多帧的姿态估计中得到了许多旋转向量(当相机静止时),我想要最准确的测量。理论上我可以通过旋转向量\矩阵\其他类型的数据进行平均吗?还是那错了? 此外,我如何判断旋转向量\矩阵何时是异常值(即与所有其他值非常不同并且可能是误算)?例如,在翻译矩阵中,我看到每个条目的厘米差异,并且可以有一个直观的阈值。有没有类似的轮换方式?

【问题讨论】:

  • 谢谢,我正在使用欧几里得系统而不是四元数,所以我仍然不确定如何在欧几里得系统中进行操作。
  • 有时在不同系统之间临时转换以在一个系统中执行困难的计算可能是明智的。不确定这里是否是这种情况;)

标签: opencv matrix opencv3.0 aruco


【解决方案1】:

如果您想对“接近”的旋转进行平均,一种方法是寻找与说数字的平均值类似的使“分散”最小化的值。对于数字 x[],均值是最小化的

disp = Sum{ i | sqr( x[i]-mean)}

所以对于旋转R[],我们可以寻求一个旋转Q来最小化

disp = Sum{ i | Tr( (R[i]-Q)'*(R[i]-Q))}

这种特定的分散度量导致了计算 Q 的实用方法:

a/ 计算旋转的“平均矩阵”

M = Sum{ i | R[i] } /N

b/ 取那个的 SVD

M = U*D*V'

c/ 计算最接近 M 的旋转

Q = U*V'

【讨论】:

    【解决方案2】:

    当您使用“最准确”一词时,您可能不会平均旋转矩阵,特别是不会。但是让我们回到开始:矩阵乘法,即旋转,不通勤。 ABC != BAC != CBA ......结果可以想象的那样大相径庭。

    就异常值而言:使用四元数而不是旋转矩阵。首先,可以最大限度地减少计算步骤的数量,从而提高性能,在线上有大量的实现。其次,通过在四元数上建立欧几里得范数,你可以很好地衡量异常值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 2013-06-05
      • 2015-12-10
      • 2014-09-15
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多