我正在尝试编写一些代码,以计算基本矩阵来确定立体图像之间的关系。我最初使用了Hartley和Zisserman书籍,但它没有任何实用示例,其示例代码是在我没有的MATLAB中编写的。然后我转而使用三维计算机视觉技术和算法介绍这本更实用的书籍,并在Python和numpy中实现了推荐的8点算法,但我无法验证其有效性。
我正在使用该书第48页列出的数据集(使用上面的链接查看Google Books摘录)。当我归一化点时,我得到与该书相同的结果。然而,当我使用numpy的SVD函数计算基本矩阵时,我得到以下F值:
这个矩阵满足方程 p_R^ * F * p_L = 0,因此看起来是正确的。然而,它与书中计算出的矩阵非常不同。我尝试使用OpenCV的cv.FindFundamentalMat()再次核对答案,得到了第三个答案:
我不知道其他两个矩阵是如何计算的,但我找不到任何基础矩阵计算的示例来验证我对8点算法的实现。虽然我的实现返回满足方程的值,但这让我担心我可能做了一些愚蠢的事情,这就是为什么我无法匹配书中或OpenCV的结果的原因。
我正在使用该书第48页列出的数据集(使用上面的链接查看Google Books摘录)。当我归一化点时,我得到与该书相同的结果。然而,当我使用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的结果的原因。