【立体视觉(二)】之对极几何与关键矩阵

news2025/2/25 18:04:03

【立体视觉(二)】之对极几何与关键矩阵

  • 一、对极几何
  • 二、关键矩阵
    • 一)本质矩阵与基础矩阵
    • 二)本质矩阵的求解
    • 三)本质矩阵的分解
    • 三)单应矩阵及其求解

此为个人学习笔记,在各处借鉴了不少好图好文(参考文献在文末),主要是对相关知识进行梳理,以期形成自己的体系。文字表述东拼西凑,符号公式手动输入,若有错误烦请指出。

一、对极几何

现希望求两帧图像 I 1 、 I 2 I_1、I_2 I1I2 间的运动( R 、 t R、t Rt ),若在两帧图像中检测到了一对同名点 p 1 、 p 2 p_1、p_2 p1p2 如图所示。
暂且忘掉成像原理中的符号意义。
在这里插入图片描述

  • 基线(Baseline): O 1 O 2 O_1O_2 O1O2 连线
  • 极点(Epipoles): e 1 、 e 2 e_1、e_2 e1e2
  • 极线(Epipolar line): l 1 、 l 2 l_1、l_2 l1l2
  • 极平面(Epipolar plane): O 1 、 O 2 、 P O_1、O_2、P O1O2P 形成的平面

设左相机坐标系坐标的空间点 P = [ X , Y , Z ] T P=[X,Y,Z]^T P=[X,Y,Z]T,则由针孔相机模型知两个像素位置为:

s 1 p 1 = K P , s 2 p 2 = K ( R P + t ) s_1 p_1=KP, s_2 p_2=K(RP+t) s1p1=KPs2p2=K(RP+t)

其中, K K K 为内参矩阵, R , t R,t Rt 为两个相机之间的运动关系(具体来说,是 R 21 , t 21 R_{21},t_{21} R21t21 )。 s 1 , s 2 s_1,s_2 s1s2 P P P点在两个坐标系的 z z z轴坐标,在使用齐次坐标时,一个向量将等于它自身乘上任意的非零常数,这通常用于表达一个投影关系,称为尺度意义下相等(equal up to a scale)。记作 s p ≃ p sp≃p spp。因此有
p 1 ≃ K P , p 2 ≃ K ( R P + t ) p_1≃KP,p_2≃K(RP+t) p1KPp2K(RP+t)

接下来开始推导:

  1. K K K移到等式左边:
    K 1 1 p 1 ≃ P , K 2 1 p 2 ≃ R P + t K^1_1p_1≃P,K^1_2p_2≃RP+t K11p1PK21p2RP+t
  2. 在归一化平面上,有 x 1 = K 1 1 p 1 , x 2 = K 2 1 p 2 x_1=K^1_1p_1,x_2=K^1_2p_2 x1=K11p1x2=K21p2,则 x 1 = P , x 2 = R P + t x_1=P,x_2=RP+t x1=Px2=RP+t,那么
    x 2 = R x 1 + t x_2=Rx_1+t x2=Rx1+t
  3. 等式两边用 t t t 叉乘(矢量与自己叉乘为0)有 t × x 2 = t × R x 1 + t × t t \times x_2=t \times Rx_1+t \times t t×x2=t×Rx1+t×t,即
    t × x 2 = t × R x 1 t \times x_2=t \times Rx_1 t×x2=t×Rx1
  4. 等式两边同时左乘 x 2 T x_2^T x2T,得 x 2 T t × x 2 = x 2 T t × R x 1 x_2^Tt \times x_2=x_2^T t \times Rx_1 x2Tt×x2=x2Tt×Rx1,此时等式左边显然为0,那么
    x 2 T t × R x 1 = 0 x_2^T t \times Rx_1=0 x2Tt×Rx1=0
  5. 由于叉乘等价于反对称矩阵的点乘, t t t 的反对称矩阵为 t ∧ t^{\land} t(相当于两侧同时与 t t t 做外积),则
    x 2 T t ∧ R x 1 = 0 x_2^T t^{\land} Rx_1=0 x2TtRx1=0

