三维重建(6)--多视图几何

目录

一、运动恢复问题(SfM)

二、欧式结构恢复问题 

1、概述

2、算法流程

3、本质矩阵分解

4、欧式结构恢复歧义

三、仿射结构恢复问题

1、概述

2、因式分解法

3、仿射结构恢复歧义 

四、透视结构恢复问题 

1、概述

2、透视结构恢复歧义

3、代数方法

4、捆绑调整 

五、P3P问题

六、随机采样一致性(RANSAC)


一、运动恢复问题(SfM)

        运动恢复问题:通过三维场景的多张图像,恢复出该场景的三维结构信息以及每张图片对应的摄像机参数。

        运动恢复问题建模表述:已知n个世界坐标点在m张图像中的对应点的像素坐标x_{ij},计算出m个摄像机的投影矩阵M_i和n个三维点X_j的坐标。

        下图为求解SfM问题进行场景重构与计算摄像机位姿(投影矩阵得到的外参数) 

二、欧式结构恢复问题 

1、概述

        欧式结构恢复问题:摄像机内参数已知,外参数未知情况。

        对于欧式结构恢复问题,已知摄像机内参数,根据投影矩阵的计算公式可知,x_{ij}=M_iX_j=K_i[R_i \hspace{0.25cm} T_i]X_j,其中i表示图像个数,j表示世界坐标下3D点个数,那么求解投影矩阵M只需要求解外参数[R \hspace{0.25cm} T]

2、算法流程

        一般针对二视图问题的欧式结构重建问题,多视图即拆解为若干二视图问题。

        对于二视图问题,外参数未知即表示摄像机1的外参数为[I \hspace{0.25cm} 0],而摄像机2的外参数为[R \hspace{0.25cm} T],即摄像机2与摄像机1的R、T关系为[R \hspace{0.25cm} T]

(1)求解基础矩阵F(归一化八点法)

(2)求解本质矩阵 E=K_2^TFK_1

(3)分解本质矩阵 E \rightarrow R,T

(4)三角化(求解世界坐标系下的3D坐标)

3、本质矩阵分解

        算法流程中的第1,2,4步均已经提到过,所以此处不在介绍,详细过程请参见本专栏其他文章。

        由于本质矩阵表达式为E=T \times R=[T_x]R,这种叉乘关系一般都是通过奇异值分解的方式。另外,由于八点法求解的F的符号和尺度无法确定(本质上是x_2^TFx_1=0计算尺度的问题),所以E的符号和尺度也无法确定。

        首先定义两个矩阵:W=\begin{bmatrix} 0 &-1 &0 \\ 1 &0 &0 \\ 0& 0 &1 \end{bmatrix} \quad Z=\begin{bmatrix} 0 &1 &0 \\ -1 &0 &0 \\ 0& 0 &0 \end{bmatrix}

        有性质成立:在相差一个正负号的情况下,

                                ​​​​​​​        Z=diag(1,1,0)W=diag(1,1,0)W^T 

        此时有[T_x]=kUZU^T成立,其中U是单位正交矩阵,这种结构可以用于后续的奇异值分解。

        将W替换Z,且不考虑符号和尺度变化则:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        [T_x]=UZU^T \\ =Udiag(1,1,0)WU^T \\ =Udiag(1,1,0)W^TU^T

        利用奇异值分解,由于本质矩阵E的秩为2,所以对角矩阵为diag(1,1,0),则可分解为E=Udiag(1,1,0)V^T,通过与上面的式子代换可得V^T=WU^TR,那么旋转矩阵R为下面表达式,两个解是由于不考虑尺度和符号的情况下。

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​ R=UW^TV^T \quad or \quad R=UWV^T

        通过奇异值分解,我们可以得到U,V^T是一个正交矩阵,从前面定义可以知道W是一个正交矩阵,则R为一个正交矩阵,满足旋转矩阵定义,另外需要保证行列式值为正,所以进一步完善R:

                      R=(detUWV^T)UWV^T \quad or \quad R=(detUW^TV^T)UW^TV^T

        由于T \times T=[T_x]T=UZU^TT=0 (叉乘为0),根据奇异值分解,T=\pm u_3(U的第三列)。

        这样本质矩阵分解的四个解就得到了,如何选择正确的那个解呢?只需要对多个点进行三角化,选择两个摄像机z坐标均为正最多的那组R、T,就是正确的解。

4、欧式结构恢复歧义

        由于恢复的结构与真实场景之间相差一个相似变换(旋转、平移、缩放)。

