【发布时间】:2011-01-25 02:57:06
【问题描述】:
我正在使用一些代码,它输出一个 3x3 旋转矩阵和一个表示相机方向和位置的平移向量。
但是,文档指出,要获得相机的位置,必须将转置和反转的旋转矩阵乘以平移向量。这是否意味着原始向量不是相机的位置?如果不是,那个原始向量代表什么?
【问题讨论】:
标签: math 3d geometry computer-science computer-vision
我正在使用一些代码,它输出一个 3x3 旋转矩阵和一个表示相机方向和位置的平移向量。
但是,文档指出,要获得相机的位置,必须将转置和反转的旋转矩阵乘以平移向量。这是否意味着原始向量不是相机的位置?如果不是,那个原始向量代表什么?
【问题讨论】:
标签: math 3d geometry computer-science computer-vision
我假设您获得的 R(旋转矩阵)和 t(平移向量)是一个以(0,0,0) 为原点的世界坐标系.
使用 R 和 t 您现在可以将点从世界坐标系 (WC) 移动到相机坐标系 (CC),即 Xc = RX + t 其中 X 是 WC中的 3D 点> 和 Xc 在 CC 中是 X (即从相机的角度来看)。假设我们正在处理刚体,这是适用的,因此我们只需旋转点然后平移它。
现在,您需要找到相机中心的坐标,即CC的原点,或者当Xc = 0时:
0 = RC + t 其中C 是WC 中相机中心的3D 坐标。通过求解 C 我们得到,
C = -R-1t
顺便说一句,
转置和乘以旋转矩阵不会改变旋转矩阵 --- 旋转矩阵是正交的,这意味着 它的转置等于它的逆,因此,(RT)-1 = R.
【讨论】:
E = cv::findEssentialMat() 的结果在两个连续帧之间返回R、t。你怎么能从这个逻辑中获得相机中心?
这种情况下的原始向量很可能是平移后坐标中的平移向量。或者之前 - 这完全取决于您的个人观点。
问题是,你有两个坐标系,每个向量都可以在每个坐标系中表示。旋转矩阵允许您将事物从一个系统转换到另一个系统。 “将转置和反转的旋转矩阵乘以”就是反向变换。
【讨论】: