公司网站开发外包公司,知识库wordpress主题,网页设计流程的图片,WordPress怎么去掉主题也没视觉里程计之对极几何
前言
上一个章节介绍了视觉里程计关于特征点的一些内容#xff0c;相信大家对视觉里程计关于特征的描述已经有了一定的认识。本章节给大家介绍视觉里程计另外一个概念#xff0c;对极几何。
对极几何
对极几何是立体视觉中的几何关系#xff0c;描…视觉里程计之对极几何
前言
上一个章节介绍了视觉里程计关于特征点的一些内容相信大家对视觉里程计关于特征的描述已经有了一定的认识。本章节给大家介绍视觉里程计另外一个概念对极几何。
对极几何
对极几何是立体视觉中的几何关系描述相机从不同位置拍摄3D场景时3D点与相机位姿图像观测像素坐标之间的几何关系。这种几何关系可以作为约束应用到求解相机运动及特征点3D坐标中。
立体视觉(Stereo Vision)是什么呢我们可以这样理解 立体视觉(StereoVision) 寻找相关性(Correspondences) 重建(Reconstruction) ● Correspondences:给定张图片中的像素P点寻找其在另一张图片中的对应点Pr。 ● Reconstruction:给定一组对应点对(P,P,),计算其在空间中对应点P的3D坐标。 对极几何中存在以下几个概念对极点对极线对极平面。其中对极线构成的约束称为对极线约束也称为对极约束。 对极点左相机光心OL在右相机平面上的成像点eR称为其中一个对极点类似的OR在左相机上的成像点eL也是对极点。对极点是虚拟的点如果相机之间不能观测到对方光心则对极点会在图像之外。
对极线在相机OL观测到一个点XL实际情况该XL可能对应3D坐标中任意一个Xi因为线OLX被因为与左相机中心重合而被左相机视为一个点。但对于右相机每个Xi则将有不同观测这些观测为其图像平面中的一条线该线称为对极线。如图右摄像机中的那条线eRXR就称为对极线。对称地右相机视线ORX为一个点而被左相机视为对极线eLXL。 对极线是3D空间中点X的位置的函数一个兴趣点对应一组对极线XLeL,XReR。由于线OLX通过透镜OL的光学中心因此右图中相应的对极线必须通过eR并且对应于左图中的极线。一幅图像中的所有对极线都包含该图像的对极点。 对极平面趣点X与两相机中心OL、OR三点形成的平面称为对极平面。对极平面与每个相机的图像平面相交形成线即为对极线。无论X位于何处所有对极平面和对极线都与对极点相交。
基线两个相机光心相连的直线OLOR称为基线
对极约束
P点在图像I1中观测的位置是P1在I2中观测的位置是P2O1与O2为相机的光心。点P与O1O2形成的平面称为极平面。极平面与图像平面的交线称为极线即图中的l1与l2。其中e1与e2称为极点。 假设O1相机坐标系下P点坐标为P(X,Y,Z)归一化坐标为PuX1,Y1,1则根据针孔相机投影模型观测的像素坐标P1u1,v1为 [ u 1 v 1 1 ] [ f x 0 c x 0 f y c y 0 0 1 ] [ X 1 X 1 1 ] \ \left[\begin{matrix}u_1\\v_1\\1\\\end{matrix}\right] \ \left[\begin{matrix}f_x0c_x\\0f_yc_y\\001\\\end{matrix}\right] \ \left[\begin{matrix}X_1\\X_1\\1\\\end{matrix}\right] u1v11 fx000fy0cxcy1 X1X11
化为简洁的形式如下其中K为相机内参 p 1 K P u 1 p_1KP_u^1 p1KPu1 好了现在假设O1相机相对于O2的运动及旋转为t与R那么根据坐标系变换的关系P在O2坐标系下坐标为 P 2 R P 1 t P_2RP_1t P2RP1t
同样根据相机投影模型可以得到观测像素坐标与局部三维坐标的关系为 p 2 K P u 2 K ( R P 1 t ) u p_2KP_u^2K(RP_1t)_u p2KPu2K(RP1t)u
为了描述对极约束这里需要用到投影关系即一个坐标等比例缩放的关系物理含义是指它们是在同一条射线上通过投影关系可以得到在相机O1与O2下对P点观测的归一化坐标关系为 p u 2 ∗ 1 s 2 R p u 1 ∗ 1 s 1 t p_u^2\ast\frac{1}{s_2}Rp_u^1\ast\frac{1}{s_1}t pu2∗s21Rpu1∗s11t
在等式左右同时左乘t^上三角符号含义为取向量的反对称矩阵运算结果为向量的外积,因为相同向量外积为0,所以上式变为 t ∧ ∗ p u 2 ∗ 1 s 2 t ∧ R p u 1 ∗ 1 s 1 t^\land\ast p_u^2\ast\frac{1}{s_2}t^\land Rp_u^1\ast\frac{1}{s_1} t∧∗pu2∗s21t∧Rpu1∗s11
两边同时乘以p2的转置 ( p u 2 ) T ∗ t ∧ ∗ p u 2 ∗ 1 s 2 ( p u 2 ) T ∗ t ∧ R p u 1 ∗ 1 s 1 \left(p_u^2\right)^T\ast t^\land\ast p_u^2\ast\frac{1}{s_2}\left(p_u^2\right)^{T{\ast\ t}^\land}Rp_u^1\ast\frac{1}{s_1} (pu2)T∗t∧∗pu2∗s21(pu2)T∗ t∧Rpu1∗s11
其中左等式t^p2u为一个与t及p2u垂直的向量所以对极几何t一定不能为0不然在推导这里就不成立既然与自身垂直那么两个垂直向量做内积结果为0左侧严格等于0。则此时去掉常数项也不会影响等式成立 ( p u 2 ) T t ∧ R p u 1 0 \left(p_u^2\right)^Tt^\land Rp_u^10 (pu2)Tt∧Rpu10
其中p1up2u为物体在相机坐标系下的归一化坐标其与物体真实坐标及像素的齐次坐标关系为 P u 1 K − 1 u 1 齐 s 1 P 1 P_u^1K^{-1}u_1^齐s_1P^1 Pu1K−1u1齐s1P1 通常有如下表示 E t ∧ R Et^\land R Et∧R
称E为对极几何中的本质矩阵Essential Matrix,如果把物体的归一化坐标换为像素齐次坐标则有如下结果 u 2 齐 K − T t ∧ R K − 1 u 1 齐 0 u_2^齐K^{-T}t∧RK^{-1}u_1^齐0 u2齐K−Tt∧RK−1u1齐0
其中有如下表示 F K − T E K − 1 FK^{-T}EK^{-1} FK−TEK−1
F包含内参称为对极几何中的基础矩阵Fundamental Matrix.
本质矩阵的求解-八点法
由上可知一对匹配点与本质矩阵的关系可以得到一个等式 ( p u 2 ) T E p u 1 0 \left(p_u^2\right)^TEp_u^10 (pu2)TEpu10
其中E矩阵为3x3矩阵有9个未知数但实际上E只有5个自由度表明其最少可以用五个点来列方程来求解但这五个自由度是建立在非线性性质之上的求解比较复杂。如果只考虑其尺度等价性则E有8个自由度这种线性性质会让求解更简单些所以就有了常用的8点法。设E为 E [ e 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 e 9 ] E\ \ \left[\begin{matrix}e_1e_2e_3\\e_4e_5e_6\\e_7e_8e_9\\\end{matrix}\right] E e1e4e7e2e5e8e3e6e9
则对极约束可以写为如下形式 [ x 2 y 2 1 ] [ e 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 e 9 ] [ x 1 y 1 1 ] 0 \left[\begin{matrix}x_2y_21\\\end{matrix}\right]\left[\begin{matrix}e_1e_2e_3\\e_4e_5e_6\\e_7e_8e_9\\\end{matrix}\right]\left[\begin{matrix}x_1\\y_1\\1\\\end{matrix}\right]\ \ 0 [x2y21] e1e4e7e2e5e8e3e6e9 x1y11 0
把E写为向量形式 e [ e 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 e 9 ] T e\left[\begin{matrix}e_1e_2e_3\\\end{matrix}\ \ \ \begin{matrix}e_4e_5e_6\\\end{matrix}\ \ \ \begin{matrix}e_7e_8e_9\\\end{matrix}\right]^T e[e1e2e3 e4e5e6 e7e8e9]T
则上式方程为 [ x 2 x 1 x 2 y 1 x 2 y 2 x 1 y 2 y 1 y 2 x 1 y 1 1 ] ∗ e 0 \left[\begin{matrix}x_2x_1x_2y_1x_2\\\end{matrix}\ \ \ \begin{matrix}y_2x_1y_2y_1y_2\\\end{matrix}\ \ \ \begin{matrix}x_1y_11\\\end{matrix}\right]\ast e\ \ 0 [x2x1x2y1x2 y2x1y2y1y2 x1y11]∗e 0
使用8对匹配点每一对匹配点构成上述的方程那么就有8组方程最后8组方程构成一个线性齐次方程组这种将本质矩阵看做向量然后通过求解线性方程组来获得矩阵的方式也称为直接线性变换法DLT。如下 ( x 2 1 x 1 1 x 2 1 y 1 1 x 2 1 y 2 1 x 1 1 y 2 1 y 1 1 y 2 1 x 1 1 y 1 1 1 x 2 2 x 1 2 x 2 2 y 1 2 x 2 2 y 2 2 x 1 2 y 2 2 y 1 2 y 2 2 x 1 2 y 1 2 1 . . . x 2 8 x 1 8 x 2 8 y 1 8 x 2 8 y 2 8 x 1 8 y 2 8 y 1 8 y 2 8 x 1 8 y 1 8 1 ) e 0 \left(\begin{array}{ccccccccc} x_{2}^{1} x_{1}^{1} x_{2}^{1} y_{1}^{1} x_{2}^{1} y_{2}^{1} x_{1}^{1} y_{2}^{1} y_{1}^{1} y_{2}^{1} x_{1}^{1} y_{1}^{1} 1 \\ x_{2}^{2} x_{1}^{2} x_{2}^{2} y_{1}^{2} x_{2}^{2} y_{2}^{2} x_{1}^{2} y_{2}^{2} y_{1}^{2} y_{2}^{2} x_{1}^{2} y_{1}^{2} 1 \\ ... \\\ x_{2}^{8} x_{1}^{8} x_{2}^{8} y_{1}^{8} x_{2}^{8} y_{2}^{8} x_{1}^{8} y_{2}^{8} y_{1}^{8} y_{2}^{8} x_{1}^{8} y_{1}^{8} 1 \end{array}\right) e0 x21x11x22x12 x28x18x21y11x22y12...x28y18x21x22x28y21x11y22x12y28x18y21y11y22y12y28y18y21y22y28x11x12x18y11y12y18111 e0
根据线性方程解的情况左侧系数矩阵为8x9的矩阵e一定存在非零解。求解该方程就可以得到本质矩阵E的每个元素了。
从本质矩阵恢复相机运动
在得到本质矩阵E之后还需要从E中恢复相机的运动R与t。此时需要用到奇异值分解SVD,假设E的SVD为 E U ∑ V T EU\sum V^T EU∑VT
其中U与V为正交阵∑为奇异值矩阵。有如下性质∑ diag(σ,σ,0)。于是可以配凑出t与R t 1 ∧ U R z ( π 2 ) ∑ V T , R 1 U R z T ( π 2 ) V T t 2 ∧ U R z ( − π 2 ) ∑ V T , R 2 U R z T ( − π 2 ) V T \begin{array}{c} t_{1}^{\wedge}U R_{z}\left(\frac{\pi}{2}\right) \sum V^{\mathrm{T}}, R_{1}U R_{z}^{T}\left(\frac{\pi}{2}\right) V^{T} \\ t_{2}^{\wedge}U R_{z}\left(-\frac{\pi}{2}\right) \sum V^{\mathrm{T}}, R_{2}U R_{z}^{T}\left(-\frac{\pi}{2}\right) V^{T} \end{array} t1∧URz(2π)∑VT,R1URzT(2π)VTt2∧URz(−2π)∑VT,R2URzT(−2π)VT
其中 R z ( π 2 ) [ 0 − 1 0 1 0 0 0 0 1 ] , R z ( − π 2 ) [ − 0 1 0 1 0 0 0 0 1 ] R_z\left(\frac{\pi}{2}\right)\ \left[\begin{matrix}0-10\\100\\001\\\end{matrix}\right],R_z\left(-\frac{\pi}{2}\right)\ \left[-\begin{matrix}010\\100\\001\\\end{matrix}\right] Rz(2π) 010−100001 ,Rz(−2π) −010100001
由于E与-E的等价这里t取负号也是成立的所以一共有四组解 其中只有第一种情况P点在两个相机下具有正的深度所以只要把任意一点求解出深度在两个相机坐标系下深度都为正就可以得到真实解了。
单应矩阵
多视图几何中除了本质矩阵和基础矩阵还存在另一种常见的矩阵单应矩阵(Homography)H它描述了两个平面之间的映射关系。若场景中的特征点都落在同一平面上比如墙、地面等则可以通过单应性进行运动估计。这种情况在无人机携带的俯视相机或扫地机携带的顶视相机中比较常见。 单应矩阵通常描述处于共同平面上的一些点在两张图像之间的变换关系。 单应性在SLAM中具有重要意义。当特征点共面或者相机发生纯旋转时基础矩阵的自由度下降这就出现了所谓的退化(degenerate)。现实中的数据总包含一些噪声这时如果继续使用八点法求解基础矩阵基础矩阵多余出来的自由度将会主要由噪声决定。为了能够避免退化现象造成的影响通常我们会同时估计基础矩阵F和单应矩阵H,选择重投影误差比较小的那个作为最终的运动估计矩阵。
单应矩阵的求解
如果特征点都在一个平面上即点P满足 n T P d 0 n^TPd0 nTPd0
那么有 − n T P d 1 -\frac{n^TP}{d}\ \ 1 −dnTP 1
这里的平面指在O1坐标系下的平面借助这个平面模型按照推导基础矩阵约束过程类似在O2中对P点观测的齐次坐标为 p 2 s 2 K ( R P 1 t ) s 2 K ( R P 1 t ( − n T P 1 d ) ) p_2s_2K\left(RP_1t\right)s_2K\left(RP_1t\left(-\frac{n^TP_1}{d}\right)\right) p2s2K(RP1t)s2K(RP1t(−dnTP1)) s 2 K ( R − t n T d ) P 1 s_2K\left(R-\frac{tn^T}{d}\right)P_1 s2K(R−dtnT)P1 s 2 K ( R − t n T d ) 1 s 1 K − 1 p 1 s_2K\left(R-\frac{tn^T}{d}\right){\frac{1}{s_1}K}^{-1}p_1 s2K(R−dtnT)s11K−1p1
使用相机内参进行坐标转换时如果只有内参K那么点的坐标为物体归一化坐标到像素坐标如果带深度或者比例系数s则为物体实际坐标到像素坐标转换。记p2与p1之间的转换矩阵为H则有 p 2 H p 1 p_2Hp_1 p2Hp1
即 ( x 2 y 2 1 ) ( h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 ) ( x 1 y 1 1 ) \left(\begin{matrix}x_2\\y_2\\1\\\end{matrix}\right)\ \ \left(\begin{matrix}h_1h_2h_3\\h_4h_5h_6\\h_7h_8h_9\\\end{matrix}\right)\left(\begin{matrix}x_1\\y_1\\1\\\end{matrix}\right) x2y21 h1h4h7h2h5h8h3h6h9 x1y11
由于p2与坐标转换后的p1在同一条射线上所以等式右边乘以任意非零常数仍然成立。这里可以通过系数调整使h9为1于是上述方程可以整理得如下等式 u 2 h 1 u 1 h 2 v 1 h 3 h 7 u 1 h 8 v 1 h 9 v 2 h 4 u 1 h 5 v 1 h 6 h 7 u 1 h 8 v 1 h 9 \begin{array}{l} u_{2}\frac{h_{1} u_{1}h_{2} v_{1}h_{3}}{h_{7} u_{1}h_{8} v_{1}h_{9}} \\ v_{2}\frac{h_{4} u_{1}h_{5} v_{1}h_{6}}{h_{7} u_{1}h_{8} v_{1}h_{9}} \end{array} u2h7u1h8v1h9h1u1h2v1h3v2h7u1h8v1h9h4u1h5v1h6 h 1 u 1 h 2 v 1 h 3 − h 7 u 1 u 2 − h 8 v 1 u 2 u 2 h 4 u 1 h 5 v 1 h 6 − h 7 u 1 v 2 − h 8 v 1 v 2 v 2 \begin{array}{l} h_{1} u_{1}h_{2} v_{1}h_{3}-h_{7} u_{1} u_{2}-h_{8} v_{1} u_{2}u_{2} \\ h_{4} u_{1}h_{5} v_{1}h_{6}-h_{7} u_{1} v_{2}-h_{8} v_{1} v_{2}v_{2} \end{array} h1u1h2v1h3−h7u1u2−h8v1u2u2h4u1h5v1h6−h7u1v2−h8v1v2v2
这样一对匹配点就可以获得两个方程当有4对匹配点时则可以得到如下方程组 ( u 1 1 v 1 1 1 0 0 0 − u 1 1 u 2 1 − v 1 1 u 2 1 0 0 0 u 1 1 v 1 1 1 − u 1 1 v 2 1 − v 1 1 v 2 1 u 1 2 v 1 2 1 0 0 0 − u 1 2 u 2 2 − v 1 2 u 2 2 0 0 0 u 1 2 v 1 2 1 − u 1 2 v 2 2 − v 1 2 v 2 2 u 1 3 v 1 3 1 0 0 0 − u 1 3 u 2 3 − v 1 3 u 2 3 0 0 0 u 1 3 v 1 3 1 − u 1 3 v 2 3 − v 1 3 v 2 3 u 1 4 v 1 4 1 0 0 0 − u 1 4 u 2 4 − v 1 4 u 2 4 0 0 0 u 1 4 v 1 4 1 − u 1 4 v 2 4 − v 1 4 v 2 4 ) ( h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 ) ( u 2 1 v 2 1 u 2 2 v 2 2 u 2 3 v 2 3 u 2 4 v 2 4 ) \left(\begin{array}{cccccccc} u_{1}^{1} v_{1}^{1} 1 0 0 0 -u_{1}^{1} u_{2}^{1} -v_{1}^{1} u_{2}^{1} \\ 0 0 0 u_{1}^{1} v_{1}^{1} 1 -u_{1}^{1} v_{2}^{1} -v_{1}^{1} v_{2}^{1} \\ u_{1}^{2} v_{1}^{2} 1 0 0 0 -u_{1}^{2} u_{2}^{2} -v_{1}^{2} u_{2}^{2} \\ 0 0 0 u_{1}^{2} v_{1}^{2} 1 -u_{1}^{2} v_{2}^{2} -v_{1}^{2} v_{2}^{2} \\ u_{1}^{3} v_{1}^{3} 1 0 0 0 -u_{1}^{3} u_{2}^{3} -v_{1}^{3} u_{2}^{3} \\ 0 0 0 u_{1}^{3} v_{1}^{3} 1 -u_{1}^{3} v_{2}^{3} -v_{1}^{3} v_{2}^{3} \\ u_{1}^{4} v_{1}^{4} 1 0 0 0 -u_{1}^{4} u_{2}^{4} -v_{1}^{4} u_{2}^{4} \\ 0 0 0 u_{1}^{4} v_{1}^{4} 1 -u_{1}^{4} v_{2}^{4} -v_{1}^{4} v_{2}^{4} \end{array}\right)\left(\begin{array}{c} h_{1} \\ h_{2} \\ h_{3} \\ h_{4} \\ h_{5} \\ h_{6} \\ h_{7} \\ h_{8} \end{array}\right)\left(\begin{array}{c} u_{2}^{1} \\ v_{2}^{1} \\ u_{2}^{2} \\ v_{2}^{2} \\ u_{2}^{3} \\ v_{2}^{3} \\ u_{2}^{4} \\ v_{2}^{4} \end{array}\right) u110u120u130u140v110v120v130v140101010100u110u120u130u140v110v120v130v1401010101−u11u21−u11v21−u12u22−u12v22−u13u23−u13v23−u14u24−u14v24−v11u21−v11v21−v12u22−v12v22−v13u23−v13v23−v14u24−v14v24 h1h2h3h4h5h6h7h8 u21v21u22v22u23v23u24v24
求解该非齐次方程组可以得到H矩阵的每个系数。
从单应矩阵恢复相机运动
而从H矩阵恢复相机运动也可以通过奇异值分解的方法即
分解的结果会有八组解此时会把八组解都进行验证取重投影误差最小的一组作为最优解。
单应矩阵在相机发生纯旋转时仍然可以求得旋转而不是像本质矩阵在发生纯旋转时方程其实是失效的此时求得的矩阵受噪声影响很大而单应矩阵能更好的应对这个纯旋转问题来恢复相机的运动。
三角测量
单张图像是无法得到特征点深度的在有两张图像后通过本质矩阵或者单应矩阵我们可以恢复相机之间的运动。在求得相机运动后可以通过三角测量来求得特征点在相机坐标系下的坐标。 假设x1,x2是两个特征点实际物体的归一化坐标那么它们满足 s 2 x 2 s 1 R x 1 t s_2x_2s_1Rx_1t s2x2s1Rx1t
其中R与t为O2下O1的位姿。上式两边同时乘以x2^可得 s 2 x 2 ∧ x 2 s 1 x 2 ∧ R x 1 x 2 ∧ t s_2x_2^\land x_2s_1x_2^\land Rx_1x_2^\land t s2x2∧x2s1x2∧Rx1x2∧t
显然左式等于0于是有 s 1 x 2 ∧ R x 1 x 2 ∧ t 0 s_1x_2^\land Rx_1x_2^\land t\ 0 s1x2∧Rx1x2∧t 0
该式中只有s1一个未知数可以很方便得求出p1的深度。有了p1深度p2的深度s2也很容易求出了。实际中由于噪声的存在R,t不一定能使方程准确的等于0更常见的做法是通过二小二乘的方式求得点的坐标而不是直接求解。
参考链接https://www.guyuehome.com/