高博14讲--第七讲 视觉里程计-7.3 2D-2D:对极几何(未完待续)

13 篇文章 3 订阅

基本问题

    当相机为单目时,只知道2D的像素坐标,根据两组2D点估计相机的运动,用对极几何来解决。

对极约束

在这里插入图片描述

  两个相机之间的变换为   T 12 \ T_{12}  T12   p 1 = T 12 ⋅ p 2 \ p_1=T_{12}·p_2  p1=T12p2,即:通过   P 2 \ P_2  P2的坐标乘以   T 12 \ T_{12}  T12,即可求得   P 1 \ P_1  P1的坐标 。
 
  在实践中:

  • 已知:匹配点对   p 1 \ p_1  p1   p 2 ​ \ p_2​  p2的像素坐标。
  • 给定:两张二维图像,二维图像上特征点的匹配关系。
  • 未知:P的三维空间坐标,   I 1 \ I_1  I1到I   I 2 \ I_2  I2​的变换矩阵(   T 1 , 2 \ T_{1,2}  T1,2, 即   R , T \ {R,T}  R,T)。

  • 一般是用于单目SLAM的初始化,用对极几何可求出位姿,在用三角测量估计三维空间点的位置后,就能用其他更准确的方法继续求解了。

对极约束推导过程

  设P在图1的相机坐标系下,坐标为: P = [ X , Y , Z ] T P=[X,Y,Z]^T P=[X,Y,Z]T
    p 1 ​ \ p_1​  p1   p 2 ​ \ p_2​  p2的像素坐标(单位像素): s 1 p 1 = K P , s 2 p 2 = K ( R P + t ) s_1p_1=KP,s_2p_2=K(RP+t) s1p1=KP,s2p2=K(RP+t)
      K ​ \ K​  K为相机的内参矩阵,   R , t ​ \ R,t​  R,t为两个坐标系的相机运动。
  使用齐次坐标,上式乘以非零常数都成立: p 1 = K P , p 2 = K ( R P + t ) p_1=KP,p_2=K(RP+t) p1=KP,p2=K(RP+t)
  其归一化平面坐标(单位米): x 1 = K − 1 p 1 , x 2 = K − 1 p 2 x_1=K^{-1}p_1,x_2=K^{-1}p_2 x1=K1p1,x2=K1p2
  得到: x 2 = R x 1 + t x_2=Rx_1+t x2=Rx1+t
  这里的   x 1 , x 2 \ x_1,x_2  x1,x2是齐次坐标,等式表达了一个齐次关系。

  两边同时左乘   t \ t  t^,即:两侧同时与   t \ t  t做外积,即,与   t \ t  t作叉乘: t × x 2 = t × R x 1 + t × t t×x_2=t×Rx_1+t×t t×x2=t×Rx1+t×t
    t \ t  t   t \ t  t作叉乘,夹角为0,则结果为0,即:   t × t = 0 \ t×t=0  t×t=0,上式化简为: t × x 2 = t × R x 1 t×x_2=t×Rx_1 t×x2=t×Rx1
  两侧同时左乘   x 2 T \ x_2^T  x2T x 2 T t × x 2 = x 2 T t × R x 1 x_2^Tt×x_2=x_2^Tt×Rx_1 x2Tt×x2=x2Tt×Rx1
  左式中,   t × x 2 \ t×x_2  t×x2是一个与   t \ t  t   x 2 \ x_2  x2都垂直的向量,把它再和   x 2 \ x_2  x2做内积时,将得到0。

  所以得到对极约束   x 1 , x 2 为 归 一 化 坐 标 \ x_1,x_2为归一化坐标  x1,x2 x 2 T t × R x 1 = 0 x_2^Tt×Rx_1=0 x2Tt×Rx1=0
  重新带入   p 1 , p 2 \ p_1,p_2  p1,p2   p 1 , p 2 为 像 素 坐 标 \ p_1,p_2为像素坐标  p1,p2 p 2 T K − T t × R K − 1 p 1 = 0 p_2^TK^{-T}t×RK^{-1}p_1=0 p2TKTt×RK1p1=0
  上面两式子为对极约束,几何意义是:   O 1 , P , O 2 \ O_1,P,O_2  O1P,O2三者共面。

  定义本质矩阵   E \ E  E(Essential Matrix)和基础矩阵   F \ F  F(Fundamental Matrix): E = t × R , F = K − T E K − 1 E=t×R,F=K^{-T}EK{-1} E=t×RF=KTEK1
  所以对极约束简写为: x 2 T E x 1 = p 2 T F p 1 = 0 x_2^TEx_1=p_2^TFp_1=0 x2TEx1=p2TFp1=0
  根据对极约束,相机位姿估计问题变为以下两步,即估计   R , t \ R,t  R,t的方法为:

    1.根据匹配点的位置,求出   E \ E  E或者   F \ F  F

    2.根据   E \ E  E或者   F \ F  F,求出   R , t \ R,t  R,t

