初探三维计算机视觉(三维重建)—— 相机模型 + 双目系统 + 点云模型
初探三维计算机视觉(三维重建)—— 相机模型 + 双目系统 + 点云模型
咱就是说注终于到三维计算机视觉部分了,本篇内容主要先浅谈一下三维计算机视觉的基本概念和应用,在后续我们会好好学学三维重建hiahiahia~
先来说说立体视觉,立体视觉是一种计算机视觉技术,其目的是从两幅或两幅以上的图像中推理出图像中每个像素点的深度信息,它的应用领域很多,其中包括了很前沿的机器人、无人驾驶和无人机等,立体视觉借鉴了人类双眼的“视差”原理,即左、右眼对于真实世界中某一物体的观测是存在差异的,我们的大脑正是利用了左、右眼的差异,使得我们能够辨识物体的远近(这就是视差)
1. 相机模型
老样子,我们先来聊聊什么是相机模型,相机模型的概念其实很简单,并不是只有照相机才能称为相机模型,能够捕捉图像的一些工具,或者一些列图像采集器都可以称为相机模型,相机模型研究的是由现实生活中所有的P点得到在成像平面的P’点,说白了其实就是相机模型中4个坐标系的转换(3维转2维),那我们来看看这四种坐标系
1.1 相机模型中的坐标系
针孔相机模型存在4个坐标系:世界坐标系、摄像机坐标系、图像物理坐标系和图像像素坐标系
- 世界坐标系:是客观三维世界的绝对坐标系,也称客观坐标系,就是物体在真实世界中的坐标,世界坐标系是随着物体的大小和位置变化的,单位是长度单位
- 相机坐标系:以相机的光心为坐标系的原点,以平行于图像的x和y方向为x轴和y轴,z轴和光轴平行,x, y,z互相垂直,单位是长度单位
- 图像物理坐标系:以主光轴和图像平面交点为坐标原点,x’和y’方向如图所示,单位是长度单位
- 图像像素坐标系:以图像的顶点为坐标原点,u和v方向平行于x’和y’方向,单位是以像素计
通过坐标系,即一种数学模型的方式,去理解相机模型成像的过程
1.2 四种坐标系之间的转换
世界坐标系 -> 摄像机坐标系
从上面的坐标系介绍中我们可知世界坐标系和摄像机坐标系都是三维坐标系,而物体在三维空间中的位置变化只有两种,即平移和旋转,这个时候就用到我们的欧式变换了,即使原始坐标的齐次乘以我们的欧式变换矩阵就能得到最终的结果(使用欧式变换本质上就是为了实现矩阵相乘,齐次就是方便我们进行乘法)
但是很多时候平移和旋转都不止进行了一次,在多次连续的平移和旋转的情况下,加入假如我们将向量a进行了两次欧式变换,旋转和平移分别为R1,t1和R2,t2
摄像机坐标系 -> 图像物理坐标系
从摄像机坐标变换到图像物理坐标,我们利用了相似三角形的原理,根据相似三角形的性质列出对应的矩阵计算式,即可求出我们需要的结果,但是摄像机坐标是3维的,而现在要求的图像物理坐标是2维的,所以我们还是需要用到齐次
图像物理坐标系 -> 图像像素坐标系
图像物理坐标系与图像像素坐标系之间的转换其实就是单位转换和中心原点的转换,一个是中心点和长度单位,另一个是左上角和像素单位
相机成像原理
这些坐标系转换的全部过程就是相机墨香的成像原理
1.3 镜头畸变与透视变换
镜头畸变的产生原因是:由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真,且由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真
径向畸变是由透镜的形状引起的畸变称为径向畸变,径向畸变又分为枕形畸变和桶形畸变,切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的。这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致
透视变换是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping),我们常说的仿射变换是透视变换的一个特例,透视变换的目的就是把现实中为直线的物体,在图片上可能呈现为斜线,通过透视变换转换成直线的变换
仿射变换(Affine Transformation或 Affine Map),又称为仿射映射,是指在几何中,图像进行从一个向量空间进行一次线性变换和一次平移,变换为到另一个向量空间的过程
2. 双目系统
在了解双目系统之前我们先看看单目系统,我们在上面说的相机模型其实就是最典型的单目系统,它最终的成像是2维图像,它无法测算出现实物体的距离,即无法推理出图像中每个像素点的深度信息,因此我们依照人类的双眼推出了双目系统
双目系统由于有两个摄像头,所以它可以成像两幅图像,根据两幅及两幅以上的图像我们就可以推理出图像中每个像素的深度信息,系统中有4个关键名词:极平面、极点、基线和极线,双目系统推理深度信息也是运用了相似三角形的计算关系,完成了对显示中的P点到成像点之间的距离计算
视差(Disparity):将同一控件物理1点在不同的图像中的映像点对应起来,这个差别就是视差图像,且视差与我们的深度信息(距离)是成反比的
3. 点云模型
3.1 Point Cloud简介
三维图像是一种特殊的信息表达形式,其特征是表达的空间中三个维度的数据,和二维图像相比,三维图像借助第三个维度的信息,可以实现天然的物体和背景解耦,对于视觉测量来说,物体的二维信息往往随射影方式而变化,但其三维特征对不同测量方式具有更好的统一性
与相片不同,三维图像是对一类信息的统称,信息还需要有具体的表现形式,其表现形式包括:深度图(以灰度表达物体与相机的距离),几何模型(由CAD软件建立),点云模型(所有逆向工程设备都将物体采样成点云)而点云模型是最为常见也是最基础的三维模型
在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物体表面每个采样点的空间坐标后,得到的是点的集合,称之为“点云”(Point Cloud),点云的内容:结合激光测量和摄影测量原理得到点云,包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB)
3.2 点云处理的三个层次
低层次处理方法:最具代表性的滤波方法
- 滤波方法:双边滤波、高斯滤波、条件滤波、直通滤波、随机采样一致性滤波
- 关键点:ISS3D、Harris3D、NARF,SIFT3D
中层次处理方法:特征描述方法等
- 特征描述:法线和曲率的计算、特征值分析、SHOT、PFH、FPFH、3D Shape Context、Spin Image
- 分割与分类
分割:区域生长、Ransac线面提取、全局优化平面提取、K-Means、Normalize Cut(Context based)、3D Hough Transform(线、面提取)、连通分析
分类:基于点的分类,基于分割的分类,基于深度学习的分类(PointNet,OctNet)
高层次处理方法:配准、SLAM图优化和三维重建等
- 配准:点云配准分为粗配准(Coarse Registration)和精配准(Fine Registration)两个阶段,精配准的目的是在粗配准的基础上让点云之间的空间位置差别最小化,粗配准是指在点云相对位姿完全未知的情况下对点云进行配准,可以为精配准提供良好的初始值
**基于穷举搜索的配准算法:**遍历整个变换空间以选取使误差函数最小化的变换关系或者列举出使最多点对满足的变换关系
**基于特征匹配的配准算法:**通过被测物体本身所具备的形态特性构建点云间的匹配对应,然后采用相关算法对变换关系进行估计
- SLAM图优化和三维重建等
3.2 Spin image(3维 -> 2维)
Spin image就很重要了,它是基于点云空间分布的最经典的特征描述方法,它的思想是将一定区域内的点云分布转换为二维的Spin image,然后对场景和模型的spin image进行相似性度量
3.2.1 Spin Image的生成步骤
- 定义一个定向点Oriented Point,并以这个定向点为轴生成一个圆柱坐标系
- 定义Spin image的参数,因为其是一个具有一定大小、分辨率的二维图像,换句话说,它有固定的行列数、二维网格大小和网格
- 将圆柱体内的三维坐标投影到二维Spin image,这个过程可以理解为一个Spin image绕着法向量n旋转360度,扫描到的三维空间的点会落在二维网格中
- 根据spin image中的每个网格中落入的点不同,来计算每个网格的强度
- 当所有的点落入spin image后,显示时以每个网格(像素)中的强度为依据来执行,最直接的方法就是计算落入每个网格中的点的个数,但是这种1方法太简单粗暴了,为了达到更好的显示效果,降低对位置的敏感度、降低噪音影响和增加稳定性,Johnson提出用双线性插值的方法将一个点分布在四个像素中
通过上面的步骤,我们就可以得到spin image每一个像素的像素值了,也就是可以成功显示转化后的二维图像
3.2.2 spin image的3个关键参数
在生成Spin image的过程中有一个很重要的步骤就是定义生成图像的大小(行列数)、分辨率(二维网格大小)和网格,相对应的这三个参数其中两个就是我们在这一部分要说的3个关键参数之二
- 大小,即spin image的1行列数,二者一般我们是设置为相等的2个值
- 分辨率,即二维网格的像素实际尺寸,使用和原三维网格相近的尺寸比较合适,因此通常使用三维网格所有边的平均值来作为这个尺寸
- support angle,即法向量夹角的大小限制,指的是空间中顶点的法向量与创建圆柱坐标系所选点法向量之间的夹角
有时候我们不需要将所有的点都落入我们的二维网格中,这个时候调整support angle保留主要信息,降低后续计算量即可实现,一般设为60~90度
3.3 初识三维重建
3.3.1 三维重建的发展状况
三维重建包括三个方面,基于SFM的运动恢复结构、基于Deep learning的深度估计和结构重建,以及基于RGB-D深度摄像头的三维重建
再来介绍一下SFM(Structure From Motion),主要基于多视觉几何原理,用于从运动中实现3D重建,也就是从无时间序列的2D图像中推算出三维信息,是计算机视觉学科的重要分支,广泛应用于AR/VR、自动驾驶等领域,虽然SFM主要基于朵视觉几何原理,随着CNN的在二维图像的不断积累,很多基于CNN的2D深度估计取得一定成果,用CNN探索三维重建也是不断深入的课题
但是,虽然深度学习方法呈上升趋势,但是传统基于多视觉几何方法热情并没有消退,实际应用还是以多视几何为主,深度学习的方法还在探索过程,距离真正的实际应用还有一端距离
3.3.2 SFM和OpenMVG
从二维图像中恢复三维场景结构是计算机视觉的主要任务,广泛应用于3D导航、虚拟游戏等领域,SFM是一个估计相机参数及三维点位置的问题,根据SfM过程中图像添加顺序的拓扑结构,SfM方法可以分为增量式、全局式、混合式、层次式、基于语义的SFM和基于深度学习的SFM
openMVG (Open Multiple View Geometry):开源多视角立体几何库,这是一个cv界处理多视角立体几何的著名开源库,信奉“简单,可维护”,提供了一套强大的接口,每个模块都被测试过,尽力提供一致可靠的体验
OpenMVG实现的一些经典应用
-
解决多视角立体几何的精准匹配问题;
-
提供一系列SFM需要用到的特征提取和匹配方法;
-
完整的SFM工具链(校正,参估,重建,表面处理等);
-
OpenMVG尽力提供可读性性强的代码,方便开发者二次开发,核心功能是尽量精简的,所
以你可能需要其它库来完善你的系统
SFM的劣势:尽管SfM在计算机视觉取得显著成果并应用,但是大多数SfM基于周围环境是静止这一假设,既相机是运动的,但是目标是静止的,当面对移动物体时,整体系统重建效果显著降低,所以,传统SFM基于目标为刚体的假设
版权声明:以上学习内容及配图来自或参考自——八斗人工智能 王小天
如果文章对您有所帮助,记得一键三连支持一下哦~
- 点赞
- 收藏
- 关注作者
评论(0)