我想计算出两幅图像之间的兴趣点的极线。我正在处理一个喷泉数据集,所以我有旋转和平移矩阵,以及相机矩阵。我目前使用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它有两个复特征值,它们是共轭的。
极地line:1.0e+004 *
0.206660143270238 0.023299771007641 -4.240274401559348
发布于 2013-08-06 13:23:59
最后,我找到了解决问题的办法。我把它贴在这里以防其他人感兴趣。
为了正确计算相对旋转矩阵和平移矩阵,必须使用旋转-平移矩阵.这个矩阵是每个图像的4x4矩阵。左上部分是旋转(wrt,世界坐标系),第四列是平移向量(wrt到世界坐标系),最后一行是0 0 0 1。因此,如果我们对2幅图像有2个这样的矩阵,最后的roto-平移矩阵是Qright-> left =inv(Qright)*q左侧。从该矩阵中提取相对平移(t)和旋转(R)(分别为第4次列和左上矩阵)。然后,我们建立了倾斜对称矩阵T进行平移。极矩阵是E=R*T,但这还不够。为了正确计算极线,必须找到基本矩阵F。对于我所使用的给定数据集,相机矩阵K是这样的,所以这很容易: F=inv(Kright')*E* inv (Kleft),其中(')是转置的,inv是倒矩阵。然后,计算右像的极线lines=F*P,其中P是齐次坐标下的点。
谢谢!
发布于 2013-07-29 17:21:16
有很多文件可以在网上找到解释极几何和如何在立体图像中找到极线。这是一。它给你带来了不同的概念。这个主题的诀窍,我发现,是跟踪变量,这些变量最终是矩阵转换和隐含的(教授快捷键)算法操作的结果。
我的建议是查看我提供的链接的第12页,并将其应用到您的场景中。除了您提供的描述之外,没有任何数据可供选择,因此不可能解决问题。
祝好运。
注意:很抱歉听说你的Matlab版本已经过时了。我知道2013年已经为这些东西内置了函数,但我不确定2009年是否会这样做,因为MathWorks是一个阅读旧文档的帐户。
https://stackoverflow.com/questions/17929667
复制相似问题