当前位置:   article > 正文

计算机视觉之三维重建-多视角几何

视角几何


对北邮鲁鹏老师的计算机视觉之三维重建课所做的笔记。

1.运动恢复结构问题

在这里插入图片描述
在这里插入图片描述
已知多个图像上的对应点坐标,求出相机的投影矩阵M对应点的三维坐标

2.三种典型的运动恢复结构任务

2.1欧式结构恢复(相机内参数已知,外参数未知)

在这里插入图片描述
已知内参、多点的图像坐标,求外参和三维坐标。(如果多视角图是由一个相机拍摄,只需要知道一个相机的内参,如果是多个相机拍摄,需要多个相机的内参
在这里插入图片描述

世界坐标系放在第一个相机坐标系O1下,这样第一个相机的外参矩阵[I 0]已知。只需要求出R,T。(如何求出R,T?)
答:用本质矩阵F基础矩阵E能求出
在这里插入图片描述
求解出三维点坐标Xj的流程:
1.在两幅图像上取8对点。求出基础矩阵F归一化八点法在极几何里有讲)
2.已知基础矩阵F、两个相机的内参数K1、K2求出本质矩阵E
3.分解本质矩阵E,求出旋转矩阵R、平移矩阵T(该方法的核心
4.利用三角化(线性法或者非线性法)求出三维点坐标Xj
如何把E分解成R、T?
在这里插入图片描述
  x 2 T F x 1 = 0 \ x_2^TFx_1=0  x2TFx1=0得出F的符号和尺度无法确定,所以E的尺度和符号也无法确定。
在这里插入图片描述

为了能用E推出R、T给出了两个矩阵W,Z,这两个矩阵是为了方便推导后面的公式直接给出的,没有什么特别意义,diag(1,1,0)是单位阵最后一行的1变成0,在相差一个正负号的情况下,Z=diag(1,1,0)W=diag(1,1,0) W T W^T WT
所以得出 E=[ T x ] R = U Z U T R = U d i a g ( 1 , 1 , 0 ) W U T R \textbf{E=[}T_x]R=UZU^TR=Udiag(1,1,0)WU^TR E=[Tx]R=UZUTR=Udiag(1,1,0)WUTR,
在这里插入图片描述
调用奇异值分解SVD分解算法直接算出 U和V,所以 V T = W U T R V^T=WU^TR VT=WUTR
由于W和U都是正交矩阵 W − 1 = W T , U − 1 = U T W^{-1}=W^T,U^{-1}=U^T W1=WT,U1=UT.就能求出R了,由于E的两种表示形式,可以求出两个不同的R(注意:旋转矩阵是正交变换、不改变定向、行列式为1。如果矩阵的各列向量都是单位向量,并且两两正交(就是垂直)。那么就说这个矩阵是正交矩阵。)
在这里插入图片描述
对[ T x T_x Tx]进行SVD分解,拿出 U T U^T UT的第三列就是T(无法确定符号)
在这里插入图片描述
因为符号无法确定,所以可能出现4种情况,只有一种情况是正确的。
在这里插入图片描述
通过对多个点进行重建,找出符合实际的正确的一组解
在这里插入图片描述
歧义:如果只有一张图,我们无法知道建筑物的实际高度,但是我们加入先验信息,比如人的实际高度,我们就能得到建筑物的实际高度。
在这里插入图片描述
欧式结构恢复:恢复的结构与真是场景之间相差一个相似变换(旋转、平移、缩放)为什么旋转平移也无法确定呢?
因为这是把世界坐标系定在了相机坐标系O1上了,所以并不知道物体实际的东南西北朝向。

2.2仿射结构恢复(摄像机为仿射相机,内、外参数均未知)

在这里插入图片描述
仿射相机:如果R,Q,P点到平面π的距离远小于其到相机的距离时,可近似的看成R,Q,P同处在平面π上。
好处:从三维点到像素点的映射仅相差一个固定的系数。把Z固定为 Z 0 Z_0 Z0
在这里插入图片描述
仿射相机M矩阵与一般相机的M矩阵不同就是把v变成0.M是3*4的矩阵
在这里插入图片描述

这里回顾一下x是图像平面上的齐次坐标,降一维变成 x E x^E xE变成欧式坐标,下面同理,X是摄像机坐标系下的齐次坐标[x,y,z,1],所以在仿射变换里 m 3 X = 1 m_3X=1 m3X=1
最后经过几次变换,让世界坐标系到图像坐标系的映射不经过齐次变换,而直接用欧式变换完成映射 即 x E = A X E + b x^E=AX^E+b xE=AXE+b
在这里插入图片描述
最后仿射结构恢复问题就变成了求解:1.三维点坐标 2.投影矩阵A和b
(如何求解?)1.数据中心化 2.因式分解获得运动与结构
在这里插入图片描述

2.2.1数据中心

在这里插入图片描述
这里的小写x都是图像平面的像素点坐标,2x1的矩阵,大写X是世界坐标系的坐标3x1的矩阵,b被消掉了。B站讲解定位:如果把3D点的均值点当做世界坐标系的坐标原点,就可以直接完成中心化后的像素坐标点三维坐标点X的映射关系,即 x i j ^ = A i X j \hat{x_{ij}}=A_iX_j xij^=AiXj,跳过中间的 X j ^ \hat{X_j} Xj^过程。
在这里插入图片描述
x i j x_{ij} xij中的i代表第几个相机,j代表第几个点,例 x 23 x_{23} x23代表第2个相机上的第3个点。虽然D写得很大,但是D的秩只能为3,此时要解出M,S。(对D进行奇异值分解

2.2.2奇异值分解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于D的秩为3,所以理论上只有三个特征值(实际不是,但是我们取出最大的三个特征值当做近似),依据最大的3个特征值得出U,W,V。其中U为2mx3 ,W为3x3, V T V^T VT为3xn。最后M=U,S=W V T V^T VT,解出了M,S。(歧义:M=UW,S= V T V^T VT也可以,由于这两种分解都可以,所以产生歧义,后面会讲)
在这里插入图片描述
缺点:如果其中存在一个点没有被所有相机看到,那么计算得不到准确值。
在这里插入图片描述
总结:这里也是尺度无法确定的问题,M*可以表示成M与一个3x3的可逆矩阵H相乘,由于H不唯一所以会产生物体倾斜的歧义。
在这里插入图片描述
其中-8是因为其中有H矩阵的8个未知量是求不出来的。因为不在乎H矩阵的尺度,所以3x3矩阵H只有8个未知量(相当于本身9个未知量,因为不在乎尺度,就全都除以第九个未知量,第九个未知量变成1,所以只有8个未知量了。)
目的:该系统为了得出解必须要2mn>=8m+3n-8,其中m为相机数,n为取点数。

2.3透视结构恢复(摄像机为透视相机,内、外参数均未知)

在这里插入图片描述
待解决的问题。
在这里插入图片描述
首先讲必定会产生歧义,既然求不了真实的解,就把这个歧义利用起来。这里的H是4x4的矩阵,这里的映射是齐次空间的映射(与欧式恢复结构一样)。
在这里插入图片描述
为了求出结果需要2mn>=11m+3m-15
在这里插入图片描述
困难点:已知信息太少。下面给出两种方法。

2.3.1代数方法(三角化)

在这里插入图片描述
重点在第二步,直接用F基础矩阵求出M1,M2 。
在这里插入图片描述
由于存在歧义,我们求M1也可以通过矩阵变换转换成求M*,用 H − 1 H^{-1} H1把M1变成 M 1 ∗ M_1{^*} M1=[I|0],这是个标准化相机矩阵,这时候 M 2 ∗ M_2{^*} M2=[A|b]完全未知,所以要把它求出来。
在这里插入图片描述ppt上的 X ^   \hat{X}{~} X^ 写错了,应该是 X ∗ X^* X.现在就是为了求出M2*,X*.推导过程可以去看https://www.bilibili.com/video/BV1aU4y1T74j?t=1576.4.经过推导得F=[ b x b_x bx]A
(现已知 x ′ T F x = 0 x^{'T}Fx=0 xTFx=0 , F=[ b x b_x bx]A)
在这里插入图片描述
利用编程把b,A求出来,不管b是多少,只要已知F,并且令 F T F^T FT与一个向量相乘等于零,那个向量就是b。由于 b T F = 0 b^TF=0 bTF=0由前面的基础矩阵关系可知,b就是极几何中的极点。至此求出了 M 2 M_2 M2*
在这里插入图片描述
最后利用三角化,求出 X j X_j Xj

2.3.2捆绑调整(BA)

在这里插入图片描述
因式分解法的缺点:1.有遮挡不能重建 2.对应点没有选好不能重建
代数法的缺点:一般用于2视图重建,多视图容易累积误差
捆绑调整法核心思想:实际上真实点的投影有误差, X j X_j Xj的真实投影是 x 1 j , x 2 j , . . . . . x_{1j},x_{2j},..... x1j,x2j,.....但是用相机投影矩阵M算出来的点与之存在误差,所以重构点与真实点并不重合,为了减小误差,采用最小化重投影误差的方式,让误差在所有平面上的整体最小。
在这里插入图片描述
在这里插入图片描述
通常用到SFM或者SLAM的最后一步。(接下来讲SFM系统)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/238634
推荐阅读
相关标签
  

闽ICP备14008679号