-
Notifications
You must be signed in to change notification settings - Fork 5
3D CV基础(四) 对极几何
有时候,我们希望从两张视差图(同一时刻,不同角度拍下来的同一个物体)恢复出物体的3D形状,如下图
C和C‘为不同角度的相机中心,同一个在两个图像平面里成像位置不一样,其中,两个相机中心的连线称为baseline,而baseline交于两个成像平面的点称为epipole(极点),而点在一个视角里的一个点对应的射线投影到另外一个视角后会形成一条线,叫epipolar line。
而有时候我们需要寻找一个视角里的一个点,在另一个视角里对应的点,只需要在epipolar line里搜索即可,把搜索范围降到了一维,如下图,要在右图找与白点对应的点,只需要在黑线上搜索即可
如之前所说,点X是在世界坐标系当中,我们可以找到矩阵P计算图像坐标的关系,如果把C’也看作是对于左边相机里看到的物体,同样也满足这个关系(上图最后一行)
我们希望找到一个图像上的点x(小写)与另外一个图像中epipolar line (计作I')的关系
实际上我们在后面能看到可以用一个3X3的矩阵F来表示这个变化关系I'=Fx
总的思路分为三步:
1.把点x投影回一条射线
2.从这条射线中选择两个点,并投影到另一个平面中
3.通过两点即可通过叉积计算出I‘
首先选择相机参数
P矩阵定义仍然如上几节一样,这里我们直接定义物体的世界坐标与第一个视角的相机坐标重合(故没发生旋转和平移,所以是 [ I | 0 ]),另一个的参数再通过其他办法解决,这里假定两者都已知。
X(z)表示的是射线,表示的点由z所决定(齐次坐标的表示)
这里无穷的点为什么是这个,其实由于这是一个齐次坐标,最后一维为0时,其他维度除以0相当于乘了个无穷,即z=无穷
-
这里F是一个3X3,秩为2的矩阵,对于每一对匹配点都满足:
x'tFx=0 -
点与线的转换:
l’=Fx & l=FTx’ -
F矩阵的自由度为7,3×3-1个齐次项-1(不满秩的约束条件)
参考这里 -
由于视角一的中心穿过所有射线,故epipoles e'(在视角二的投影)会出现在所有的epipolar line当中,即对所有的x,都有e’TFx=0, 因此也能推出
e'TF=0
-
同理,在视角一的epipoles e也满足
Fe=0