1

我想计算两个图像之间的兴趣点的极线。我正在研究喷泉数据集,所以我有旋转和平移矩阵,以及相机矩阵。我目前使用 Matlab 以提高速度,但我拥有的版本相当旧(2009 年)。

我通过 E=t*R 计算基本矩阵,然后计算 l=E*P 的极线,其中 P 是兴趣点/兴趣点集。然后我得到一个包含三行的向量,我猜是 ax+by+c=0 的行参数。右图绘制的极线是完全错误的,与左图的点相距甚远。任何的想法???

编辑:使用的数据集 --> 喷泉基准,图像 0000 和 0001 http://cvlabwww.epfl.ch/~strecha/multiview/denseMVS.html

输出:基本矩阵,例如点 P1=[433.36;861.15;1]

E =

0.761857065048902  1.969487475012598 40.418915885686594

-0.927781947178923 0.698934833377211 33.173562943087106

-45.044061511303227 -26.573128396975097 1.000000000000000

它有两个共轭的复特征值。

极线:1.0e+004 *

0.206660143270238 0.023299771007641 -4.240274401559348

4

2 回答 2

1

最后我找到了解决我的问题的方法。我把它贴在这里以防其他人感兴趣。

为了正确计算相对旋转和平移矩阵,必须使用 Roto-Translation 矩阵。该矩阵是每个图像的 4x4 矩阵。左上部分是旋转(相对于世界坐标系),第 4 列是平移向量(相对于世界坐标系),最后一行是 [0 0 0 1]。因此,如果我们有 2 个这样的矩阵用于 2 个图像,则最终的旋转平移矩阵是 Qright-->left=inv(Qright)*Qleft。从这个矩阵中,我们提取了相对平移(t)和旋转(R)(分别是第 4 个子列和左上矩阵)。然后,我们创建用于平移的斜对称矩阵 T。对极矩阵是 E=R*T。但这还不够。为了正确计算核线,必须找到基本矩阵 F。对于给定的数据集,例如我使用的数据集,给定相机矩阵 K,所以这很容易:F=inv(Kright')*E*inv(Kleft),其中 (') 是转置矩阵,inv 是倒置矩阵。然后,右图的核线计算为lines=F*P,其中P是齐次坐标中的点。

谢谢!

于 2013-08-06T13:23:59.047 回答
0

在网上可以找到很多解释核几何以及如何在立体图像中找到核线的文档。这是一个。它体面地引导您了解不同的概念。我发现这个主题的诀窍是跟踪变量,这些变量最终是矩阵变换和隐含的(教授快捷方式)代数运算的结果。

我的建议是查看我提供的链接的第 12 页并将其应用于您的场景。 除了您提供的描述之外,如果没有任何数据可以解决,就不可能解决问题。

祝你好运。

注意:很抱歉听到您的 Matlab 版本太旧。我知道 2013 已经为这些东西内置了函数,但我不确定 2009 是否这样做,因为 MathWorks 需要一个帐户来阅读旧文档。

于 2013-07-29T17:21:16.727 回答