对极几何 您所在的位置:网站首页 成像的本质 对极几何

对极几何

2024-07-12 14:52| 来源: 网络整理| 查看: 265

对极几何 —两相机相对位置关系与相机姿态估计方法(基础矩阵,本征矩阵,单应矩阵梳理)附c++源码 对极几何是什么,它有什么用(整体流程理解)对极约束(描述两相机关系)基础矩阵特性与求解方法本征矩阵特性与求解方法相机姿态恢复方法怎么又冒出了个单应矩阵H?

对极几何是什么,它有什么用(整体流程理解)

如图,当空间上有一个点分别在相机1和相机2上进行成像,这两个点存在什么约束关系呢?再扩展一下,真实世界下的场景分别用两个相机进行拍摄,获得两张照片,两张照片有什么约束关系呢?那么对极几何就是用来描述这种变换关系的。

从对极几何的关系公式我们可以总结出基础矩阵F和本征矩阵E,这两个矩阵描述了相机1和相机2成像的变换关系,我们通过求解基础矩阵,从而求解出本质矩阵,最后可以恢复相机姿态R, T。 在这里插入图片描述

对极约束(描述两相机关系)

在这里插入图片描述 简单来说,相机1成像面上的点 x 1 x_1 x1​与相机2成像面上的点 x 2 x_2 x2​之间可以找到这样一个约束关系: x 2 T F x 1 = 0 x_2^TFx_1=0 x2T​Fx1​=0,这就是对极约束。而F就是基础矩阵。(这样的约束关系表现在实际几何问题上,如上图,描述的是点 x 1 x_1 x1​和极线 l 2 l_2 l2​的映射关系) 那么当我们把相机1成像面上的点坐标x1转换到相机1坐标系下,此时坐标令为 x 1 ^ \hat{x_1} x1​^​。那相机1坐标系中的点 x 1 ^ \hat{x_1} x1​^​ 与相机2坐标系中的点 x 2 ^ \hat{x_2} x2​^​也有一个对应变换关系: x ^ 1 2 E x ^ 2 = 0 \hat{x}_1^2E\hat{x}_2=0 x^12​Ex^2​=0,这里的E就是本征矩阵。

注意,这里相机成像面上的点 x 1 x_1 x1​与相机坐标系中的点 x 1 ^ \hat{x_1} x1​^​ 不一样,他们之间存在一个投影关系: x 1 = K 1 x 1 ^ x_1=K_1\hat{x_1} x1​=K1​x1​^​,即有 E = K 2 − T F K 1 E=K_2^{-T}FK_1 E=K2−T​FK1​,参数 K i K_i Ki​为相机 i i i的一些特征参数,后面我们就是通过这个投影关系,从基础矩阵F中求解本征矩阵E

基础矩阵特性与求解方法

基础矩阵F为 3 × 3 3×3 3×3矩阵,矩阵的奇异值为 [ ð 1 , ð 2 , 0 ] [\eth_1, \eth_2,0] [ð1​,ð2​,0]。对于一对匹配点 [ u 2 , v 2 , 1 ] [u_2,v_2,1] [u2​,v2​,1]和 [ u 1 , v 1 , 1 ] [u_1,v_1,1] [u1​,v1​,1]存在如下关系: ( u 2 v 2 1 ) = ( F 11 F 12 F 13 F 21 F 22 F 23 F 31 F 32 F 33 ) ( u 1 v 1 1 ) \begin{pmatrix} u_2 & v_2 & 1 \end{pmatrix} = \begin{pmatrix} F_{11} & F_{12} & F_{13} \\ F_{21} & F_{22} & F_{23} \\ F_{31} & F_{32} & F_{33} \end{pmatrix} \begin{pmatrix} u_1 \\ v_1 \\ 1 \end{pmatrix} (u2​​v2​​1​)=⎝ ⎛​F11​F21​F31​​F12​F22​F32​​F13​F23​F33​​⎠ ⎞​⎝ ⎛​u1​v1​1​⎠ ⎞​ 匹配点的第三维坐标为1,是因为成像面上的点没有深度信息,用1表示。 那么我们就可以通过已知的多对匹配特征点列方程求解矩阵F。(具体求解这里就不赘述了,求解需要的特征点数至少为8对,多对特征点可以采用RANSAC方法。注意求解出来的F需要进行奇异值分解并把最后的奇异值令为0。Opencv也提供了相关函数,通过输入特征点对求解基础矩阵)

