假设我只使用一台校准相机。从这台摄像机获得了图像A和B。我知道了A和B之间的单应性,这是通过OpenCV的findHomography()计算出来的。
我知道了图像A的姿态(旋转矩阵R和平移矢量t)需要图像B的姿势。一旦我知道了,我想我将能够计算后续图像的每个其他姿势。
您知道计算B姿势的实现吗?我在网上找到了几篇文章,但找不到一个易于实现的解决方案...

我发现了一个使用OpenCV的不错的实现:http://nghiaho.com/?p=1298

评论

我不确定我是否了解如何使用您的代码。我使用OpenCV来检索Homography,但是当我通过算法发送该Homography时,它总是返回此内容。 cameraPose [1、0、0、0; 0,1,0,0; 0,0,1,0]

#1 楼

即使我的回答对您来说太迟了,也许其他人也觉得这很有用。我有来自Homography的openCV姿势的代码。我在这个非常有用的网站euclideanspace上找到了该方法。


评论


$ \ begingroup $
我已经在代码中使用了您的函数。使用这种方法计算出的姿势矩阵始终为[1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 0]。你有什么解释吗?
$ \ endgroup $
–穆罕默德·阿里·阿桑(Muhammet Ali Asan)
15年6月12日在13:58

$ \ begingroup $
您是否使用A的姿势?看来您只使用输入H
$ \ endgroup $
– Guig
17年6月21日在14:19

$ \ begingroup $
即使使用从已知姿势直接计算出的单应性矩阵,该方法也不是很准确。但是,使用迭代过程可以改善结果,在迭代过程中,您可以从估计的姿态中获取矩阵,然后将其求逆并将其应用于原始输入。从该残差单应性中获取姿势参数,更新姿势估计,等等,直到收敛为止。
$ \ endgroup $
–除以零
20年2月2日,22:56

#2 楼

您可以使用在Opencv 3.0+中实现的同构分解方法。您必须通过比较相机法线和拍摄第一张图像时的相机法线来选择正确的组