三维重建~

摄像机几何

        理论:缩小光圈->效果变清晰、图像变暗(进来的光线少)

        实际:加透镜 -> 将多条光线聚集到胶片上,增加亮度

从相平面 到 像素平面 坐标的转换(从三维点到二维点的映射)

三维齐次坐标一个点,除第三维,就得到对应二维空间中的点

建立起线性映射关系:(α,β是与摄像机有关的参数,c是坐标系的偏移)

摄像机偏斜

        像素不是方的,会有夹角 。

摄像机坐标系下的摄像机模型

摄像机坐标下的P点 映射到 像素平面P’

世界坐标系*

->摄像机坐标系 (R,T 代表 旋转平移)

M:投影矩阵 

 M的自由度:R,T因为包括xyz三轴,所以各有三个,K有5个,共11个

定理

最小二乘解

         把总误差求得最小,得出逼近正解的解 

 

奇异值分解(Singular Value Decomposition,简称SVD)

是一种数学方法,用于将一个矩阵分解为三个矩阵的乘积。SVD在许多领域中都有广泛的应用,包括线性代数、数据压缩、图像处理、统计学和机器学习等。

对于一个m×n的矩阵A,SVD将其分解为以下形式:

A = UΣV^T

其中,U是一个m×m的正交矩阵,Σ是一个m×n的对角矩阵,对角线上的元素称为奇异值,V^T是一个n×n的正交矩阵的转置。

在SVD分解中,U和V是正交矩阵,意味着它们的列向量是单位向量且两两正交。Σ是一个对角矩阵,对角线上的元素称为奇异值。奇异值按照从大到小的顺序排列,表示了矩阵A在每个维度上的重要性。

SVD的应用包括:

  • 数据压缩和降维:通过保留最重要的奇异值,可以将高维数据矩阵压缩为低维表示,从而实现数据降维和减少存储空间。

  • 矩阵逆和伪逆:SVD可以用于求解矩阵的逆和伪逆,尤其对于奇异或接近奇异的矩阵。

  • 图像处理:SVD可以应用于图像压缩、去噪、图像恢复等领域,例如著名的JPEG图像压缩算法就使用了SVD。

  • 推荐系统:在协同过滤推荐算法中,可以使用SVD对用户-物品评分矩阵进行分解,从而实现推荐物品给用户。

  • 主成分分析(PCA):PCA是一种基于SVD的数据分析方法,用于提取数据集中的主要特征和模式。

通过奇异值分解,我们可以将一个复杂的矩阵分解为简单的组成部分,从而能够更好地理解和处理矩阵的性质和特征。

摄像机标定

即求解摄像机的内外参数矩阵

 

m就是V的最后一列,转成3×4的投影矩阵M,M和真实的投影矩阵之间还存在着一定的比例关系 

最少取6对点,组成齐次方程,就可解出M 

 

畸变

k是畸变系数;

和上面不一样,不是超定线性方程组的求解。是非线性方程组,要使用牛顿法等迭代方法求解。

 

单视图重建

        欧式变换:是一种在欧几里得空间中保持距离不变的变换,也就是说,如果在变换前两点的距离为d,那么在变换后这两点的距离仍然为d。欧式变换包括旋转、平移和反射。

        齐次坐标:是一种扩展的坐标表示方法,它在欧式坐标的基础上增加了一个额外的维度,通常用于表示三维空间中的点和向量。

  1. 从欧式坐标到齐次坐标的转换:假设我们有一个三维欧式坐标(x, y, z),我们可以通过添加一个额外的维度w(通常设为1)来将其转换为齐次坐标(x, y, z, w)。这样做的好处是可以使用矩阵乘法来表示和执行复杂的变换,如旋转、缩放、平移和透视投影。

  2. 从齐次坐标到欧式坐标的转换:假设我们有一个齐次坐标(x, y, z, w),我们可以通过将x, y, z分别除以w来将其转换为欧式坐标(x/w, y/w, z/w)。这个过程通常被称为齐次坐标的去齐次化。

左:欧式-> 右:齐次 ; 右式就变成了一个复合操作:先旋转再平移

2D平面上的变换

欧式变换

欧式变换只是等距变换的一种情况

相似变换

s:伸缩 ;R:旋转;t:平移

仿射变换

 

 透视变换

三维空间中的变换 

 

 

三维重建基础与极几何

COLMAP - 三维重建库

COLMAP 是一个开源的三维重建库,它包含了从图片的特征提取到最终的三维可视化的所有步骤。这个库不仅仅包含了命令行接口,同时也提供了一套完整的GUI接口,能够让用户直观地操作并理解三维重建的过程。

