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

问题描述 投票:3回答:2

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

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

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

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

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

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

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

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

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

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

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

geometry quaternions affinetransform rotational-matrices pose-estimation
2个回答
3
投票

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

  1. 创建3个单位向量 x=(1,0,0),y=(0,1,0),z=(0,0,1) 并对它们应用旋转并调用输出 x(i),y(i),z(i) 它只是将matrix(i)应用于(0,0,0)
  2. 对所有测量都这样做
  3. 现在平均所有向量 X=avg(x(1),x(2),...x(n)) Y=avg(y(1),y(2),...y(n)) Z=avg(z(1),z(2),...z(n))
  4. 纠正矢量值 所以再次制作每个X,Y,Z单位向量,并将更接近旋转轴的轴作为主轴。它将保持原样并重新计算剩余的两个轴作为主轴和另一个矢量的交叉积,以确保正交性。注意乘法顺序(操作数的错误顺序将否定输出)
  5. 构造平均变换矩阵 将transform matrix anatomy视为原点,您可以使用测量矩阵的平均原点

1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.