该式描述了两个像素坐标 x 1 、 x 2 x_1、x_2 x1x2 之间的联系,即空间点在两个相机的成像点通过 t t t 外参矩阵 建立了一个等式关系,或者称为一种约束关系,这个约束就叫做对极约束
注意,以上 x 1 、 x 2 x_1、x_2 x1x2 为归一化坐标,若用 p 1 、 p 2 p_1、p_2 p1p2 回代 x 1 、 x 2 x_1、x_2 x1x2,有
p 2 T K 2 − T t ∧ R K 1 1 p 1 = 0 p_2^TK^{-T}_2 t^{\land} RK^1_1p_1=0 p2TK2TtRK11p1=0
这两个公式等价,都称为对极约束,几何意义为 O 1 、 O 2 、 P 、 p 1 、 p 2 O_1、O_2、P、p_1、p_2 O1O2Pp1p2 共面。


二、关键矩阵

关键矩阵:本质矩阵、基础矩阵、单应性矩阵。
关键矩阵可以建立两个视图公共点之间的坐标联系,或者完成公共点之间的坐标转换。它们就像立体视觉双视图之间的桥梁,让彼此紧密相连,形成一个整体,才算有了立体视觉系统的概念。

一)本质矩阵与基础矩阵

E = t ∧ R E=t^{\land} R E=tR F = K 2 − T t ∧ R K 1 1 F=K^{-T}_2 t^{\land} RK^1_1 F=K2TtRK11 ,分别称为本质矩阵(Essential Matrix)基础矩阵(Fundamental Matrix),则对极约束可表示为:
x 2 T E x 1 = 0 p 2 T F p 1 = 0 x_2^T Ex_1=0\\ p_2^TFp_1=0 x2TEx1=0p2TFp1=0

对极约束简洁第给出了两个匹配点的空间位置关系,于是相机位姿估计问题变为以下两步:

  1. 根据配对点的像素位置求出 E E E F F F
  2. 根据 E E E F F F求出 R 、 t R、t Rt

可以看到,本质矩阵 E E E 与基础矩阵 F F F 的区别:本质矩阵直接与归一化坐标 x x x 建立关系,但 x x x 需要由内参矩阵 K K K 与 像素坐标 p p p 计算,所以使用本质矩阵的前提是已知内参矩阵 K K K;而基础矩阵直接与像素坐标 p p p 建立关系,不需要内参矩阵已知。或者说:

  • 本质矩阵:反映【空间一点P的像点】在【不同视角摄像机】下【摄像机坐标系】中的表示之间的关系。
  • 基础矩阵:反映【空间一点P的像点】在【不同视角摄像机】下【图像坐标系】中的表示之间的关系。

由于 E E E F F F 只相差了相机内参(两者的求解方法是一样的),而内参在SLAM等问题中通常是已知的,所以实践中往往使用形式更简单的 E E E

二)本质矩阵的求解

