三维旋转的平均值和传播度量

时间:2015-07-10 18:56:52

标签: geometry quaternions affinetransform rotational-matrices pose-estimation

我已经看过几个类似的问题,并且对我可能会尝试的内容有一些想法,但我不记得看到任何关于传播的问题。

所以:我正在研究一种测量系统,最终以计算机视觉为基础。

我采用N次捕获,并使用一个库来处理它们,该库以4x4仿射变换转换矩阵的形式输出姿势估计。

这些姿势估计中存在一些噪音。每个旋转轴的欧拉角的标准偏差小于2.5度,因此所有方向彼此非常接近(对于所有欧拉角接近0或180的情况)。小于0.25度的标准误差对我来说很重要。但我已经遇到了欧拉角特有的问题。

我想平均所有这些非常接近的姿势估计以获得单个最终姿势估计值。而且我还想找到一些传播的度量,以便我可以估计准确性。

我知道“平均”实际上并没有很好地定义旋转。

(为了记录,我的代码是在Numpy-heavy Python中。)

我也可能想要对此平均值进行加权,因为已知某些捕获(和某些轴)比其他捕获更准确。

我的印象是,我可以只取平移和标准差的平移向量,旋转我可以转换为四元数,取平均值,并以OK精度重新标准化,因为这些四元数非常接近。

我也听说过在所有四元数中都提到了最小二乘法,但是我对如何实现这种方法的大部分研究都是一个令人沮丧的失败。

这可行吗?在这种情况下,是否有一个相当明确的传播衡量标准?

2 个答案:

答案 0 :(得分:3)

如果没有关于几何设置的更多信息,很难回答。无论如何轮换我会:

  1. 创建3个单位向量

    x=(1,0,0),y=(0,1,0),z=(0,0,1)
    

    并对它们应用旋转并调用输出

    x(i),y(i),z(i)
    

    只是在matrix(i)

  2. 上应用(0,0,0)位置
  3. 为您的所有测量执行此操作

  4. 现在平均所有向量

    X=avg(x(1),x(2),...x(n))
    Y=avg(y(1),y(2),...y(n))
    Z=avg(z(1),z(2),...z(n))
    
  5. 更正矢量值

    所以再次制作每个X,Y,Z单位向量,并将更接近旋转轴的轴作为主轴。它将保持原样并重新计算剩余的两个轴作为主轴和另一个矢量的交叉积,以确保正交性。注意乘法顺序(操作数的错误顺序将否定输出)

  6. 构建平均变换矩阵

    请参阅transform matrix anatomy作为原点,您可以使用测量矩阵的平均原点

答案 1 :(得分:1)

Moakher写道a paper解释了基本上有两种方法可以取平均旋转矩阵。第一个是加权平均值,然后是使用SVD预测回SO(3)。第二个是黎曼中心。那是一个更接近几何平均值的概念,计算起来更复杂。