gpt4 book ai didi

c++ - 使用基本矩阵通过 OpenCV 计算坐标转换

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:08 24 4
gpt4 key购买 nike

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

问题是,现在我想使用第一张图像上的一个点的坐标 (y) 和基本矩阵 (F),以便找到第二张图片上的点的坐标 (y')。我首先考虑简单地使用上面的等式,但只给出 y' 点的 z,可以有 an infinity of solutions .

我还能如何使用基本矩阵来计算平移?

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

考虑到我们知道这个等式中的 abF:(a', b", 1)T * F * (a, b, 1) = (0)

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

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

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

最佳答案

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

How else can I use the fundamental matrix to compute the translations?

请。通过示例告诉我们您想要实现的目标也会有所帮助。

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

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

关于c++ - 使用基本矩阵通过 OpenCV 计算坐标转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com