本质矩阵

  本质矩阵长什么样子:
    ·   E = t × R \ E=t×R  E=t×R,   E \ E  E是一个3×3的矩阵,内有9个未知数。

    ·   E \ E  E在不同尺度下是等价的(   E \ E  E具有尺度等价性):由于对极约束是等式为零的约束,所以对   E \ E  E       乘以任意非零常数后,对极约束依然满足。

    · 平移和旋转各有3个自由度,所以   t × R \ t×R  t×R共6个自由度。由于   E \ E  E具有尺度等价性,这是由于对极约束         的性质,其乘任意非零向量依然满足,即增加一个约束条件,所以6个自由度中可以去掉一个,        所以   E \ E  E实际有5个自由度。

八点法

  ·   E \ E  E具有5个自由度,最少使用5对点来求解   E \ E  E。但是,   E \ E  E具有一种非线性性质,在求解线性方程时会      很麻烦。
  ·   E \ E  E当成一个3×3的普通矩阵,共9个自由度,由于   E \ E  E的尺度等价性,   E \ E  E具有8个自由度,使用8对点      来估计   E \ E  E,这就是“八点法”。

八点法推导过程

  一对匹配点,它们的归一化坐标为   x 1 = [ u 1 , v 1 , 1 ] T , x 2 = [ u 2 , v 2 , 1 ] T \ x_1=[u_1,v_1,1] ^ T,x_2=[u_2,v_2,1]^T  x1=[u1,v1,1]T,x2=[u2,v2,1]T,根据对极约束,有:
[ u 1 , v 1 , 1 ] [ e 1 e 2 e 3 e 4 e 5 e 6 e 7 e 8 e 9 ] [ u 2 v 2 1 ] = 0 [u_1,v_1,1] \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_2 \\ v_2 \\ 1 \end{matrix} \right]=0 [u1,v1,1]e1e4e7e2e5e8e3e6e9u2v21=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 1 u 2 , u 1 v 2 , u 1 , v 1 u 2 , v 1 v 2 , v 1 , u 2 , v 2 , 1 ] e = 0 [u_1u_2,u_1v_2,u_1,v_1u_2,v_1v_2,v_1,u_2,v_2,1]e=0 [u1u2,u1v2,u1,v1u2,v1v2,v1,u2,v2,1]e=0
同理,对于其他店对也有相同的表示。把所有点都放在一个方程中,变成线性方程组(   u i , v i \ u^i,v^i  ui,vi表示第   i \ i  i个特征点):
[ u 1 1 u 2 1 u 1 1 v 2 1 u 1 1 v 1 1 u 2 1 v 1 1 v 2 1 v 1 1 u 2 1 v 2 1 1 u 1 2 u 2 2 u 1 2 v 2 2 u 1 2 v 1 2 u 2 2 v 1 2 v 2 2 v 1 2 u 2 2 v 2 2 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . u 1 8 u 2 8 u 1 8 v 2 8 u 1 8 v 1 8 u 2 8 v 1 8 v 2 8 v 1 8 u 2 8 v 2 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}^1{u_2}^1&{u_1}^1{v_2}^1&{u_1}^1&{v_1}^1{u_2}^1&{v_1}^1{v_2}^1&{v_1}^1&{u_2}^1&{v_2}^1&1\\ {u_1}^2{u_2}^2&{u_1}^2{v_2}^2&{u_1}^2&{v_1}^2{u_2}^2&{v_1}^2{v_2}^2&{v_1}^2&{u_2}^2&{v_2}^2&1 \\ ...&...&...&...&...&...&...&...&...\\ {u_1}^8{u_2}^8&{u_1}^8{v_2}^8&{u_1}^8&{v_1}^8{u_2}^8&{v_1}^8{v_2}^8&{v_1}^8&{u_2}^8&{v_2}^8&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 u11u21u12u22...u18u28u11v21u12v22...u18v28u11u12...u18v11u21v12u22...v18u28v11v21v12v22...v18v28v11v12...v18u21u22...u28v21v22...v2811...1e1e2e3e4e5e6e7e8e9=0
由上式可以求得   E \ E  E,根据   E \ E  E求取相机的运动   R , t \ R,t  Rt

