使用内部和外部相机参数进行图像匹配

时间:2018-09-27 11:59:35

标签: opencv image-processing camera-calibration

目前,我有一个图像数据集(帧序列),并且我具有固有的相机校准矩阵。另外,对于每个图像,我都有外部参数(旋转和平移)。

我想知道是否有可能使用该参数在每对图像之间找到正确的像素对应。

我发现了两个不同视角之间每个对应点的关系traslation(t)和旋转(R)。

enter image description here

我想使用上面的图像,只需固定一个“ x”点(在齐次坐标中)并为“ x'”求解方程组,但是我不知道使用的是哪种操作(符号) 。如果有人知道如何使用matlab做到这一点,希望对您有所帮助。

此外,如果还有另一种使用相同信息发现匹配项的方法,希望有人帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

否,此信息不足以找到帧之间的点对应关系。我将首先说明我认为您可以使用给定的信息做什么,然后我们将了解为什么仅凭Essentials不可能实现像素匹配。

  • 您可以做什么。对于点m,您可以使用基本矩阵在m'所在的另一幅图像上找到线。假设您在问题中输入的XX'分别投影到mm',即

    //K denotes the intrinsics matrix
    m=KX
    m'=KX'
    

    从您的方程式开始,我们有:

     X^{T}EX'=0  ==>  m^T K^{-T} E K^{-1} m' 
    

    我们将注意的K^{-T} E K^{-1}矩阵F被称为基本矩阵,现在您在图像平面的2d点之间具有约束:

     m^TFm'=0
    

    请注意,mm'是用齐次坐标表示的3d向量。这里要注意的有趣之处是Fm'm在第一张图像上的线(因为上面给出的约束只不过是m和{{ 1}})。同样,Fm'是另一张图片上m^TF所在的行。因此,要找到m'的匹配项,您可以在m附近进行搜索。

  • 为什么无法实现像素匹配。让我们从直观的角度看一下约束Fm'的含义。基本上说的是我们期望xEx'=0x和基线x'共面。假设您修复了T,并且正在寻找满足x的点。然后,尽管您图中的xEx'=0满足了此约束,但下面的数字中的每个点x'(从n投影)也将是一个不错的选择:

    enter image description here

    ,表明正确的匹配取决于您对y深度的估计,而您没有。