由于平移和旋转各有 3 个自由度,故 E = t ∧ R E=t^{\land} R E=tR 共有 6 个自由度。由于对极约束是等式为零的约束,所以对 E 乘以任意非零常数后,对极约束依然满足,即 E E E 在不同尺度下是等价的,故 E E E 实际上有 5 个自由度。这表明我们最少可以用 5 对点来求解 E E E 。但是, E E E 的内在性质是一种非线性性质,在估计时会带来麻烦,因此,也可以只考虑它的尺度等价性,使用 8 对点来估计 E——这就是经典的八点法(Eight-point-algorithm)。八点法只利用了 E E E 的线性性质,因此可以在线性代数框架下求解。
考虑一对匹配点,它们的归一化坐标为 x 1 = [ u 1 , v 1 , 1 ] T x_1=[u_1,v_1,1]^T x1=[u1,v1,1]T x 2 = [ u 2 , v 2 , 1 ] T x_2=[u_2,v_2,1]^T x2=[u2,v2,1]T,根据对极约束,有
[ u 2 v 2 1 ] [ e 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 e 9 ] [ u 1 v 1 1 ] = 0 \left[ \begin{matrix} u_2 & v_2 & 1 \end{matrix} \right] \left[ \begin{matrix} e_1 & e_2 & e_3\\ e_4 & e_5 & e_6\\ e_7 & e_8 & e_9\\ \end{matrix} \right] \left[ \begin{matrix} u_1\\ v_1 \\ 1 \end{matrix} \right]=0 [u2v21] e1e4e7e2e5e8e3e6e9 u1v11 =0
将矩阵 E E E 展开,写成向量形式:
e = [ e 1 , e 2 , e 3 , e 4 , e 5 , e 6 , e 7 , e 8 , e 9 ] T e=[e_1,e_2,e_3,e_4,e_5,e_6,e_7,e_8,e_9]^T e=[e1,e2,e3,e4,e5,e6,e7,e8,e9]T
那么,对极约束可以写成与 e e e 相关的线性形式:
[ u 2 u 1 , u 2 v 1 , u 2 , v 2 u 1 , v 2 v 1 v 2 , u 1 , v 1 , 1 ] ⋅ e = 0 [u_2u_1,u_2v_1,u_2,v_2u_1,v_2v_1v_2,u_1,v_1,1] \cdot e=0 [u2u1,u2v1,u2,v2u1,v2v1v2,u1,v1,1]e=0
同理,对其他点对也有相同的表示。则可得一个线性方程组( u i , v i u^i, v^i ui,vi表示第 i i i 个特征点,以此类推):
[ u 2 1 u 1 1 , u 2 1 v 1 1 , u 2 1 , v 2 1 u 1 1 , v 2 1 v 1 1 v 2 1 , u 1 1 , v 1 1 , 1 u 2 2 u 1 2 , u 2 2 v 1 2 , u 2 2 , v 2 2 u 1 2 , v 2 2 v 1 2 v 2 2 , u 1 2 , v 1 2 , 1 u 2 3 u 1 3 , u 2 3 v 1 3 , u 2 3 , v 2 3 u 1 3 , v 2 3 v 1 3 v 2 3 , u 1 3 , v 1 3 , 1 . . . u 2 8 u 1 8 , u 2 8 v 1 8 , u 2 8 , v 2 8 u 1 8 , v 2 8 v 1 8 v 2 8 , u 1 8 , v 1 8 , 1 ] [ e 1 e 2 e 3 e 4 e 5 e 6 e 7   e 8 e 9 ] = 0 \left[ \begin{matrix} u^1_2u^1_1,u^1_2v^1_1,u^1_2,v^1_2u^1_1,v^1_2v^1_1v^1_2,u^1_1,v^1_1,1\\ u^2_2u^2_1,u^2_2v^2_1,u^2_2,v^2_2u^2_1,v^2_2v^2_1v^2_2,u^2_1,v^2_1,1\\ u^3_2u^3_1,u^3_2v^3_1,u^3_2,v^3_2u^3_1,v^3_2v^3_1v^3_2,u^3_1,v^3_1,1\\ ...\\ u^8_2u^8_1,u^8_2v^8_1,u^8_2,v^8_2u^8_1,v^8_2v^8_1v^8_2,u^8_1,v^8_1,1 \end{matrix} \right] \left[ \begin{matrix} e_1 \\ e_2 \\ e_3\\ e_4 \\ e_5 \\ e_6\\ e_7 \\\ e_8 \\ e_9\\ \end{matrix} \right] =0 u21u11,u21v11,u21,v21u11,v21v11v21,u11,v11,1u22u12,u22v12,u22,v22u12,v22v12v22,u12,v12,1u23u13,u23v13,u23,v23u13,v23v13v23,u13,v13,1...u28u18,u28v18,u28,v28u18,v28v18v28,u18,v18,1 e1e2e3e4e5e6e7 e8e9 =0
解该线性方程 A e = 0 Ae=0 Ae=0 得到矢量 e e e ,即可得到本质矩阵 E E E 。矢量 e e e 为系数矩阵 A A A 的零空间,由线性代数的知识可知方程的特解数为 9 − r a n k ( A ) 9-rank(A) 9rank(A),当 r a n k ( A ) = 8 rank(A)=8 rank(A)=8 时,存在唯一特解,方程所有解均为特解的常数倍,对应 E E E 的尺度不变性。