三、仿射结构恢复问题

1、概述

        仿射结构恢复问题:摄像机为仿射相机,内外参数均未知。

        一般来说仿射相机代表为弱透视投影摄像机。

弱透视投影摄像机参见:三维重建(1)--摄像机几何-CSDN博客

         下面图中所有坐标使用欧式坐标,对于仿射变换而言z轴的m_3X=1,所以经过等式变换世界坐标的欧式坐标与像平面欧式坐标关系为x^E=AX^E+b,其中A_{2*3},b_{2*1}

        仿射结构恢复问题可以建模为:已知n个三维点X_j在m张图像中的对应点的像素坐标为x_{ij},且x_{ij}=A_iX_j+b_i,其中第i张图片对应的仿射相机的投影矩阵M_i=\begin{bmatrix} A_i &b_i \\ 0 &1 \end{bmatrix},求解n个三维点X_j的坐标以及m个仿射相机的投影矩阵中的A_i,b_i(i=1,2,...,m)

2、因式分解法

(1) 数据中心化

        对于所有像平面点,和世界坐标的三维点分别减去像平面点和三维点的质心,建立新的关系,可知\widehat{x}_{ij}=A_i\widehat{X}_j,其中\widehat{x}_{ij}=x_{ij}-\bar{x}_{ij}\widehat{X}_j=X_j-\bar{X}_j。通过数据中心化消掉了b的影响。

        通过上面的公式 \widehat{x}_{ij}=A_i\widehat{X}_j,我们可以将数据中心化矩阵形式写出,此时我们只需要解出下面M矩阵的值,所以也就是将D_{2m*n}分解为M_{2m*3}S_{3*n}并得到M矩阵的值。

        由于M和S的秩为3,所以D的秩为3,我们对D_{2m*n}矩阵进行奇异值分解,可以得到D_{2m*n}=U_{2m*3} \times W_{3*3} \times V_{3*n},所以我们会得到新的2m*3的矩阵M^*,该矩阵与真实的参数A所构成的矩阵M之间差一个3*3的可逆矩阵H,这就是仿射结构的歧义。

3、仿射结构恢复歧义 

        仿射结构恢复歧义:投影矩阵存在一个可逆3*3矩阵的变换,也就是差了一个仿射变换的矩阵系数。

        对于歧义我们需要引入其他约束来解决歧义。

        另外对于给定m个相机,n个3维点情况下,我们将有2mn个等式,8m+3n-8个未知量。

四、透视结构恢复问题 

1、概述

        透视结构恢复问题:摄像机为透视相机,内外参数均未知。

        问题建模:已知n个三维点X_j在m张图像中的对应点的像素坐标为x_{ij},且x_{ij}=M_iX_j,其中M_i为第i张图片对应的摄像机投影矩阵,求解n个三维点X_j的坐标以及m个摄像机投影矩阵M_i

2、透视结构恢复歧义

        透视结构与仿射结构的区别在于,透视结构计算得到的投影矩阵M_i,与真实投影矩阵差一个4*4的可逆矩阵H,也就是差了一个透视变换关系。

        对于给定m个相机,n个三维点,我们将有2mn个等式,11m+3n-15个未知量。 

3、代数方法

        下面的代数法基于二视图情况。多视图透视结构一般采用增量法。

算法流程:

(1)求解基础矩阵F(归一化八点法)

(2)基于F估计摄像机矩阵 F \hspace{0.10cm} \rightarrow \hspace{0.1cm}M_1,M_2

(3)三角化

对于第二步的解释:

        对于透视结构的二视图问题,可以推导出基础矩阵F与A和b的关系:F=[b_x]A

        如何计算A和b: 

4、捆绑调整 

        捆绑调整(Bundle Adjustment,BA),捆绑调整使用最小化重投影误差,可以进行多次迭代,使重构点足够拟合真实值,可以应用于欧式结构、仿射结构和透视结构多种情况,是一个恢复结构和运动的非线性方法。

         代数法与分解法的局限性:

(1)因式分解法:假定所有点都是可见的,所以对于存在遮挡,建立对应点关系失败的情况将不得不删除该对应点关系。

(2)代数法:应用于2视图重建,容易出现误差累积。

        最小化重投影误差:min(E(M,X))=\sum_{i=1}^m \sum_{j=1}^nD(x_{ij},M_iX_j)^2

        利用最小化重投影误差,来计算投影矩阵M_i,对于非线性最小化问题,可采用牛顿法和L-M法。 

        捆绑调整的优势:同时处理大量视图,处理丢失的数据

        局限性:大量参数的最小化问题,需要良好的初始条件(即初始M_i) 

        一般来说,捆绑调整作为SfM的最后一步,首先通过分解或代数方法先求出优化问题的初始M_i

