初探三维计算机视觉(三维重建)—— 相机模型 + 双目系统 + 点云模型

目录

  • 初探三维计算机视觉(三维重建)—— 相机模型 + 双目系统 + 点云模型
  • 1. 相机模型
    • 1.1 相机模型中的坐标系
    • 1.2 四种坐标系之间的转换
    • 1.3 镜头畸变与透视变换
  • 2. 双目系统
  • 3. 点云模型
    • 3.1 Point Cloud简介
    • 3.2 点云处理的三个层次
    • 3.2 Spin image(3维 -> 2维)
      • 3.2.1 Spin Image的生成步骤
      • 3.2.2 spin image的3个关键参数
    • 3.3 初识三维重建
      • 3.3.1 三维重建的发展状况
      • 3.3.2 SFM和OpenMVG

咱就是说注终于到三维计算机视觉部分了,本篇内容主要先浅谈一下三维计算机视觉的基本概念和应用,在后续我们会好好学学三维重建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 点云处理的三个层次

低层次处理方法:最具代表性的滤波方法

  1. 滤波方法:双边滤波、高斯滤波、条件滤波、直通滤波、随机采样一致性滤波
  2. 关键点:ISS3D、Harris3D、NARF,SIFT3D

中层次处理方法:特征描述方法等

  1. 特征描述:法线和曲率的计算、特征值分析、SHOT、PFH、FPFH、3D Shape Context、Spin Image
  2. 分割与分类

分割:区域生长、Ransac线面提取、全局优化平面提取、K-Means、Normalize Cut(Context based)、3D Hough Transform(线、面提取)、连通分析

分类:基于点的分类,基于分割的分类,基于深度学习的分类(PointNet,OctNet)

高层次处理方法:配准、SLAM图优化和三维重建等

  1. 配准:点云配准分为粗配准(Coarse Registration)和精配准(Fine Registration)两个阶段,精配准的目的是在粗配准的基础上让点云之间的空间位置差别最小化,粗配准是指在点云相对位姿完全未知的情况下对点云进行配准,可以为精配准提供良好的初始值

**基于穷举搜索的配准算法:**遍历整个变换空间以选取使误差函数最小化的变换关系或者列举出使最多点对满足的变换关系

**基于特征匹配的配准算法:**通过被测物体本身所具备的形态特性构建点云间的匹配对应,然后采用相关算法对变换关系进行估计

  1. SLAM图优化和三维重建等

3.2 Spin image(3维 -> 2维)

Spin image就很重要了,它是基于点云空间分布的最经典的特征描述方法,它的思想是将一定区域内的点云分布转换为二维的Spin image,然后对场景和模型的spin image进行相似性度量

3.2.1 Spin Image的生成步骤

  1. 定义一个定向点Oriented Point,并以这个定向点为轴生成一个圆柱坐标系
  2. 定义Spin image的参数,因为其是一个具有一定大小、分辨率的二维图像,换句话说,它有固定的行列数、二维网格大小和网格
  3. 将圆柱体内的三维坐标投影到二维Spin image,这个过程可以理解为一个Spin image绕着法向量n旋转360度,扫描到的三维空间的点会落在二维网格中

  1. 根据spin image中的每个网格中落入的点不同,来计算每个网格的强度
  2. 当所有的点落入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基于目标为刚体的假设


版权声明:以上学习内容及配图来自或参考自——八斗人工智能 王小天
如果文章对您有所帮助,记得一键三连支持一下哦~

