13

在 MATLAB 中,我使用归一化八点算法计算了(两个图像的)基本矩阵。由此我需要对3D 空间中的相应图像点进行三角测量。据我了解,要做到这一点,我需要图像相机的旋转和平移。最简单的方法当然是先校准相机然后拍摄图像,但这对我的应用程序来说太狭窄了,因为它需要这个额外的步骤。

这样我就可以进行自动(自)相机校准。我看到提到捆绑调整,但是在An Invitation to 3D Vision中似乎需要初始平移和旋转,这让我认为需要校准相机或我的理解不足。

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

4

3 回答 3

11

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

如果您可以访问Hartley 和 Zisserman 的教科书,您可以查看第 9.5.3 节,在那里您将找到从基本矩阵到允许您计算投影重建的一对相机矩阵所需的内容(我相信同样内容出现在马依书的第 6.4 节)。由于本书算法的源代码可在线获得,您可能需要查看函数 vgg_P_from_F、vgg_X_from_xP​​_lin 和 vgg_X_from_xP​​_nonlin。

于 2010-02-06T13:06:13.197 回答
5

我认为彼得的 matlab 代码会对您有很大帮助:

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

Peter 发布了许多基本的矩阵解决方案。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/

在我看来,一首很好的作品!

于 2010-02-05T21:54:56.023 回答
1

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

P = [I | 0]

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

于 2010-02-03T09:05:52.473 回答