首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >立体视觉基本矩阵的计算

立体视觉基本矩阵的计算
EN

Stack Overflow用户
提问于 2011-04-04 01:54:06
回答 1查看 6.1K关注 0票数 7

我试图编写一些代码来计算基本矩阵来确定立体图像之间的关系。我从大多数人推荐的Hartley和Zisserman的书开始,但是它没有任何实用的例子,而且它的示例代码是在MATLAB中我没有的。然后,我转到三维计算机视觉技术及算法简介,这是更实用的,其中有实际的例子。我使用Python和numpy实现了推荐的8点算法,但我在验证它的有效性时遇到了困难。

我正在使用第48页列出的数据集(使用上面的链接查看Google图书摘录)。当我将这些观点规范化时,我得到的结果和那本书一样。然而,当我使用numpy的SVD函数计算基本矩阵时,我得到了F的以下值:

代码语言:javascript
复制
[[-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()反复检查答案,我得到了第三个答案:

代码语言:javascript
复制
[[  22.98129082  271.46453857  853.74273682]
 [-334.1673584    -4.84123087 -175.99523926]
 [-809.88891602  125.99833679    1.        ]]

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-07 13:29:03

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

因此,您的结果可能很好。结果之间的细微差别可能是由于OpenCV采用了与8点算法不同(可能更健壮)的方法。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5533856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档