三维重建流程图(【三维重建】三维重构基础知识、三维数据、重建流程)
1.在计算机内生成三维信息
1.使用几何建模软件 ,通过人机交互生成人为控制下的三维:3DMAX 、Maya 、AutoCAD 、UG
2.获取真实的物体形状:三维重构
三维图像重构:
摄像机获取图像 ,对图像分析处理 ,结合CV知识推导出现实中物体的三维信息
从二维图像到三维空间的重构(模仿生物两只眼睛观察物体产生的深度)
对二维图像中像素点的三维信息的恢复 ,尤其是深度信息
一般采用两个摄像机 ,对同一个物体进行采集 。
单视图:信息不完全 ,需要利用经验知识
多视图:类似人的双目定位 ,相对比较容易
理想:对每个像素点的深度进行恢复
三维矢量图形 代替 三维位图
位图:记录一个个的点位 ,以像素为单位 ,放大后图像变得模糊不清
矢量图:不受分辨率影响 ,适合三维建模 ,线条顺滑 ,不逼真,无法产生多彩多变的图像
过程:
图像获取:获取二维 ,影响因素:光照 ,相机几何特性
摄像机标定:建立有效的成像模型,求解摄像机的内外参数 ,结合图像得到在空间中的三维点坐标
特征提取:特征点 、特征线 、区域 。
大多以点为匹配基元 ,怎么提取与怎么匹配 紧密联系 ,提取时确认匹配方法
提取算法:
基于方向导数的方法
基于图像亮度对比关系的方法
基于数学形态学的方法
立体匹配:根据提取的特征 ,建立各个图像之间的对应关系 ,将同一个物理空间点 ,在不同的图像中的成像点 ,一一对应起来 。影响因素:光照 ,噪声 ,物体特性 ,摄像机特性
三维重建:利用 匹配结果+摄像机标定的内外参数 进行重建
重构方法:
空间点的重建:最基本
空间直线 、空间二次曲线的重建
极线约束法
全像素的三维重建:最理想 ,测量条件严格 ,仅限于某一具体对象
空间点的三维重建举例:
四个坐标系
1.像素坐标系:图像的每个像素点,存储在数组中 ,在图像左上角定义原点 ,建立图像坐标系uv,坐标分别对应数组中的存储位置
2.图像坐标系(ICS):用来表示像素在图像中的物理位置所建立的坐标系 ,原点一般在中心 。上图xy 。3.摄像机坐标系(CCS):如图 ,XY轴与成像平面坐标系的xy平行 ,Z轴与光轴平行 ,垂直于图像 ,交点为图像的主点 ,也就是成像平面坐标系的原点 。OO‘为焦距 。
4.世界坐标系(WCS):在环境中选择一个参考坐标系 ,描述的是摄像机和物体的位置 。与摄像机坐标系的关系用旋转矩阵R和平移向量t来描述 。对应关系如下:
坐标系转换记一个点在
世界坐标系(WCS ,World Coordinate System)中的坐标为
X
w
=
[
x
w
,
y
w
,
z
w
]
T
X_w=[x_w,y_w,z_w]^T
Xw=[xw,yw,zw]T ,相机坐标系(CCS ,Camera Coordinate System)的坐标为
X
c
=
[
x
c
,
y
c
,
z
c
]
T
X_c=[x_c,y_c,z_c]^T
Xc=[xc,yc,zc]T ,相机图像中的投影(ICS ,Image Coordinate System)中的坐标为
X
=
[
u
,
v
]
T
X=[u,v]^T
X=[u,v]T 内参矩阵表示相机和图像的关系
外参矩阵相机和世界的变换
外参矩阵包括平移矩阵t 和 旋转矩阵R
R为3x3, t为3x1因此 ,结合上面两个 ,推导出 世界和图像的转换
图像采集设备的标定方法:
摄影测量学的传统设备标定方法:17个参数描述二维与三维的约束关系,计算量大 ,高精度
直接线性变换法:参数少 ,便于计算
2.相关概念
(1)彩色图像和深度图像
彩色:RGB ,像素点存储其亮度
深度:像素点存储该点到相机的距离 ,深度值
深度值只与该点到摄像机的距离有关 ,和光照 ,环境 ,方向都没有关系 。
但是 ,由于物体表面反射 ,半透明或透明物体 ,深色物体 ,距离超过量程等因素 ,会造成深度图缺失
利用一张RGB+一张dept,可以补全
(2)PCL
Point Cloud Library 点云库
PCL框架包括很多先进的算法和典型的数据结构 ,如滤波 、分割 、配准 、识别 、追踪 、可视化 、模型拟合、表面重建等诸多功能
libpcl I/O:完成数据的输入 、输出过程 ,如点云数据的读写;
libpcl filters:完成数据采样 、特征提取、参数拟合等过程;
libpcl register:完成深度图像的配准过程,例如迭代最近点算法;
libpcl surface:完成三维模型的表面生成过程 ,包括三角网格化 、表面平滑等 。(3)点云数据(PCD)
扫描资料 以点的形式记录 ,点可以是 三维坐标 、颜色 、光照强度等 。
点云包括几何信息和非几何信息:
几何信息:(能够被空间变换影响的 ,点的这部分维度叫做特征)如:点的坐标 、曲面法线 、法向量 、切向量。
非几何信息:(不能被空间变换影响 ,这部分维度叫做描述子)如:颜色 、温度 、光照强度 。
3.三维重建流程
比较常见的流程是:
提取图像特征(如SIFT 、SURF等)->利用特征将图像计算图像之间的特征匹配->基于匹配的特征进行稀疏重建 ,得到各个图像的相机位姿和稀疏的特征点云(SfM)->基于相机位姿进行稠密重建 ,得到稠密点云(PMVS/CMVS)->基于点云重建网格 、体素或者纹理3.1 深度图像获取
同时获取深度图像和彩色图像
3.2 预处理
对深度图像进行去噪和修复(图像增强)
3.3 点云计算
预处理后的图像具有二维信息 ,像素点的值为深度信息 ,物体表面到传感器之间的直线距离
根据上面的结果 ,计算推导出 世界坐标系和图像像素坐标系之间的转换关系
3.4 点云配准
多个不同角度的图片 ,之间有一些公共部分
为了利用深度图像进行三维重建 ,需要对图像进行分析 ,求解各个图片之间的变换参数 。
这个配准的过程,以公共部分为基准 ,把不同时间 、角度 、光照的多个图像 ,叠加匹配,到统一的坐标系中。
计算出每个图片相应的 平移向量与旋转矩阵 ,消除冗余信息
(1)粗糙配准提取多个图片之间的特征点(特征点可以是:直线、拐点 、曲线曲率;自定义符号 、旋转图形、轴心)
根据特征方程 初步配准
粗糙配准后 ,点云和目标点云 将处于同一尺度与参考坐标系内
通过自动 记录坐标 ,得到粗糙配准的 初始值
算法:SFM(Structure From Motion)
主要用在单目重建 ,一段时间内获取连续图像 ,重建三维环境
双目:多个摄像机 ,拍摄同一时刻的同一物体 ,也称为静态立体视觉
单目:一个摄像机 ,但单个图像无法完成 ,需要一段时间的一系列图像 ,也称为动态立体视觉
从不同角度拍摄同一物体
固定传感器 ,旋转物体
旋转传感器 ,固定物体
单目根据实时性不同,分为 离线重建 ,在线重建
离线重建:如SFM
在线重建:与SLAM (simultaneous localization and mapping ,同步定位与地图绘制)和VO有联系,分为渐进式重建 、直接式重建 。
渐进式:(深度滤波)利用下一时刻图像 ,不断融合之前的三维信息
SVO: [https://github.com/uzh-rpg/rpg_svo ](https://github.com/uzh-rpg/rpg_svo (深度滤波在depth_filter.cpp) (深度滤波在depth_filter.cpp里面)
REMODE:https://github.com/uzh-rpg/rpg_open_remode
直接式:(深度融合)利用若干时刻图像 ,一次性完成一个场景的三维重建 。与SFM类似 。但计算的图像少 ,因此实时性高 。
SfM指的是给出
n
n
n 个固定的三维空间点的m
m
m 张图像:x
i
j
=
P
i
X
j
,
i
=
1
,
.
.
.
,
m
;
j
=
1
,
.
.
.
,
n
.
x_{ij}=P_iX_j, i=1,...,m;j=1,...,n.
xij=PiXj,i=1,...,m;j=1,...,n. 从m
×
n
m \times n
m×n个对应关系x
i
j
x_{ij}
xij 中估计出m
m
m个投影矩阵P
i
P_i
Pi和n
n
n 个三维空间中的点 SfM问题中的不确定性如果我们对场景进行一个变换
Q
Q
Q ,同时对相机矩阵进行其逆变换Q
−
1
Q^{-1}
Q−1,则图像会保持不变:
x
=
P
X
=
(
P
Q
−
1
)
(
Q
X
)
x=PX=(PQ^{-1})(QX)
x=PX=(PQ−1)(QX)因而SfM问题中会存在不确定性 ,通过一些约束可以减小不确定性 。
(2)精细配准经过粗糙配准 ,得到变换估计值 ,作为初始值
不断收敛和迭代 的进行精细配准 ,达到更加精准
基于最小二乘法 对 误差函数 进行最小化处理 ,反复迭代 ,直到均方差误差小于设定阈值
算法:ICP(迭代最近点) 、SAA(模拟退火) 、GA(遗传算法)
拓展:最小二乘法(最小平方法)(二乘就是平方的意思)
作用:误差估计 、不确定度 、系统辨识及预测 、预报
数学优化技术 ,通过 最小化误差的平方和 寻找数据的最佳函数匹配
利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小
同一组数据 ,选择不同的
f
(
x
)
f(x)
f(x) ,通过最小二乘法可以得到不一样的拟合曲线,最小二乘法 ,就是找一个最接近正确的fx (3)全局配准使用整幅图像 直接计算转换矩阵 。
通过精准配准的结果 ,进行多帧图像的配准
序列配准:按照一定顺序
同步配准:一次性
减少误差 ,但消耗内存 ,时间复杂度也大
3.5 数据融合
配准后的深度信息 ,仍然是空间中散乱无序 的点云数据 ,只能展现物体部分信息 。
对点云数据进行 融合 ,获得更加精细的重建模型
KinectFusion技术以传感器初始位置为原点 ,构造体积网格 ,把点云空间 ,分割为一堆小的立方体 ,立方体称为:体素(Voxel)
为所有Voxel赋予SDF值(Signed Distance Field ,有效距离场),隐式模拟表面
SDF:此Voxel到重建表面的最小距离值 。
SDF大于0 ,表示Voxel在表面前
SDF小于0 ,表示Voxel在表面后
SDF接近0,表示Voxel贴近表面
高效实时 ,但可重建的空间范围小 ,因为需要大量空间存储大量的Voxel
TSDF(Truncated Signed Distance Field ,截断符号距离场)为了解决Voxel占用大量空间的问题 。
TSDF方法 ,只存储 距离真实表面 较近的几层Voxel ,而不是所有的
可以大幅度降低KinectFusion的内存消耗 ,减少模型的冗余点
3.6 表面生成
构造物体的可视 等值面
常用 体素级方法 直接处理原始的灰度体数据
体素级重建算法:MC(Marching Cube ,移动立方体)
http://paulbourke.net/geometry/polygonise/
常用工具
VisualSFM是一个整合了特征提取 、图像匹配 、稀疏点云重建 、稠密重建(需要单独下载CMVS/PMVS)的软件 , ,免费但不开源(不能用于商业用途) 。基于一系列RGB图像 ,我们可以得到一个稠密的点云 。
PMVS/CMVS用SFM的输出作为输入 ,利用稀疏的特征点云 、图像和对应的相机位姿来重建稠密点云 。可以用于商业目的。PMVS指的是将大的点云合理地分割 、重建 、拼接的过程 。
MeshLab是常用的点云、网格显示和处理软件 ,内置了很多3D重建算法,能够进行基于点云的网格重建 、简化等 。
COLMAP是一个开源的软件 ,可以用于商业目的。类似于VisualSFM的前半部分 ,COLMAP能够用于从图像中得到稀疏特征点云和相机位姿 。如果有CUDA的话,COLMAP也能用于稠密点云重建和表面重建 。
Bundler是稀疏重建工具 ,然而效果可能不如VisualSFM
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!