COLMAP的主要特点包括:

  • 完整的SfM(Structure from Motion)和MVS(Multi-View Stereo)管道

  • 支持增量式和全局式的SfM方法

  • 提供了丰富的接口,包括命令行接口和GUI接口

  • 使用C++编写,提供了丰富的API,便于开发者进行二次开发

  • 提供了丰富的文档和示例,便于新手上手

  • 支持Linux,Mac OS,和Windows平台

COLMAP的使用步骤一般如下:

  1. 特征提取:对输入的图片进行特征提取,找到图片中的关键点和描述符
  2. 特征匹配:对提取出的特征进行匹配,找到不同图片之间的关系
  3. Sparse Reconstruction:使用SfM方法对匹配的特征进行稀疏重建,得到一个粗糙的三维模型
  4. Dense Reconstruction:使用MVS方法对稀疏重建的结果进行密集重建,得到一个详细的三维模型
  5. 三维可视化:对重建的三维模型进行可视化

SfM方法和MVS方法

SfM (Structure from Motion)MVS (Multi-View Stereo) 是两种常用于三维重建的方法。这两种方法都是从多张二维图片中提取信息,然后利用这些信息重建出三维的场景或对象。

SfM (Structure from Motion)

SfM 是一种从图像序列中恢复三维结构和相机运动的技术。这种技术基于视觉感知中的运动视差原理,即通过观察相同物体在不同视角下的位置变化,来推断出物体的三维形状和相机的运动。

SfM 的步骤一般如下:

  1. 特征检测和匹配:在每一张图像中检测特征点,并在不同图像中找出匹配的特征点对。

  2. 运动恢复:通过匹配的特征点对,利用多视角几何原理,恢复出相机的运动(即相机的位置和姿态)。

  3. 结构恢复:在已知相机运动的情况下,通过三角测量原理,恢复出特征点的三维坐标,从而得到场景的稀疏三维结构。

MVS (Multi-View Stereo)

MVS 是一种从多视角的图像中恢复物体的密集三维结构的技术。与SfM不同,MVS的目标是恢复出物体的完整三维形状,包括那些没有明显特征的表面。

MVS 的步骤一般如下:

  1. 深度图估计:对于每一张图像,都计算一个深度图,表示图像中每个像素点对应的三维点的深度信息。

  2. 深度图融合:将所有的深度图融合在一起,生成一个全局的点云表示。

  3. 表面重建:从点云中恢复出物体的表面,通常使用一些表面重建算法,如泊松表面重建等。

MVS的深度估计一般是通过神经网络直接学习的

总的来说,SfM 和 MVS 是三维重建的两个关键步骤,这两个步骤通常结合在一起使用,先使用SfM获得稀疏的三维结构和相机运动信息,然后在此基础上使用MVS恢复出密集的三维结构。

poisson重建和mesh重建

Poisson 重建Mesh 重建 是两种常用的表面重建技术。这两种技术都是尝试从点云数据中恢复出物体的三维表面。

Poisson 重建

Poisson 重建是一种基于偏微分方程的表面重建方法。该方法假设输入的点云是从某个平滑的表面采样得到的,并且每个采样点都有一个与表面法向量对应的向量。在这个假设下,表面重建问题就可以转化为求解一个Poisson方程。

核心思想:点云代表了物体表面位置,其法向量代表了内外的方向。通过隐式地拟合一个由物体派生的指示函数,可以给出平滑的物体表面估计

Poisson 重建的步骤一般如下:

  1. 计算法向量:对于每一个点云中的点,计算其对应的法向量。这一步通常通过对点云进行PCA(主成分分析)来完成。

  2. 求解Poisson方程:使用点云和对应的法向量,构造一个Poisson方程,然后求解这个方程,得到一个标量场。

  3. 提取等值面:从求解得到的标量场中提取等值面,这个等值面就是重建出来的表面。

Poisson 重建的优点是可以处理大规模的数据,并且能够生成平滑的表面。但是,它需要知道点云的法向量,这在某些情况下可能很难获得。

Mesh 重建

Mesh 重建是一种直接从点云中生成三角网格的方法。这种方法一般需要先估计出点云的拓扑结构,然后再根据这个拓扑结构生成网格。

Mesh 重建的步骤一般如下:

  1. 估计拓扑结构:通过一些算法(如最近邻搜索、k-means聚类等)估计出点云的拓扑结构。

  2. 生成网格:根据估计的拓扑结构,生成三角网格。这一步通常通过一些网格生成算法(如Delaunay 三角剖分等)来完成。

Mesh 重建的优点是可以直接生成网格,不需要额外的步骤。但是,它对点云的质量和密度有较高的要求,如果点云质量不好或者密度不均匀,可能会生成质量较差的网格。

双目立体视觉重建

多视图重建

运动恢复结构(SFM)系统设计

同时定位与建图(SLAM)系统设计

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值