本质矩阵   E \ E  E的SVD分解

  根据   E \ E  E求取相机的运动   R , t \ R,t  Rt,对   E \ E  E进行奇异值分解(   S V D \ SVD  SVD):
  设   E \ E  E的SVD分解为:
E = U Σ V T E=U\Sigma{V^T} E=UΣVT
  其中   U , V \ U,V  U,V为正交阵,   Σ \ \Sigma  Σ为奇异值矩阵。根据本质矩阵   E \ E  E的内在性质,   E \ E  E的奇异值必定为   [ σ , σ , 0 ] T \ [\sigma,\sigma,0]^T  [σ,σ,0]T,      所以   Σ = d i a g [ σ , σ , 0 ] \ \Sigma=diag[\sigma,\sigma,0]  Σ=diag[σ,σ,0]

  在   S V D \ SVD  SVD分解中,对于任意一个   E \ E  E,存在两个可能的   t , R \ t,R  t,R与它对应:
t 1 Λ = U R Z ( π 2 ) Σ U T , R 1 = U R Z T ( π 2 ) V T t_1^{\Lambda}=UR_Z(\frac{π}{2}){\Sigma}U^T,R_1=UR_Z^T(\frac{π}{2})V^T t1Λ=URZ(2π)ΣUT,R1=URZT(2π)VT
t 2 Λ = U R Z ( − π 2 ) Σ U T , R 2 = U R Z T ( − π 2 ) V T t_2^{\Lambda}=UR_Z(-\frac{π}{2}){\Sigma}U^T,R_2=UR_Z^T(-\frac{π}{2})V^T t2Λ=URZ(2π)ΣUT,R2=URZT(2π)VT
 其中   R Z T ( π 2 ) \ R_Z^T(\frac{π}{2})  RZT(2π)表示沿   Z \ Z  Z轴旋转   9 0 ∘ \ 90^\circ  90得到的旋转矩阵。


  由于   − E \ -E  E   E \ E  E等价,所以任意一个   t \ t  t取负号,也会得到相同的结果。因此,从   E \ E  E分解到   t , R \ t,R  t,R时,一共存在4个可能的解。
在这里插入图片描述(1)   P \ P  P   O 1 , O 2 \ O_1,O_2  O1O2两个相机的前面,深度都为正。
(2)   P \ P  P   O 1 , O 2 \ O_1,O_2  O1O2两个相机的后面,深度都为负。
(3)   P \ P  P   O 1 \ O_1  O1相机的后面,深度为负;在   O 2 \ O_2  O2相机的前面,深度为正。
(4)   P \ P  P   O 1 \ O_1  O1相机的前面,深度为正;在   O 2 \ O_2  O2相机的后面,深度为负。
假设一共有N个特征点,则列出如下线性方程组:

八点法的讨论

(1)用于单目SLAM的初始化
    一开始,相机在运动时,只知道图像与图像之间的关系,只知道第一帧图像的特征点与第二帧图像的特征点之间的匹配关系,只能得到   2 D − 2 D \ 2D-2D  2D2D之间的关系。
    当初始化之后,可以得到   3 D \ 3D  3D的点。当知道这两帧图像之间相机的运动,并计算出图像中点的深度值,这样就有   3 D \ 3D  3D的点,之后使用   3 D − 2 D \ 3D-2D  3D2D   P n P \ PnP  PnP算法求解。
(2)尺度不确定性:归一化或特征点的平均深度
    一开始,
    当初始化之后,

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值