目前,我有一个图像数据集(帧序列),并且我具有固有的相机校准矩阵。另外,对于每张图像,我都有外部参数(旋转和移动)。
我想知道是否有可能使用该参数在每对图像之间找到正确的像素对应。
我发现了两个不同透 View 之间每个对应点的关系traslation(t)和旋转(R)。
我猜想使用上面的图像,只需要固定一个“x”点(在齐次坐标中)并为“x'”求解方程组,但是我不知道正在使用什么运算(符号)。如果有人知道如何使用matlab做到这一点,希望对您有所帮助。
另外,如果还有使用相同信息发现匹配项的另一种方法,希望有人帮助。
谢谢
最佳答案
不,此信息不足以找到帧之间的点对应关系。我将首先说明我认为您可以使用给定的信息做什么,然后我们将了解为什么仅凭Essentials不可能获得像素与像素的匹配。
m
,您可以使用基本矩阵在m'
所在的另一张图像上找到该行。假设您在问题中给出的X
和X'
(分别)被投影为m
和m'
,即//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
注意,
m
和m'
是用齐次坐标表示的3d vector 。在这里需要注意的有趣事情是Fm'
是m
位于第一张图像上的行(因为上面给出的约束只不过是m
和Fm'
之间的点积)。类似地,m^TF
是另一幅图像上预期m'
所在的行。因此,您可以找到m
的匹配项,是在Fm'
附近进行搜索。 xEx'=0
的含义。基本上说的是,我们期望x
,x'
和基线T
共面。假设您修复了x
,并且寻找满足xEx'=0
的点。然后,尽管您图中的x'
满足此约束,但如下图所示的每个点n
(从y
投影)也将是一个不错的选择:这表明正确的匹配取决于您对
x
的深度的估计,而您没有。 关于opencv - 使用内部和外部相机参数进行图像匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52536520/