本征矩阵特性与求解方法

本征矩阵E为 3 × 3 3×3 3×3矩阵,矩阵的奇异值为 [ ð , ð , 0 ] [\eth, \eth,0] [ð,ð,0],他的两个奇异值相等。那么怎么求解本征矩阵呢?认真看过上面对极约束就可以知道本质矩阵是描述两相机坐标系下点的约束关系的矩阵,它和基础矩阵F有如下关系: E = K 2 − T F K 1 E=K_2^{-T}FK_1 E=K2−T​FK1​ 只要求得 K K K,就可以求出本征矩阵 E E E。而 K K K表征的是相机内参,有如下关系: K = ( f x 0 c x 0 f y c y 0 0 1 ) K= \begin{pmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix} K=⎝ ⎛​fx​00​0fy​0​cx​cy​1​⎠ ⎞​ 其中, f x , f y f_x,f_y fx​,fy​是相机沿x和y方向的焦距,一般 f = f x = f y f=f_x=f_y f=fx​=fy​。 c x , c y c_x,c_y cx​,cy​为相机的径向畸变稀疏。不考虑畸变是设为0。

相机姿态恢复方法

相机的姿态为R和T两个参数,这两个参数可以由本征矩阵E获得。 对E进行奇异值SVD分解: E = U d i a g ( ð , ð , 0 ) V T E= Udiag(\eth,\eth,0)V^T E=Udiag(ð,ð,0)VT 则R和T的可能值有(推导过程省略): T 1 = U ( : , 2 ) T 2 = − U ( : , 2 ) R 1 = U R Z ( π 2 ) V T R 2 = U R z T ( π 2 ) V T T_1 = U(:,2)\\ T_2=-U(:,2)\\ R_1 = UR_Z(\frac{\pi}{2})V^T \\R_2 = UR_z^T(\frac{\pi}{2})V_T T1​=U(:,2)T2​=−U(:,2)R1​=URZ​(2π​)VTR2​=URzT​(2π​)VT​ 其中 在这里插入图片描述 R和T有四种组合方式 ( R 1 , T 1 ) , ( R 1 , T 2 ) , ( R 2 , T 1 ) , ( R 2 , T 2 ) (R_1,T_1),(R_1,T_2),(R_2,T_1),(R_2,T_2) (R1​,T1​),(R1​,T2​),(R2​,T1​),(R2​,T2​),需要根据实际情况选择。(这里先留着不写) 在这里插入图片描述

怎么又冒出了个单应矩阵H?

前面讲的基础矩阵和本征矩阵都是不满秩的,所以不可逆(图像上一个点到3D空间不可逆,缺失了深度信息)。而单应矩阵H满秩。 基础矩阵F表示的像点和另一幅图像上的对极线的映射关系,使用基础矩阵无法得到像点对应点在另一幅图像上的确切位置。 单应矩阵H则是点和点的映射,使用单应矩阵可以找到像点在另一幅图像上对应点的确切位置。 单应矩阵可以直接通过下面的等式直接求得 ( u 2 v 2 1 ) = ( F 11 F 12 F 13 F 21 F 22 F 23 F 31 F 32 F 33 ) ( u 1 v 1 1 ) \begin{pmatrix} u_2 & v_2 & 1 \end{pmatrix} = \begin{pmatrix} F_{11} & F_{12} & F_{13} \\ F_{21} & F_{22} & F_{23} \\ F_{31} & F_{32} & F_{33} \end{pmatrix} \begin{pmatrix} u_1 \\ v_1 \\ 1 \end{pmatrix} (u2​​v2​​1​)=⎝ ⎛​F11​F21​F31​​F12​F22​F32​​F13​F23​F33​​⎠ ⎞​⎝ ⎛​u1​v1​1​⎠ ⎞​



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有