问题 3D基本矩阵的对应关系


在MATLAB中我计算了 基本矩阵 (使用标准化的两个图像) 八点算法。从那我需要 三角 3D空间中的相应图像点。根据我的理解,要做到这一点,我需要旋转和翻译图像的相机。最简单的方法当然是 校准相机 首先拍摄图像,但这对我的应用来说太紧张了,因为它需要这个额外的步骤。

所以这让我失望了 自动(自拍)相机校准。我看到提到了 捆绑调整但是在 邀请3D视觉 它似乎需要初始平移和旋转,这让我觉得需要校准相机或我的理解不足。

所以我的问题是如何自动提取旋转/平移,以便我可以将图像点重新投影/三角测量到3D空间。任何MATLAB代码或伪代码都会很棒。


5218
2018-02-03 01:38


起源



答案:


您可以使用基本矩阵恢复相机矩阵并从图像中对3D点进行三角测量。但是,你必须意识到你将获得的重建将是一个投射重建,而不是欧几里德重建。如果你的目标是测量原始场景中的投影不变量,例如交叉比率,线交点等,这很有用,但它不足以测量角度和距离(你必须为此校准相机)。

如果您有权访问 哈特利和齐瑟曼的教科书,你可以查看9.5.3节,你会发现你需要从基本矩阵到一对相机矩阵,你可以计算一个投影重建(我相信相同的内容出现在Yi Ma的书第6.4节) )。自从 该书算法的源代码可在线获取,您可能需要检查函数vgg_P_from_F,vgg_X_from_xP​​_lin和vgg_X_from_xP​​_nonlin。


8
2018-02-06 13:06



我最终使用了Hartley / Zisserman书中的算法12.1“最佳三角剖分方法”。使用“用于Matlab的相机校准工具箱”对相机进行校准 - yxk


答案:


您可以使用基本矩阵恢复相机矩阵并从图像中对3D点进行三角测量。但是,你必须意识到你将获得的重建将是一个投射重建,而不是欧几里德重建。如果你的目标是测量原始场景中的投影不变量,例如交叉比率,线交点等,这很有用,但它不足以测量角度和距离(你必须为此校准相机)。

如果您有权访问 哈特利和齐瑟曼的教科书,你可以查看9.5.3节,你会发现你需要从基本矩阵到一对相机矩阵,你可以计算一个投影重建(我相信相同的内容出现在Yi Ma的书第6.4节) )。自从 该书算法的源代码可在线获取,您可能需要检查函数vgg_P_from_F,vgg_X_from_xP​​_lin和vgg_X_from_xP​​_nonlin。


8
2018-02-06 13:06



我最终使用了Hartley / Zisserman书中的算法12.1“最佳三角剖分方法”。使用“用于Matlab的相机校准工具箱”对相机进行校准 - yxk


我认为Peter的matlab代码对你很有帮助:

http://www.csse.uwa.edu.au/~pk/research/matlabfns/

彼得发布了许多基本矩阵解决方案。 zisserman书中提到了原始算法

http://www.amazon.com/exec/obidos/tg/detail/-/0521540518/qid=1126195435/sr=8-1/ref=pd_bbs_1/103-8055115-0657421?v=glance&s=books&n=507846

此外,当你在它时,不要忘记看到基本的矩阵歌曲:

http://danielwedge.com/fmatrix/

我诚实的意见中的一个很好的组成!


5
2018-02-05 21:54





如果您的3D空间可以任意选择,您可以将您的第一个相机矩阵设置为

P = [I | 0]

没有翻译,没有轮换。这将为您提供从摄像机1定义的坐标系。然后校准第二台摄像机应该不会太难。


1
2018-02-03 09:05



你会使用像Bundle Adjustment这样的算法吗? - yxk
如果可能的话,我想我会尝试使用某种校准物体来找到第一台理想相机的第二台相机的旋转。否则我猜捆绑调整将是一个很好的起点。 - Hannes Ovrén
为了执行校准,需要使用某种校准对象,如棋盘。这仍然可以用非校准对象完成,但结果不是很好,除非可以提取大量的 准确 对应。从进一步阅读开始,束调整是一种在校准结果存在后改进校准结果的算法。 - yxk
P1 = K * [eye(3),[0 0 0]']; P2 = K * [R,t]; P1,P2是相机矩阵。 K是校准矩阵。 (Matlab表示法) - yxk