我有 3 个极点对应,即三个({x1, y1, 1}, {x2, y2, 1})
构造。实际上,我只有(x1, y1, y2)
,因为x2
包含巨大的错误。这些坐标已经居中并归一化。给定 3D 旋转矩阵RotM
,这里是我计算一个点的残差的方法:
residual(RotM) = y2' - y2
where
rotated = RotM . {x1, y1, 1}
{x2', y2', 1} = rotated / rotated[3]
当然,我可以对这 3 个残差进行数值优化并得到RotM
,因为它也有 3 个自由度。但我想通过分析获得旋转。
所以问题是,给定三个(x1, y1, y2)
三元组,计算旋转矩阵的公式是什么?我也会对欧拉角或四元数感到满意。
笔记:
- 旋转很小。准确地说,对于欧拉角,丢弃泰勒级数的三次项是可以接受的。
- Wolfram Mathematica 拒绝解决这个问题。
- 如果我没记错的话,这种变换称为“透视变换”。