在给定基本矩阵的情况下,确定3D点是否在一对立体相机前面

时间:2012-03-20 22:38:22

标签: matlab computer-vision stereo-3d multiple-views

我正试图通过一对iPhone 4S(一个基本的立体声系统)获得我在场景的两个不同视图中的点的3D度量重建。

为此,我做了校准相机,估计基本矩阵并获得基本矩阵的估计。现在,在Hartley& Zisserman的“CV中的多视图几何”一书中,我看到对于任何给定的E,它们对应4个规范相机对,其中只有一个重建为“实际”立体声配置。

问题是他们说[cit。]“......重建的点只会在这四个解决方案中的一个中位于两个摄像头前面。因此,用一个点测试以确定它是否在前面两个相机足以在相机矩阵P'的四种不同解决方案之间做出决定......“

鉴于我知道F,K_left和K_right,如何判断3D点是否在两个摄像头前?

谢谢,

的Riccardo

1 个答案:

答案 0 :(得分:3)

您可以从基本矩阵中获取相机旋转和平移。所以,你有相机矩阵P = [R,-R * t]。要测试点X =(x,y,z,1)是否在摄像机前面,请计算X'= P * X.如果相机在原点,朝向z方向,则X'=(x',y',z')将是点的位置。因此,如果z'为正,则X'位于相机前方,X位于相机P前方。否则X位于P之后。