三)本质矩阵的分解

本质矩阵 E = t ∧ R E=t^{\land} R E=tR 是一个 3 × 3 3\times 3 3×3 矩阵,其奇异值必定为 [ σ , σ , 0 ] T [\sigma,\sigma,0]^T [σ,σ,0]T 的形式,称为本质矩阵的内在性质(继承于反对称矩阵 t ∧ t^{\land} t 的性质)。可以通过 SVD 分解得到 R R R t t t,若 E E E 的 SVD 分解为 E = U Σ V T E=U\Sigma V^T E=UΣVT,则 R R R t t t 可能的结果有:
t 1 ∧ = U Z U T , t 2 ∧ = U Z T U T , R 1 = U W U T , R 2 = U W T U T t_1^{\land}=UZU^T, t_2^{\land}=UZ^T U^T,\\R_1=UW U^T, R_2=UW^T U^T t1=UZUT,t2=UZTUT,R1=UWUT,R2=UWTUT
其中, W = [ 0 − 1 0 1 0 0 0 0 1 ] W=\left[ \begin{matrix} 0 & -1 & 0\\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{matrix} \right] W= 010100001 (正交阵), Z = [ 0 1 0 − 1 0 0 0 0 1 ] Z=\left[ \begin{matrix} 0 & 1 & 0\\ -1 & 0 & 0 \\ 0 & 0 & 1 \end{matrix} \right] Z= 010100001 (反对称矩阵,若矢量z= W = ( 0 − 1 0 ) T W=\left( \begin{matrix} 0 & -1 & 0 \end{matrix} \right)^T W=(010)T,则 z ∧ = Z z^{\land}=Z z=Z)。

解算 t t t 时,并不需要先解算出 t ∧ t^{\land} t ,以 t 1 ∧ = U Z U T t_1^{\land}=UZU^T t1=UZUT 为例,两边同乘 t 1 t_1 t1,有 t 1 ∧ t 1 = U Z U T t 1 t_1^{\land}t_1=UZU^Tt_1 t1t1=UZUTt1,即 U Z U T t 1 = 0 UZU^Tt_1=0 UZUTt1=0,两边左乘 U T U^T UT,有 Z U T t 1 = 0 ZU^Tt_1=0 ZUTt1=0,因为 z ∧ = Z z^{\land}=Z z=Z,且 z ∧ z = 0 z^{\land}z=0 zz=0,所以有 U T t 1 = z U^Tt_1=z UTt1=z,得 t 1 = U z = U ( 0 , 0 , 1 ) T t_1=Uz=U(0,0,1)^T t1=Uz=U(0,0,1)T,也就是说, t 1 t_1 t1 为矩阵 U U U 的第三列,即
t 1 = U . c o l ( 3 ) , t 2 = − t 1 t_1=U.col(3),t_2=-t_1 t1=U.col(3)t2=t1
一共有四组可能的 R R R t t t 的组合:
在这里插入图片描述

但是,只有在上面第一种组合中 P P P 在两个相机中都具有正的深度。因此,只要将任意观测点带入验证即可得到正确的那组解。

