gpt4 book ai didi

opencv - 如何计算立体视觉的基本矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 20:46:22 25 4
gpt4 key购买 nike

我正在尝试编写一些代码来计算基本矩阵以确定立体图像之间的关系。我从大多数人推荐的 Hartley 和 Zisserman 书开始,但它没有任何实际示例,而且它的示例代码在我没有的 MATLAB 中。然后我切换到 An introduction to 3D Computer Vision Techniques and Algorithms哪个更实用,里面有实际的例子。我使用 Python 和 numpy 实现了推荐的 8 点算法,但我无法验证它的有效性。

我正在使用那本书的第 48 页(使用上面的链接查看 Google 图书摘录)中列出的数据集。当我对这些点进行归一化时,我得到了与那本书相同的结果。但是,当我使用 numpy 的 SVD 函数计算基本矩阵时,我得到以下 F 值:

[[-0.01851684 -0.21631176 -0.67036356]
[ 0.2605251 -0.01023853 0.14234079]
[ 0.63748775 -0.09404508 -0.00220713]]

这个矩阵满足方程 p_R^ * F * p_L = 0 所以它看起来是正确的。但是和书上计算的矩阵有很大的不同。我尝试使用 OpenCV 的 cv.FindFundamentalMat() 仔细检查答案,我得到了第三个答案:

[[  22.98129082  271.46453857  853.74273682]
[-334.1673584 -4.84123087 -175.99523926]
[-809.88891602 125.99833679 1. ]]

其他两个矩阵的计算方式我不是很懂,但是我在网上找不到任何基本矩阵计算的例子来验证我对8点算法的实现。我的实现返回一个满足方程式的值这一事实给了我信心,但我担心我做了一些愚蠢的事情,这就是为什么我无法匹配书中或 OpenCV 的结果。

最佳答案

请注意,基本矩阵被定义为一个常数因子(您可以很容易地通过检查对极约束来验证这一点)。尝试将 OpenCV 矩阵与 -8.0574e-04 相乘,最后您会发现这两个矩阵非常相似:-)

因此,您的结果可能没问题。结果之间的细微差异可能是由于 OpenCV 采用了与 8 点算法不同(可能更稳健)的方法。

关于opencv - 如何计算立体视觉的基本矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5533856/

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