我对 cvDecomposeProjectionMatrix 函数有疑问。返回的平移向量是 x,y,z,w。w 不是 1 或 0,所以我将 x,y,z 除以 w 以获得世界空间的标准化 x,y,z 坐标。但是,尽管跟踪特征在帧之间具有很高的准确性,但坐标随后会以极大的不准确度到处跳跃。
欧拉角也返回不正确。尽管它们为帧返回正确的相应旋转轴,但它过度旋转。例如,在 n 秒内沿 x 轴将相机总共旋转 45 度会从分解矩阵产生 360 度的旋转。
使用分解投影矩阵的最准确方法是什么?
详细信息:
斯坦福大学的一位教授使用 opencv 编写了一段很好的示例代码来计算光流。
您可以在斯坦福网站上的 pdf 末尾找到它。我会包含代码,但评论使论坛帖子有点冗长。http://robots.stanford.edu/cs223b05/notes/CS%20223-B%20T1%20stavens_opencv_optical_flow.pdf
我已经建立了该样本,并且可以准确地跟踪各种视频格式的特征,但从这些特征估计相机位置和旋转已证明是一件令人头疼的事情。