根据线性方程解出的 E E E,可能不满足 E E E 的内在性质:奇异值为 ( σ , σ , 0 ) (σ, σ, 0) (σ,σ,0)。通常的做法是,对八点法求得的 E E E 进行 SVD 分解后,会得到奇异值矩阵 Σ = d i a g ( σ 1 , σ 2 , σ 3 ) Σ = diag(σ1, σ2, σ3) Σ=diag(σ1,σ2,σ3),设 σ 1 ⩾ σ 2 ⩾ σ 3 σ1 ⩾ σ2 ⩾ σ3 σ1σ2σ3,取:
E = U d i a g ( σ 1 + σ 1 2 , σ 1 + σ 1 2 , 0 ) E=Udiag(\frac{\sigma_1+\sigma_1}{2},\frac{\sigma_1+\sigma_1}{2},0) E=Udiag(2σ1+σ1,2σ1+σ1,0)
这相当于是把求出来的矩阵投影到了 E E E 所在的流形上。更简单的做法是将奇异值矩阵取成 d i a g ( 1 , 1 , 0 ) diag(1, 1, 0) diag(1,1,0),因为 E E E 具有尺度等价性,所以这样做也是合理的。

应用本质矩阵的前提是已知内参矩阵 K K K 。而基础矩阵不需要内参,但是未知数多,很难分解得到准确的内外参,我们需要做一些假设,比如具有初始的焦距值,比如像主点在图像中心等。而无论是估计本质矩阵还是估计基础矩阵,分解得到的相机参数都只能作为初值,要得到精确的参数,还需要通过非线性迭代优化求解精确值。

三)单应矩阵及其求解

本质矩阵和基础矩阵并不是两个像素之间的相互转换关系,而是一种坐标之间的内在约束式。那是否存在直接将左视图像素坐标转换到右视图对应点像素坐标的表达式呢?有的,即单应矩阵(Homography matrix)H,当空间中场景是同一个平面时,它们在左右视图的投影点可通过可逆的单应性矩阵一对一相互转换。
单应是射影几何中的概念,又称为射影变换。它把一个射影平面上的点(三维齐次矢量)映射到另一个射影平面上,并且把直线映射为直线。换句话说,单应是关于三维齐次矢量的一种线性变换。

考虑在空间内一平面满足方程: n T P + d = 0 n^TP+d=0 nTP+d=0,结合以上内容,有

p 2 ≃ K ( R P + t ) p 2 ≃ ( R P + t ( − n T P d ) ) p 2 ≃ K ( R − n T P d ) P p 2 ≃ K ( R − n T P d ) K − 1 p 1 p_2≃K(RP+t)\\p_2≃(RP+t(-\frac{n^TP}{d}))\\p_2≃K(R-\frac{n^TP}{d})P\\p_2≃K(R-\frac{n^TP}{d})K^{-1}p_1 p2K(RP+t)p2(RP+t(dnTP))p2K(RdnTP)Pp2K(RdnTP)K1p1
H = K ( R − n T P d ) K − 1 H=K(R-\frac{n^TP}{d})K^{-1} H=K(RdnTP)K1,有
p 2 ≃ H p 1 p 1 ≃ H − 1 p 2 p_2≃Hp_1\\p_1≃H^{-1}p_2 p2Hp1p1H1p2

单应矩阵描述了两个平面之间的映射关系。若场景中的特征点都落在同一平面上(比如墙、地面等),则可以通过单应性来进行运动估计。它的定义它与旋转、平移及平面的参数有关,是一个 3 × 3 3 \times 3 3×3 矩阵。同样,可以先根据匹配点计算 H H H,再分解以计算 R 、 t R、t Rt

