文章目录
1、实验需求
1.求解图像之间的基础矩阵:分别用七点、八点、十点(匹配点),计算基础矩阵,实验图片包含三种情况,即(1)左右拍摄,极点位于图像平面上(2)像平面接近平行,极点位于无穷远(3)图像拍摄位置位于前后
2. 针对上述情况,画出极点和极线,其中点坐标要均匀分布于各行,避免只用排在前五特征点的方式。
2、语言和平台
语言:python2.7.13 (anaconda2)
平台:pycharm 2018.2
3、概念
对极几何和本质矩阵
对极几何其实就是将相机光心和特征点与空间点约束在一个平面上。
如图,相机光心在c位置时观测到空间点x(上方的x)投影到成像平面的x(下面的x)上,接着相机运动,相机运动到光心在c’位置的时候观测到空间点x投影到成像平面上的x’处,此时c、x、空间点x、x’、c’在一个平面上。
根据相机模型,可以轻松的得到:
s 1 x = K P s_1x=KP s1x=KP, s 2 x ′ = K ′ P ′ s_2x'=K'P' s2x′=K′P′
=>归一化坐标: x = K p x=Kp x=Kp, x ′ = K ′ p ′ x'=K'p' x′=K′p′
=> p = K − 1 x p=K^{-1}x p=K−1x, p ′ = K ′ − 1 x p'=K'^{-1}x p′=K′−1x
=>三点共面, ( p − T ) T ( T ∗ p ) = 0 ( p-T )^T(T*p ) =0 (p−T)T(T∗p)=0
=>根据 p = R p ′ + T p =Rp'+T p=Rp′+T ( R T P ′ ) T ( T ∗ p ) = 0 (R^TP')^T(T*p)=0 (RTP′)T(T∗p)=0
=>根据 T ∗ p = S p T*p=Sp T∗p=Sp, ( R T P ′ ) T ( S p ) = 0 (R^TP')^T(Sp)=0 (RTP′)T(Sp)=0
=> ( P ′ T R ) T ( S p ) = 0 (P'^TR)^T(Sp)=0 (P′TR)T(Sp)=0
=> P ′ T E p = 0 P'^TEp=0 P′TEp=0 (E本质矩阵)
以下是对极几何的几个相关概念:
对极平面束:以基线为轴的平面束;即图2中的baseline
对极平面:任何包含基线的平面都称为对极平面,或者说是对极平面束中的平面;图2中的平面 π π π就是一个对极平面
对极点:摄像机的基线与每幅图像的交点;即图2中的点e和e’
对极线:对极平面与图像的交线;例如,图2中的直线l和l’
基础矩阵F
给定一对图像(同一场景不同视角得到的图像),对于图3上的任一像点x,在图4中都有一条与之对应的对极线l′,该对极线是像点x与过第一个相机中心C射线在图4上的投影,并且图4中与x相匹配的像点x′必定在该对极线上。因此,存在一个像点x到另一个图像上对极线l′的映射:x→l′
基础矩阵F表示的就是这种从点到直线的映射。
F矩阵为3*3,秩为2,自由度为7的矩阵,kF也为基础矩阵,即相差一个尺度自由度
由上面的运算结果 P ′ T E p = 0 P'^TEp=0 P