对极几何和PnP都是在已知若干对匹配点的情况下计算相机的运动,其中对极几何是计算2D-2D匹配点间的运动,而PnP是求解3D-2D匹配点对运动的方法
对极几何
对极约束
如图所示为对极几何约束,其中 I1,I2I_1,I_2I1,I2为两帧图像,p1,p2p_1,p_2p1,p2为两帧图像中所匹配的像素点,O1,O2O_1,O_2O1,O2为相机的光心,连接O1O2O_1O_2O1O2交I1,I2I_1,I_2I1,I2于e1,e2e_1,e_2e1,e2点,e1,e2e_1,e_2e1,e2称为极点,当p1,p2p_1,p_2p1,p2代表同一空间点在两幅图像中的投影时,理论上连接O1p1O_1p_1O1p1和O2p2O_2p_2O2p2,两条直线必交于空间中的一点PPP,O1O2PO_1O_2PO1O2P所确定的平面成为极平面,O1O2O_1O_2O1O2称为基线,极平面与像平面的交线l1,l2l_1,l_2l1,l2称为极线。
下面解释对极约束:
设P=[X,Y,Z]P=[X,Y,Z]P=[X,Y,Z],以第一帧坐标系为起点,第二帧相对第一帧的旋转矩阵和平移向量分别为R,tR,tR,t,根据相机模型,易知
Zp1=KP,Zp2=K(RP+t) Zp_1 = KP,Zp_2=K(RP+t) Zp1=KP,Zp2=K(RP+t)
当p1,p2p_1,p_2p1,p2为使用齐次坐标时,忽略上式中的ZZZ:
p1=KP,p2=K(RP+t) p_1 = KP,p_2=K(RP+t) p1=KP,p2=K(RP+t)
设x1,x2x_1,x_2x1,x2分别为PPP在两个归一化平面上的投影(非像素坐标,与像素坐标相差一个相机内参矩阵)
p1=Kx1,p2=Kx2 p_1 = Kx_1, p_2 = Kx_2 p1=Kx1,p2=Kx2
所以可得
x2=Rx1+t x_2 = Rx_1+t x2=Rx1+t
两侧左乘t^\hat{t}t^,得
t^x2=t^Rx1 \hat{t}x_2=\hat{t}Rx_1 t^x2=t^Rx1
两侧左乘x2Tx_2^Tx2T,得
x2Tt^x2=x2Tt^Rx1 x_2^T\hat{t}x_2=x_2^T\hat{t}Rx_1 x2Tt^x2=x2Tt^Rx1
t^x2\hat{t}x_2t^x2与x2x_2x2和ttt均垂直,故x2Tt^x2=0x_2^T\hat{t}x_2=0x2Tt^x2=0,得到如下约束
x2Tt^Rx1=0 x_2^T\hat{t}Rx_1=0 x2Tt^Rx1=0
这个约束即为对极几何约束,将p1,p2p_1,p_2p1,p2带入可得
p2TK−Tt^RK−1p1=0 p_2^T K^{-T} \hat{t} R K^{-1} p_1=0 p2TK−Tt^RK−1p1=0
令E=t^RE=\hat{t}RE=t^R,称为本质矩阵(Essential Matrix),