[ u 2 v 2 1 ] ≃ [ h 1 h 2 h 3 h 4 h 5 h 6 h 7 h 8 h 9 ] [ u 1 v 1 1 ] \left[ \begin{matrix} u_2\\ v_2 \\ 1 \end{matrix} \right]≃\left[ \begin{matrix} h_1 & h_2 & h_3\\ h_4 & h_5 & h_6\\ h_7 & h_8 & h_9\\ \end{matrix} \right] \left[ \begin{matrix} u_1\\ v_1 \\ 1 \end{matrix} \right] u2v21 h1h4h7h2h5h8h3h6h9 u1v11

不妨让 h 9 = 1 h_9=1 h9=1( 在它取非零值时 ),按照齐次公式的常规处理方式,我们会让第1,2行除以第3行以去除尺度因子,可得
(注意式子里的 u u u v v v的区别)

u 2 = h 1 u 1 + h 2 v 1 + h 3 h 7 u 1 + h 8 v 1 + h 9 v 1 = h 4 u 1 + h 5 v 1 + h 6 h 7 u 1 + h 8 v 1 + h 9 u_2=\frac{h_1u_1+h_2v_1+h_3}{h_7u_1+h_8v_1+h_9}\\ v_1=\frac{h_4u_1+h_5v_1+h_6}{h_7u_1+h_8v_1+h_9} u2=h7u1+h8v1+h9h1u1+h2v1+h3v1=h7u1+h8v1+h9h4u1+h5v1+h6

整理得
h 7 u 1 + h 8 v 1 + h 9 − 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 h_7u_1+h_8v_1+h_9-h_7u_1u_2-h_8v_1u_2=u_2\\ h_4u_1+h_5v_1+h_6-h_7u_1v_2-h_8v_1v_2=v_2 h7u1+h8v1+h9h7u1u2h8v1u2=u2h4u1+h5v1+h6h7u1v2h8v1v2=v2

这样一组匹配点对就可以构造出两项约束(事实上有三个约束,但因为线性相关 ,只取前两个),于是自由度为 8 的单应矩阵可以通过 4 对匹配特征点算出(注意,这些特征点不能有三点共线的情况),即求解以下的线性方程组(当 h9 = 0 时,右侧为零)。
[ 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 3 2 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 3 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{matrix} u_1^1 & v_1^1 & 1 & 0 & 0 & 0 & -u_1^1u_2^1& -v_1^1u_2^1\\ 0 & 0 & 0 &u_1^1 & v_1^1 & 1 & -u_1^1v_2^1& -v_1^1v_2^1\\ u_1^2 & v_1^2 & 1 & 0 & 0 & 0 & -u_1^2u_2^2& -v_1^2u_2^2\\ 0 & 0 & 0 & u_1^2 & v_1^2 & 1 & -u_1^2v_2^2& -v_1^2v_2^2\\ u_1^3 & v_1^3 & 1 & 0 & 0 & 0 & -u_3^2u_2^3& -v_1^3u_2^3\\ 0 & 0 & 0 & u_1^3 & v_1^3 & 1 & -u_1^3v_2^3& -v_1^3v_2^3\\ u_1^4 & v_1^4 & 1 & 0 & 0 & 0 & -u_3^4u_2^4& -v_1^4u_2^4\\ 0 & 0 & 0 & u_1^4 & v_1^4 & 1 & -u_1^4v_2^4& -v_1^4v_2^4\\ \end{matrix}\right] \left[\begin{matrix}h_1\\h_2\\h_3\\h_4\\h_5\\h_6\\h_7\\h_8\end{matrix}\right] = \left[\begin{matrix}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{matrix}\right] u110u120u130u140v110v120v130v140101010100u110u120u130u140v110v120v130v1401010101u11u21u11v21u12u22u12v22u32u23u13v23u34u24u14v24v11u21v11v21v12u22v12v22v13u23v13v23v14u24v14v24 h1h2h3h4h5h6h7h8 = u21v21u22v22u23v23u24v24
这种做法把 H H H 矩阵看成了向量,通过解该向量的线性方程来恢复 H H H,又称**直接线性变换法(Direct Linear Transform,DLT)*。与本质矩阵相似,求出单应矩阵以后需要对其进行分解,才可以得到相应的旋转矩阵 R R R 和平移向量 t t t。分解的方法包括数值法与解析法。单应矩阵的分解同样会返回 4 组旋转矩阵与平移向量,并且同时可以计算出它们分别对应的场景点所在平面的法向量。如果已知成像的地图点的深度全为正值(即在相机前方),则又可以排除两组解。最后仅剩两组解,这时需要通过更多的先验信息进行判断。

