Computer vision 如何从单应矩阵计算旋转和平移矩阵?

Computer vision 如何从单应矩阵计算旋转和平移矩阵?,computer-vision,emgucv,homography,Computer Vision,Emgucv,Homography,我已经使用emgucv C中的SURF对同一场景的两幅图像进行了比较,这两幅图像是由一台具有不同视角的相机拍摄的(左视角和右视角)。它为我提供了一个用于二维变换的3x3单应矩阵。但现在我想使用DirectX在3D环境中制作这两个图像。要做到这一点,我需要计算3D格式中第二个图像从右到左的相对位置和方向。如何计算第二幅图像的旋转和平移矩阵 我还需要第二张图像的z值 我读了一篇叫做“同源分解”的文章。是这样吗 有人熟悉单应分解吗?有什么算法可以实现吗 提前感谢您的帮助。单应仅适用于平面场景,即:所有

我已经使用emgucv C中的SURF对同一场景的两幅图像进行了比较,这两幅图像是由一台具有不同视角的相机拍摄的(左视角和右视角)。它为我提供了一个用于二维变换的3x3单应矩阵。但现在我想使用DirectX在3D环境中制作这两个图像。要做到这一点,我需要计算3D格式中第二个图像从右到左的相对位置和方向。如何计算第二幅图像的旋转和平移矩阵

我还需要第二张图像的z值

我读了一篇叫做“同源分解”的文章。是这样吗

有人熟悉单应分解吗?有什么算法可以实现吗


提前感谢您的帮助。

单应仅适用于平面场景,即:所有点都是共面的。如果是这种情况,那么单应是一种投影变换,它可以分解为它的分量


但是如果你的场景不是共面的,我认为你的描述就是这样的,那么需要做更多的工作。而不是单应性,你需要计算出对你有用的单应性。基本矩阵是相机固有矩阵K、两个视图之间的相对旋转R和平移t的组合。如果你知道K,那么恢复旋转和平移是非常简单的。看起来emgucv有很多方法来恢复旋转和平移。我不熟悉他们的特定方法,但这些方法通常涉及使用已知几何体拍摄场景的多张图像

要计算相机运动,请精确旋转和平移到所需的比例因子

例如,使用八点法计算基本矩阵F 算法 计算基本矩阵E=A'FA,其中A为固有摄像机矩阵 通过SVD将定义为Tx*R的分解为E=ULV' 创建一个特殊的3x3矩阵

    0 -1  0   
W = 1  0  0      
    0  0  1  
这有助于运行分解:

R=UW-1VT,Tx=ULWUT,其中

由于E可以有一个任意符号,W可以用Winv代替,我们有4个不同的解决方案,必须选择在相机前面产生最多点的解决方案。
你问这个问题已经有一段时间了。到目前为止,关于这个问题有一些很好的参考资料

其中之一是马云的3D图像邀请,第五章在这里免费


此外,Peter Corke的Vision工具箱包括执行此操作的工具。然而,他没有解释太多的分解数学

是平面的图像吗?同形图仅适用于平面。感谢jlewis42对这一问题的关注。但我计算基本矩阵时使用u saidus随机生成点并使用同形图进行投影,并且我还使用EmguCV的棋盘法计算相机固有矩阵。但我找不到任何直接从基本矩阵得到R和T的方法。之后,我计算了中描述的基本矩阵,得到了中描述的R和T,因此它没有给出一个可接受的答案。错误在哪里?不幸的是,我无法回答这个问题,而不知道结果是如何错误的。这里有几件事需要研究:你确定你所有的点对应都是有效的吗?使用极线几何检查基本矩阵是否正确。基本上,如果你把左图中的一个点乘以基本矩阵,就会得到右图中一条直线的方程,形式为ax+by+c=0。右图中的对应点将位于该线上。还可以尝试重新组合K、R和t,看看您是否返回相同的FThanks jlewis42。我将查看这些内容并尝试修复错误。再次感谢。@jlewis42:您能否提供一些详细信息,说明当所有点都共面时如何分解投影变换。感谢您的参考。我认为Tx矩阵是矩阵乘法的叉积,因此需要在第一行第二列中包含-tz和非-Tx。
      0  -tx  ty
Tx =  tz  0   -tx
     -ty  tx   0