Relative Orientation 与fundamental essential matrix

简介:    由于《Hartley, Zisserman ...》书太厚,啃不动。所以最近回头看youtube上的德国鬼子视频, 补习机器视觉最基础的知识。所以本次博文,没有算法,没有代码,纯粹的定义和识记。

   由于《Hartley, Zisserman ...》书太厚,啃不动。所以最近回头看youtube上的德国鬼子视频, 补习机器视觉最基础的知识。所以本次博文,没有算法,没有代码,纯粹的定义和识记。 老外视频课程地址:https://www.youtube.com/playlist?list=PLgnQpQtFTOGRsi5vzy9PiQpNWHjq-bKN1

  本次总结涵盖视频:

Photogrammetry II - 02a - Relative Orientation (2015/16)

Photogrammetry II - 02b - Relative Orientation (2015/16)

Photogrammetry II - 03a - Epipolar Geometry and Essential Matrix (2015/16)

Photogrammetry II - 03b - Epipolar Geometry and Essential Matrix (2015/16)

讲师为:Cyrill Stachniss



我们看下二维图片与三维图片之间的联系。


相机在不同位置观察同一个物点:

  • 如果知道相机拍摄位置信息,即可求物点的3D坐标
  • 如果不知道相机拍摄的位置信息,若知道场景中若干control point信息,则可以反求相机拍摄位置信息(比如棋盘标定)

 

   那么现在有个问题:

  如果不知道场景中点的信息(即没有controlpoints),只知道图像A中的特征点与图像B中哪些特征点对应,我们如何求相机的拍摄位置?

  先不回答这个问题,可以带着疑问看下面的基础知识:

  1. 各个相机之间的姿态camera pose的参数化表达
  2. 极性约束及数学表达
  3. 基础矩阵fundmental matrix数学定义
  4. 极几何及数学性质
  5. 本质矩阵定义及参数模型

1.      各个相机之间的姿态camera pose的参数化表达

  对于标定的相机,需要用12个参数描述两个相机之间的pose关系:

2*(X,Y,Z),位移

2*(Rx,Ry,Rz),旋转

   对于未标定的相机,需要用22个参数描述两个相机之间的pose关系:

2*(fx,fy,cx,cy,sheer),相机内参

2*(X,Y,Z),位移

2*(Rx,Ry,Rz),旋转

 

注:

  每个相机的pose理论上可以独立表达,没必要成对。上面这么干是因为后面视频课程里不知道世界绝对坐标,只能搞相对的坐标,故必须成对;

  DLT算法可以求单个相机的pose,前提是知道场景中control point的信息,所以此处并不适用;


2.      极性约束及数学表达

  下图中O’,O’’分别为两个相机的中心,X是物点。如果两个相机画面的特征点对应场景同一物点,那么O’X、O’’X、O’O’’三个向量理应共面


数学上表达为:

                                       [O’X,O’’X, O’O’’] = 0

注:Triple product,[A,B,C]=(A×B).C,表示三个向量构成的立方体体积,三个向量共面则立方体体积为0。

    给定两个相机的图像,如下图所示,我们重建的对象只是一个相似变换(only up to a similarity transformation),把这种模型称为photogrammetricmodel。把photogrammetric model 的方向称为绝对方向。


对于标定的相机:

Mapping the calibrated camera is angle-perserving,即两个画面是相似的,非全等,图A中直线的夹角,在图B中的夹角任然是这个值

两个相机保持了relatvietransformation,如果没有额外的信息,我们无法获取全局偏移和旋转信息,只能知道12-7=5个参数,我们将丢失7个参数:第一个相机的R、T和scale(两个相机之间的距离)

  我们可以以第一个相机为参照,计算第二个相机的旋转,还有基线baseline的方向(无法计算基线的长度)。

 

注:

(1)若构建场景3D模型,我们需要知道什么信息?

 如果两个标定相机的基线已知,可求3D模型,但是我们并不知道3D模型在世界坐标系中的坐标;

 或者,如果我们知道场景中至少3个control point的信息,即可求绝对方向

 

(2)若要求scale,我们需要知道什么信息?

  已知物体的大小;

  或者,已知两个相机相距的位置

 

 对于未标定的相机:

  Object can be reconstructed up to a straightline preserving mapping but not angle preserving. (图A与图B中原来直线的平行关系不再保留,即直线夹角的值不再相等),图A中是直线,图B中也是直线。

  由于投影变换参数P=KR[I|-Xc]共15个参数未知,给定两个图像的匹配点,只可求22-15=7个参数来描述相对朝向。

  另外,需要至少5个controlpoint,才可以求绝对朝向。

 

下图为相对朝向与绝对朝向的关系图


下表对上述标定和未标定相机的简单总结:

 

每张图参数

每对图参数

给定匹配点,可求参数

计算绝对方向所需最少控制点数

标定

6

12

5(Essential matrix)

3

未标定

11

22

7(Fundmental matrix)

5


3.      基础矩阵fundmental matrix数学定义

咱再次看下图,


O’X与O’’X的方向可以从图像坐标x’与x’’获取:

   x’=P’X

   x’’=P’’X