单应性在 SLAM 中具有重要意义。当特征点共面或者相机发生纯旋转时,基础矩阵的自由度下降,这就出现了所谓的退化(degenerate)。现实中的数据总包含一些噪声,这时候如果继续使用八点法求解基础矩阵,基础矩阵多余出来的自由度将会主要由噪声决定。为了能够避免退化现象造成的影响,通常我们会同时估计基础矩阵 F F F 和单应矩阵 H H H,选择重投影误差比较小的那个作为最终的运动估计矩阵。

除了DLT,还可以用RANSAC。


参考文献:

[1] 高翔, 张涛, 视觉SLAM十四讲:从理论到实践(第2版)
[2] 立体视觉入门指南(2):关键矩阵(本质矩阵,基础矩阵,单应矩阵)
[3] 对极几何和三角测量
[4] 计算机视觉6—对极几何和基础矩阵
[5] 单应矩阵与对极几何

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618964.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu18.04利用astra pro相机实现ORB—SLAM3实时点云稠密建图—上

Ubuntu18.04利用astra pro相机实现ORB—SLAM3实时点云稠密建图—上 前言前期准备—ROS完整安装 OpenCV的安装(4.2.0)安装依赖C11特性的编译器Pangolin测试pangolin程序 EigenboostORB-SLAM3 前言 建议编译ORB-SLAM3的硬件设备内存配置至少4GB以上&#…

LinuxSCP和SSH命令

scp命令 cp命令,是拷贝的作用,可以实现将文件或者目录拷贝到另外一个位置。 scp命令,也是拷贝的作用,但是是远程拷贝,可以实现将文件或者目录拷贝到另外的一台机器上。 命令格式 # scp file 远程用户名远程服务器:目标…

Midjourney竞品Leap免费试用; Google 刚刚发布10门独立AI课程

🦉 AI新闻 🚀 Midjourney竞品,免费试玩AI图片生成工具Leap,细节还需提升 摘要:Leap是一款免费试玩的AI图片生成工具,用户可以选择不同的生成模型和步长及数量。功能上尚需提高细节把握能力,但…

【genius_platform软件平台开发】第九十七讲:linux设备驱动中信号(signal函数)的异步通知机制

1. 信号的异步通知 意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”的概念,比较准确的称谓是“信号驱动的异步I/O”。信号是在软件层次上对中断机制的一种模拟,在…

创新升级!深度学习算法注入机器视觉应用,助力工业领域智慧生产

随着人工智能在算力、算法、大数据等方面的技术突破,基于神经网络的深度学习算法在各行各业加速渗透。而制造业作为AI融合创新的主要场景之一,在机器视觉技术的加持下,持续赋能生产线的自动化、智能化升级,赋予工业生产“感知”能…

【Java se】为什么大部分小数在计算机中是不精确的

目录 一、什么是小数 二、浮点数在计算机中的转换规则 (1)整数部分转换步骤 (2) 小数部分转换步骤 三、使用代码说明 四、手动转换小数 一、什么是小数 在计算机中,也称小数为浮点数,因为在使用科学计…

程序员的炫技代码写法

程序员的炫技代码写法 程序员,这个职业总是让人感到神秘而又充满魅力。他们手中的代码常常充满了令人惊叹的炫技操作,让人不禁感叹他们的技术能力之高。在这篇博客中,我想和大家分享一些我所知道的程序员的炫技代码写法。 一、代码美感——…

