Matlab 基本矩阵的三维对应

Matlab 基本矩阵的三维对应,matlab,math,computer-vision,linear-algebra,matlab-cvst,Matlab,Math,Computer Vision,Linear Algebra,Matlab Cvst,在MATLAB中,我使用归一化的方法计算了(两幅图像的)图像。从那我需要在3D空间中对应的图像点。据我所知,要做到这一点,我需要图像相机的旋转和平移。当然,最简单的方法是先拍摄图像,但这对我的应用程序来说太狭窄了,因为它需要额外的步骤 所以这就留给我了。我看到提到的,但在它似乎需要一个初步的平移和旋转,这使我认为需要一个校准相机或我的理解是不够的 因此,我的问题是如何自动提取旋转/平移,以便将图像点重新投影/三角化到三维空间中。任何MATLAB代码或伪代码都非常棒。如果可以任意选择3D空间,则可

在MATLAB中,我使用归一化的方法计算了(两幅图像的)图像。从那我需要在3D空间中对应的图像点。据我所知,要做到这一点,我需要图像相机的旋转和平移。当然,最简单的方法是先拍摄图像,但这对我的应用程序来说太狭窄了,因为它需要额外的步骤

所以这就留给我了。我看到提到的,但在它似乎需要一个初步的平移和旋转,这使我认为需要一个校准相机或我的理解是不够的


因此,我的问题是如何自动提取旋转/平移,以便将图像点重新投影/三角化到三维空间中。任何MATLAB代码或伪代码都非常棒。

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

P = [I | 0]

没有平移,没有旋转。这将为您留下一个从摄影机1定义的坐标系。那么,校准第二台摄像机应该不会太难。

彼得的matlab代码将对您非常有帮助,我认为:

Peter发布了一些基本矩阵解决方案。zisserman的书中提到了原始算法

此外,当您在观看时,不要忘记观看基本矩阵歌曲:


在我看来,这是一篇很好的作文

您可以使用基本矩阵来恢复相机矩阵,并从其图像中三角化3D点。但是,您必须知道,您将获得的重建是投影重建,而不是欧几里德重建。如果您的目标是测量原始场景中的投影不变量(如交比、线交点等),则此功能非常有用。但它不足以测量角度和距离(您必须为此校准摄影机)


如果您有权访问,您可以查看第9.5.3节,在那里您将找到从基本矩阵到允许您计算投影重建的一对摄影机矩阵所需的内容(我相信相同的内容出现在马易书的第6.4节)。因为,你可能想检查函数vgg_P_from_F,vgg_X_from_xP_lin,vgg_X_from_xP_nonlin。

你会使用像束调整这样的算法吗?如果可能的话,我会尝试使用某种校准对象来找到给定第一个理想相机的第二个相机的旋转。否则,我想束调整将是一个很好的开始。要执行校准,需要使用某种校准对象,如棋盘。这仍然可以用非校准对象来完成,但结果并不好,除非可以提取大量精确的对应关系。进一步阅读,光束调整是一种算法,一旦校准结果存在,该算法可改善校准结果。P1=K*[眼睛(3),[0]';P2=K*[R,t];P1、P2是摄像机矩阵。K是校准矩阵。(Matlab表示法)我最终使用了Hartley/Zisserman书中的算法12.1“最佳三角剖分法”。使用“Matlab摄像机校准工具箱”校准摄像机。第9.5.3节的内容如下:“非零矩阵F是对应于一对摄像机矩阵P和P的基本矩阵,当且仅当PTFP是斜对称的。”这没有帮助:(