计算机系统应用教程网站

网站首页 > 技术文章 正文

计算机视觉10 基于图像的三维模型重建流程总结

btikc 2024-09-11 01:49:43 技术文章 15 ℃ 0 评论

基于图像的三维重建解释

基于图像的三维重建,是一种通过拍摄一个场景的不同视角的图片,恢复出场景三维模型的方法,三维重建在逆向工程,文物保护,增强现实等领域有着广泛的应用。

本文只总结流程,不做算法的详细解释

主要流程有:

  1. 图像特征点检测与匹配;
  2. 通过对极几何恢复相机模型
  3. SFM(Structure from motion)方法生成稀疏点云
  4. MVS(Multi view Stereo)方法生成稠密点云
  5. 将点云重建为网格模型
  6. 添加纹理和贴图

图像特征点检测与匹配

特征点检测是三维重建的第一步,可以理解成检测出图像中与周围像素不同的点,然后储存进列表,特征点检测算子有很多,方法也都是现成的,比如harris,sift,surf,后两个最常用。

匹配原理是通过对两幅图像储存的特征点按一定算法进行匹配,从而判断不同图像上的点是不是同一个点。常用的两个概念:尺度不变性(同一个特征点能在不同尺度下被检测),旋转不变性(特征点旋转以后依旧能正确匹配)

相机模型与对极几何

1.相机模型

相机的表达是三维重建的基础,必须标定了相机参数,才能根据图像计算出像素点的位置和相机姿态。通常相机都是采用针孔相机模型,相机成像四个坐标系(像素坐标系,图像坐标系,摄像机坐标系,世界坐标系)。常见概念:本质矩阵(E),基础矩阵(F),径向畸变(k1,k2)。

姿态估计,6个外参(R,t);R为3x3矩阵,t为向量;

相机标定,5个内参(fa=fb,k1,k2,u0,v0);

2.对极约束:2D-2D

对极几何描述了同一个场景两幅图像之间的几何关系,我们已经通过特征匹配求得匹配点,根据极线约束,就能推导出基础矩阵(F)。

常用方法:

1.直接线性变换法(八点法,最小二乘法)

2.基于ransac的鲁棒方法

ransac算法流程:a.随机采样8对匹配点; b.8点法求解基础矩阵F; c.奇异值约束获取基础矩阵F; d.计算误差,并统计内点个数; e.重复上述过程,选择内点数最多的结果; f.对所有内点执行2,3,重新计算F。

SFM方法(Structure from motion)

SFM,又称为运动恢复结构,是一种常用的稀疏重建方法,通过收集到的无序图像,还原三维场景。

1.三角测量:相片中的每一个点,都对应着一个空间投影,不同相片中同一个点的空间投影的交点,就是该点在三维空间的坐标点。通过前两步,我们已经知道相机参数和匹配的特征点。因此,可以通过相机参数和匹配点用三角测量的方法,恢复匹配点在三维空间中的坐标。

2.PnP问题-直接线性变换法:已知三维点和对应的二维点求解相机内外参数,至少需要6对3D-2D对应点。

3.捆绑调整(Bundle Adjustment):一种同时对三维点云位置和相机参数进行非线性优化的方法,(先计算几张图像的位置和相机姿态,再添加新图片,进行优化,直到所有图像都优化完毕)捆绑调整的优化方法主要有 a.最速下降法,b.牛顿法,c. LM(Levenberg-Marquardt)法(结合牛顿法与最速下降法),效果最好。

通过这些方法,可以构建出较为准确的稀疏的三维模型。

MVS方法(Multi view Stereo)

1.稠密点云的获取方式:

a. 激光,雷达扫描;

b. kinect相机;

c. 结构光;

d。基于图像的mvs方法。

激光雷达一般都是用于扫描精细结构,能得到精度高的点云,效率高,有效范围高达几百米,价格偏贵。 kinect相机是一种深度相机,范围在1-3米,速度快,能实时建模。这两种方法般都已经集成算法,不需要自己编写,直接就能得到稠密三维点云。结构光是用有编码的条纹光对物体进行扫描,方法性能稳定,测量精度高,通常用于人体,文物修复。基于图像的mvs方法,则是在sfm方法基础上进行三维点云重建。

2.基本原则:

a.光度一致性假设:同一空间点在不同视角的投影应当具有相同的光度,重建的核心就是恢复空间中具有光度一致性的点。

b.可视性约束:图像中出现的点不能被遮挡,重建的点前面不能有其他点,并且不能在物体内部。

c.极线搜索:图像中一点对应另一条图像中的线段。

3.主要方法:基于体素方法,基于空间patch方法(PMVS),基于深度图融合方法

从点云到网格

三维模型的表述方法主要有两种:边界表述法,空间划分法

1.边界表述法:将三维物体描述成一组表面

a. 多面体表述法,将物体表面表述成一组封闭物体空间的多边形,其中最常用的是三角形和四边形。

b. 曲面表述法:将边界表述成一组参数或者非参数化的曲面。

c. 参数曲面:z=f(x,y),用来表示场景中的规则物体。

b. 隐式曲面:通过函数f(x,y,z)的零水平集,可以用来描述比较复杂的物体

2.空间划分方法:将物体内部的空间划分成细小,不重叠的连续实体来描述物体的形状。

a.构造体素法:通过对一些元素进行加,减,并集和交集等组合运算生成新的物体

b.八叉树法:利用分层的树结构将要表述的物体构造一个树结构,树节点对用空间中一块特定区域。从根节点开始,包含物体的节点被均匀的划分成八个子节点,直到这种迭代满足终止条件。

c.二分空间法:和八叉树法差不多,都是对空间进行逐步划分,只不过二分法是将空间划分成两部分,可随时调整空间分布。

最常见的三维网络都是采用的三角网格,基本结构为 顶点,面片,边。

纹理映射

三维点云不具有拓扑结构,不能进行高质量的渲染,几何结构恢复重建点云的拓扑结构,是进行场景渲染的基础。图像纹理差距较大的原因,主要就是网络模型的优化上。

基本原理:找到三角网络的顶点坐标(x,y,z),然后找到对应的纹理坐标(u,v),按照一定的算法进行纹理映射,从而在拓扑网络上形成纹理图案。

基本流程大致就是这些,基于图像的三维重建,一般用于建筑,场景,地形等一些对精度要求不高,要求简单的大型场景的重建。要想重建高精度的器件,还是用激光雷达好。

过几天更新SLAM的方法

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表