什么是死锁?互斥锁进入死锁怎么解决?

1.死锁是什么? (1)死锁是一组相互竞争资源的线程因为他们之间得到互相等待导致“永久“阻塞的现象; (你等我 我等你 你不放我也不放 就导致“永久“阻塞的现象) (2)死锁是指两个或…

mysql索引possible_keys,key问题。

explain中有两个字段possible_keys,key。 possible_keys:表示可能用到的索引。 key:实际使用到的索引。 为什么会有单独的两列? 你的where条件中如果使用到了索引列字段,那么possible_keys会列出索引字段对应的索引…

【区块链】科普:零知识证明、ZKRollup 与 zkEVM

译者语:2023 年将迎来 zkEVM 大发展,让我们看看有哪些项目在进行 zkEVM 的研究,zkEVM 可以做什么 原文链接: https://blog.pontem.network/zk-proofs-301-zksync-other-zkevm-b28641dc8565这篇文章让我们解释一下zkEVM是如何工作的,为什么它们是如此重要的创新。 长话短说…

基于html+css的图展示113

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

云下自建Grafana获取阿里云监控数据

前言 官方文档,我看了要付费的 https://help.aliyun.com/document_detail/313316.html?spma2c4g.217924.0.i2 grafana:8.3.5 插件名称:aliyun-cms-services grafana安装: https://blog.csdn.net/qq_44379042/article/details/121852310 …

Activiti 工作流 学习笔记

环境信息: IntelliJ IDEA 2021.3.3 (Ultimate Edition) JDK 1.8 Activiti 7 文章目录 Activiti 7一、了解工作流1.1 什么是工作流1.2 工作流引擎1.3 常见的工作流引擎1.4 Activiti 概述1.4.1 Activiti介绍1.4.2 建模语言BPMN1.4.3 Activiti使用流程1.4.4 流程设计工具1.4.5 下载…

全排列II

1题目 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1]]示例 2: 输入:nums [1,2,3] 输出:[[1,2,3],…

OpenGauss MOT 实现技术研究

目录 一、概述 二、技术细节和OpenGauss中的实现 1、内存表在内存中的组织 2、事务并发控制算法 3、检查点算法 这篇文档写于2022年6月份,今天打算发到网上,重读时发现可能opengauss mot现在的代码已经有所改变,文中有些代码分支可能已经…

高效远程控制另一台电脑的3种方法,提升工作效率!

如何从我的电脑控制另一台电脑? “我妈妈的电脑出了问题,我需要帮她修理下,但是我不能亲自去进行故障排除。我应该如何从我的电脑远程控制另一台电脑,并提供远程支持?” 如何远程控制另一台电脑?&a…

基于SpringBoot+Vue的学生综合测评系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

http缓存详解

为什么要缓存 通过http协议在客户端和服务端建立连接需要消耗时间,重复访问同一个资源,增加访问服务器数据资源的成本,因此,利用浏览器的缓存机制重用以前获取的数据来优化性能 1、 减少了网络延迟,加快了页面响应速度…

分析全志Tina打包流程,并在buildroot上来实现打包生成tina镜像,支持PhoenixSuit烧写

本文转载自全志在线:https://bbs.aw-ol.com/topic/1532/ 步骤简述 首先记录下官方 tina-sdk 打包的log输出。 bookvirtual-machine:~/D1s-Core/tina-d1-h$ pack ---- PACK_CHIP sun20iw1p1 PACK_PLATFORM tina PACK_BOARD d1-h-nezha PACK_KE…

Vue.js 中的指令和组件详解

Vue.js 中的指令和组件详解 在 Vue.js 中,指令和组件是两个非常重要的概念,它们都可以用来扩展 Vue.js 的功能,但它们之间有一些不同之处。本文将对 Vue.js 中的指令和组件进行详细的介绍,并附上相关的代码示例。 指令 在 Vue.j…