其中,

   P’=K’R’[I|-Xc’]

   P’’=K’’R’’[I|-Xc’’]

那么,O’X与O’’X的归一化方向可以表达为:


上式中x’与x’’是图像坐标像素,世界坐标X同归一化方向xn’的关系:



矩阵Sb为skew-symmetric matrix。现在我们把刚才的归一化方向代入上式得:


       基础矩阵fundamentalmatrix中包含了两个未标定相机画面之间的相对朝向信息,F中有7个参数,5 for pose,2 for fake intrinics 

注:

已知相机投影矩阵P,如何计算F?

将矩阵P分成两块左边3*3作为A’,右边3*1作为a’,即:


扯下图像坐标到世界坐标的过程:

图像坐标-->内参-->相机坐标-->外参-->世界坐标

x_img=K*x_camera=K*[R|T]*x_world



4.      极几何及数学性质

假设投影矩阵P和基础矩阵F已知:





The epipoles are the left and righteigenvectors of the fundamental matrix





5.      本质矩阵定义及参数模型

假设没有失真和图像错误,标定的相机可以简化朝向问题,基于标定矩阵K,我们可以获取图像中的点与物点连线的方向(标定相机可知光线方向)。


公式左边x是direction in camera frame(图像上一点与光心的连线方向(维度3*1),但是不包含camera pose,并不是世界坐标里的光线方向),公式右边x是图像坐标(维度3*1),内参K维度3*3。再看基础矩阵,


注意,

E有5个自由度(参数),决定了相机之间的相对朝向。(12-7=5,丢失了第一个相机的RT和两个相机之间的scale)

仔细观察上式,它对于球面坐标的全景图,可以不需要知道内参,即可求E,因为球心至球面任意一点本身即为光线方向,只需通过球面坐标求出其camera frame下的3d  point即可。(比如:x=cosacosb,y=cosasinb,z=sina)

本质矩阵是齐次的,奇异的(行列式值为0,矩阵的秩小于3)


====================================================================================================================

关于光线方向再扩展扯下:

小孔成像的光线是经由世界坐标,相机坐标,投影平面坐标,传感器平面坐标,即下图所示:


假设XP是世界坐标中物点坐标,向量XO=[x0,y0,z0]表示世界坐标原点移动值相机坐标原点的偏移量,那么下式就表示从世界坐标转换到相机坐标,因此刚才的光线并不包含camera pose,相机姿态是针对世界坐标而言的


世界坐标系里的光线应该是:


相机坐标系也是三维的,它是通过世界坐标系旋转平移而来

相机的外部参数,描述camera pose

相机的内部参数,描述将相机前方物点投影到最终的成像平面


============================================================================================================================

如何用参数表达E的5个参数,即如何赋予参数物理意义?


请忽略中间和右边这两种模型,左边的模型是最常用的。该模型定义第一个相机的R=I,b为归一化方向向量,现在有6个参数外加1个约束,因此E的自由度是5


以上为Youtube课程总结,讲了半天大家一定很不爽,都是些定义概念,根本没讲什么算法,也没有代码演示。

现在如果要回答最开始的问题,如何从给定匹配点获取相机姿态,下篇博文将会讲如何求F和E的算法,然后再讲如何从E和F中提取R和T




目录
相关文章
|
12月前
问题 There is no screen to be resumed matching
问题 There is no screen to be resumed matching
123 0
|
4月前
|
前端开发 JavaScript
【HTML+CSS+JavaScript】3d-boxes-background
【HTML+CSS+JavaScript】3d-boxes-background
32 0
|
6月前
|
算法 光互联 计算机视觉
Locally Adaptive Color Correction for Underwater Image Dehazing and Matching
该文提出了一种新颖的水下图像处理方法,结合颜色转移和局部调整来校正颜色,以应对水下光照和散射造成的图像退化。传统颜色转移方法基于全局参数,不适应水下场景中颜色变化的局部性质。文章中,作者通过融合策略,利用光衰减水平估计来实现局部颜色校正。首先,通过暗通道先验恢复彩色补偿图像,然后估计光衰减图。接着,创建一个合成图像,该图像的统计特性代表高衰减区域,用于颜色转移。最后,通过加权融合初始图像和颜色转移图像,生成最终的颜色校正图像。这种方法旨在提高水下图像的对比度和颜色准确性,特别关注高衰减区域。
63 1
|
存储 索引
LeetCode 310. Minimum Height Trees
对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。
71 0
LeetCode 310. Minimum Height Trees
|
编解码 算法 数据挖掘
Density- and Grid-Based Methods|学习笔记
快速学习 Density- and Grid-Based Methods
Density- and Grid-Based Methods|学习笔记
undefined reference to `gdk_monitor_get_scale_factor/gtk_widget_get_scale_factor‘
undefined reference to `gdk_monitor_get_scale_factor/gtk_widget_get_scale_factor‘
93 0
Minimal Square
Minimal Square
87 0
Minimal Square
|
资源调度 芯片
流片Corner Wafer介绍
本文介绍 流片Corner Wafer介绍
2229 0
流片Corner Wafer介绍