使用基本矩阵来计算使用OpenCV的坐标转换

Juk*_*rpa 5 c++ opencv linear-algebra computer-vision

我试图计算两个图像之间几个点的坐标对应关系.我有一组其对应关系已知的点,我将它们用于OpenCV findFundamentalMatrix(),以便找到基本矩阵.我验证x^T * F * x' = (0)了每一点,结果总是正确或非常接近.

问题是,现在我想使用第一个图像(y)和基本矩阵(F)上的点的坐标,以便找到第二个图像(y')上的点的坐标.我首先想到的只是简单地使用上面的等式,但只给出了zy'一点,可以有无穷无尽的解决方案.

我怎样才能使用基本矩阵来计算翻译?

为了更清楚:知道基本矩阵"链接"两个投影,我如何使用它来转换(a, b, 1)从第一个投影到第二个投影的任何已知点的坐标?

考虑到我们知道a,b并且F在此方程式为:(A",B",1)Ť*F*(A,B,1)=(0)

我做了一个简单的绘图作为例子:http://i.imgur.com/drNr2.jpg.我们的想法是找到(xq, yq)投影2中红点的坐标,考虑到我们知道它在投影1中的坐标和两个投影中所有其他点的坐标(以及其他一些因为找到基本矩阵的算法实际需要在至少8分)

另一个精度:在我的例子中,已知点是共面的,但研究点不一定是.

我希望这让我的问题更清楚:)

fir*_*ant 3

基本矩阵将一幅图像中的点转换为另一幅图像中的线。您能否详细说明一下

我还能如何使用基本矩阵来计算翻译?

请。告诉我们您想要实现的目标,或许通过一个例子也会有所帮助。

编辑:如果您已经校准了相机,您可以E从基本矩阵计算基本矩阵F。E 将一幅图像中的点变换为另一幅图像中的点。当然,前提是要有内部矩阵。如果K是内部矩阵E=transpose(K)FK。另一种方法是找到另一幅图像中某个点的对应线,然后沿着这条线搜索外观与第一幅图像中该点周围的补丁最相似的补丁。还有其他一些方法,但确实需要有关问题的更多信息来判断哪种方法适合您的情况。

编辑2:在图中你得到的点是共面的。因此,单应性映射了两个图像之间的点位置,并且不需要找到基本矩阵。OpenCV有估计单应性的函数,只需要四个点。