初探三维计算机视觉(三维重建) —— 相机模型 + 双目系统 + 点云模型相关推荐

  1. 云模型在综合评价过程中的应用

    目录 1 云模型标尺(标准云模型)的构建方法 1.1 通过正态云的"3En 规则"来表示评价论域 1.2 通过论域的边界值隶属度相等来表示评价论域 1.3 通过黄金分割法来表示评价 ...

  2. MatLab建模学习笔记11——云模型在数据处理中的应用

    云模型属于不确定性人工智能范畴,主要用于定性与定量之间的相互转换,自然界中的不确定性从属性角度来说主要有随机性和模糊性."云"或者"云滴"是云模型的基本单元,& ...

  3. AI学习笔记(六)三维计算机视觉与点云模型

    AI学习笔记之三维计算机视觉与点云模型 立体视觉 立体视觉的概念 立体视觉的原理 单目系统 双目系统和视差 对极几何约束 SIFT sift特征的特点 sift算法总体介绍 sift特征提取和匹配具体 ...

  4. 计算机视觉:相机模型与参数标定

    目录 一.针孔照相机模型 1.像主点偏移 2.内参矩阵 3.畸变现象 4.畸变校正 二.照相机标定 1.标定原理 2.实验流程 三.代码实现(python+opencv) 1.数据准备 2.代码实现 ...

  5. 双目三维重建系统(双目标定+立体校正+双目测距+点云显示)Python

    双目三维重建系统(双目标定+立体校正+双目测距+点云显示)Python 目录 双目三维重建系统(双目标定+立体校正+双目测距+点云显示)Python 1.项目结构 2. Environment 3.双 ...

  6. 【计算机视觉】相机标定原理(像素点与三维坐标点的转换)

    一.相机标定概述 相机标定目的 计算机视觉的任务之一:从相机获取的图像信息出发计算三维空间中物体的几何信息,并由此重建和识别物体. 相机标定内容 空间物体表面某点的三维几何位置与其在图像中对应点之间的 ...

  7. 立体栅格地图_三维栅格地图构建之一:双目系统 | 学步园

    前言:对一般物体(刚体.文物.建筑物)的三维重建通过一个摄像机或几个摄像机(不需要平行)可完成.但在机器人技术中,一般都应用双目平行视觉或三目视觉,目前三目系统应用的比较多.三目即在双目基础上在上方再 ...

  8. 【计算机视觉】相机模型立体视觉

    文章目录 1. 相机模型 1.1 相机模型的四个坐标系 1.2 坐标系关系图 1.3 坐标系之间的转换 1.3.1 世界坐标系到摄像机坐标系 1.3.2 摄像机坐标系到图像物理坐标系 1.3.3 图像 ...

  9. VSLAM学习(一) 三维运动、相机模型、SLAM模型

    目录 VSLAM学习(一) 三维运动.相机模型.SLAM模型 VSLAM学习(二) 非线性优化 VSLAM学习(三) 单目相机位姿估计 VSLAM学习(四) Bundle Adjustment 一.三 ...

  10. 如何为自己的双目系统选取相机?

    目前来说,一般使用等焦的两个同型号摄像头组成双目,不等焦的双目应用场景以及使用方式暂时未知. 双目系统,我们一般指用左右两个摄像头来模拟人眼的一套系统,一般用来测距,避障,导航等领域.那么在展开双目栏 ...

最新文章

  1. python opencv打开摄像头
  2. 服务器负载均衡的基本功能和实现原理
  3. C#操作xml文件:使用XmlDocument 实现读取和写入
  4. AI算法连载03:数学基础之数值计算
  5. mysql pom.xml版本号_maven的pom.xml的依赖,什么情况下可以不写版本号?
  6. C++-string““s操作符
  7. SQL Server与Oracle中的隔离级别
  8. 免费下载 仿宋GB2312字体
  9. “非常晚餐”第一期 “3D虚拟世界”是“黑客帝国”吗?
  10. 机器学习基础(二)——训练集和测试集的划分
  11. 计算机怎么远程桌面,电脑怎么打开远程桌面连接功能
  12. pacman 查询_pacman命令
  13. NSIS “Win32 Error,Code:740 ,请求的操作需要提升”错误解决方法
  14. oCPC实践录 | 开篇语
  15. 【附源码】计算机毕业设计SSM企业合同管理系统
  16. 【pureftp】解决filezilla连接ftp报错 服务器发回了不可路由的地址 使用服务器地址代替
  17. Blender学习记录
  18. 长期一个人独自生活会怎么样?
  19. VSCode中MarkDown图片无法显示
  20. 进阶篇:3.1.6)注塑件-注射模具与设备

热门文章

  1. java 上下文是什么意思_什么是执行上下文
  2. SSM用户注册登录案例
  3. java里什么是索引_面试官:什么是索引?
  4. Opencontrail 流的处理
  5. 配置微信公众号之公众号绑定小程序
  6. Python数据类型——逻辑值详解
  7. 手把手教你用 Keras 实现 LSTM 预测英语单词发音
  8. 第二次作业,问卷星的使用
  9. python把英语句子成分字母_英语句子成分分析(最完整版)
  10. 认知-认知水平:认知水平