五、P3P问题

        PnP问题:指通过世界中N个三维点坐标及其在图像中N个像点坐标,计算出相机或物体位姿的问题。

        P3P问题:对于PnP问题,我们只讨论世界中3个三维点和图像中3个像点的关系,计算欧式结构恢复相机位姿的问题,也就是计算出摄像机的外参数R、T。

        相比于之前求F+三角化得到摄像机外参数的方法,该方法误差更小。

        步骤1的计算方法:由于a=K[I \hspace{0.2cm} 0]P_a,则K^{-1}a=[I \hspace{0.2cm} 0]P_a,所极点到像点a的方向向量为:\overrightarrow{oa}=\frac{K^{-1}a}{||K^{-1}a||},同理可以计算出\overrightarrow{ob},\overrightarrow{oc}

        P3P问题解法: 

六、随机采样一致性(RANSAC)

         随机采样(Random sample consensus,RANSAC):一种适用于数据受到异常值污染的模型拟合方法,通过选择随机均匀采样一定的点,估计模型参数,并输出模型分数最高的模型。

        算法流程:

(1)随机均匀采样获取模型求解所需的最小子集

(2)适用该子集估计模型参数

(3)计算剩余样本与当前模型的一致性,统计满足当前模型的内点(在正确拟合模型上的点为内点,负样本点为外点)个数,作为当前模型分数

(4)按照设定次数重复(1)-(3)步,最终输出分数最高的模型

Reference:https://www.bilibili.com/video/BV1aU4y1T74j/?spm_id_from=333.999.0.0&vd_source=2152dec20715e478285cc87cc31201ed 

  • 29
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 视觉几何三维重建是指利用摄像机拍摄的多个视角下的图像,通过计算机图形学算法获得三维模型的过程。其中,openmvs是一种基于MVS(多视角几何重建)实现的三维重建工具。 OpenMVS是一个开源的三维重建工具,基于MVS算法,可以实现从多个图像中生成高精度的三维模型。OpenMVS的几何重建算法主要是采用光束法,通过对图像进行矩阵重建来计算相机位置和三角形点云。OpenMVS的几何重建方法相对于其他算法具有较高的稳定性和精度。 在OpenMVS的源码分析中,主要包括三个部分:几何重建、点云和网格处理。几何重建是基于多视角几何的,通过将多个图像的视角转化到同一个坐标系中,可以计算出三角形的点云。点云处理主要包括点云优化和稠密重建。网格处理则是在点云的基础上生成三角形网格模型。 OpenMVS的优势在于能够充分利用多视图几何的信息,提高三维重建的精度和效率。而且该工具具有良好的可扩展性和适应性,可以在不同场景下应用。同时,OpenMVS的开源代码也为研究者提供了一个可靠的研究平台,进行更深入的算法研究和开发。 总之,视觉几何三维重建是一项非常复杂的任务,而OpenMVS作为一个优秀的三维重建工具,通过独特的几何重建算法和优秀的可扩展性,加速了三维重建的研究和应用。 ### 回答2: 首先,视觉几何三维重建是一项重要的计算机视觉技术,其主要目的是利用多视角图像或视频序列来恢复场景的三维结构。在该过程中,重建算法必须解决诸多技术难题,如图像匹配、相机姿态估计、点云配准、三维重建等。 而OpenMVS则是一款优秀的三维重建软件,其核心算法基于多视图几何,能够高效、精确地处理大规模三维数据。具体来说,OpenMVS采用稀疏点云表示法(Sparse Point Cloud)和密集点云表示法(Dense Point Cloud)来表示场景中的点云信息,其中稀疏点云用于初始匹配,密集点云用于表面重建。 在实现中,OpenMVS采用先进的图像流水线(Image Pipeline)来处理输入的图像序列,包括预处理(Pre-processing)、特征提取(Feature Extraction)、特征匹配(Feature Matching)等多个步骤。在此基础上,OpenMVS还提供了多种优化方法,如基于非线性优化的相机姿态估计、自适应曲率滤波等,以进一步提高重建效果。 值得指出的是,OpenMVS作为一款开源软件,其源代码也是完全开放的。此外,OpenMVS还具有友好的用户界面和丰富的文档,能够帮助用户快速上手并实现高质量的三维重建

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值