如何根据openCV中的两组功能估计相机姿势?

时间:2015-07-30 20:33:18

标签: opencv image-processing computer-vision opencv3.0

我有一系列图像。我想估计我序列中每帧的相机姿势。

我计算了每个帧中的特征,并通过序列跟踪它们。我现在想估计每帧的相机姿势。我这样做是使用以下openCV例程:

Mat essentialMatrix = findEssentialMat(pointsA, pointsB, f, pp, RANSAC, 0.999, 1.0, mask);
recoverPose(essentialMatrix, pointsA, pointsB, R, T, focalLength, principlePoint);

其中pointsA和pointsB由两个帧中存在的要素的2D坐标组成。 pointsA与pointsB之前的帧相关联。

我遇到的问题是R和T估计非常嘈杂,我认为我的姿势估计有问题。

我的问题是,如何根据两组功能估算相机姿势?

注意:我熟悉this已回答的问题。但是,我相信openCV3现在包含更有说服力地解决这个问题的方法。

以下是X平移的帧间差异。如您所见,它们非常不同(平滑=预期,锯齿状=估计)......

enter image description here

1 个答案:

答案 0 :(得分:0)

您是否曾尝试查看功能中是否存在错误匹配?你对比赛中的特征位置有什么样的噪音?

OpenCV实现了一个非常基本的RANSAC,在现实生活中并不是很强大。你需要传递一组非常好的匹配(并且可能有100多个功能,以便内部计算更加健壮)。

也可能是RANSAC选择退化配置(例如一条线上的点)作为最佳配置。

其他问题可能是您传递的点大部分位于同一物体/平面上,因此算法没有足够的信息来可靠地计算姿势。

相关问题