点击进入—>3D视觉工坊学习交流群

结构光三维重建系统是由一个相机和一个投影仪组成,关于结构光三维重建系统的理论有很多,其中有一个简单的模型是把投影仪看做相机来使用,从而得到物体的三维信息。接下来我将详细介绍这个模型的原理。

在把投影仪当相机使用之前,我们得知道如何通过两个相机的信息得到物体的三维信息。

如图所示是一个双目相机系统,如果只有一个相机(以左相机为例),相机上的一个像素点可以对应三维空间中光心与相机成像点连线OLP上的无穷个点,所以仅凭一个相机的信息是无法得到空间中物体的三维信息。但是如果能有另一个相机(右相机),则物体的三维信息可以唯一确定。因为离左相机不同距离的物体,在右相机上的成像位置是不同的,例如,图中线OLP上的点,在右相机的成像位置为图中红线,如果能知道物体在左相机成像位置PL以及物体在右相机的成像位置PR的话,就可以唯一确定物体三维位置P。

熟悉双目成像系统的小伙伴应该知道,要真正求解出物体的三维坐标值,我们需要知道左右相机的内参矩阵KL和KR,以及左右相机之间的外参R,T。其中R是右相机坐标系和左相机坐标系之间的旋转矩阵,T是右相机坐标系和左相机坐标系之间的平移矩阵。

下面我将推导已知三维空间中的物体在左右相机上的成像位置分别为PL(uL,vL)和PR(uR,vR)的情况下,如何解出物体的三维信息P(X,Y,Z)。

由于世界坐标系的原点可以是空间中的任意一点,为了使计算简单,不妨让其与左相机坐标系的原点重合。则左相机的外参矩阵(左相机和世界坐标系的转换矩阵)右相机的外参矩阵(右相机和世界坐标系的转换矩阵),根据相机模型我们可以得到如下方程等式:

联立上述方程组,方程组中有5个未知数,sL,sR,X,Y,Z,和六个方程。完全足够解出5个未知数。对于双目系统来说,最大的问题是怎么找到左相机成像点(uL,vL)对应的右相机成像点(uR,vR),这个方法有很多,首先通常需要依据极线约束对左右相机图像做立体矫正,把对应点在图像中二维的搜索放到一维(同一行)上,然后在根据各种代价计算找到准确匹配点,具体方法这里就不详述了。

知道如何通过左右相机得到物体的三维信息后,我们来看怎么把投影仪看做相机,或者说看做相机的逆。相机捕捉的是物体反射的光信息,而投影仪是把光信息投射到物体上。如果我们对投影仪投射的每个像素点的光进行编码,把编码后的光投射到物体表面上,并通过对相机捕捉到的物体表面光信息进行解码,就可以知道打在物体表面的光是由投影仪那个像素发出的,也就可以知道物体表面会在虚拟的投影仪图像上的成像位置。

投影光编码的方式很多,通常的编码是分别对投影图片的行和列编码,以格雷码为例,常见的格雷码编码如下图所示。

列格雷码示例

通过对相机图片上拍摄的物体表面投射的列格雷码光编码及行格雷码光编码进行解码,就可以知道物体在相机图片上成像位置(uc,vc)及其对应的投影仪虚拟的成像位置(up,vp),则上述双目方程可以改为:

其中Kc和Kp分别代表的是相机和投影的内参,和双目系统一样,我们不妨假设世界坐标系的原点与相机坐标系重合,则,Rp=R,Tp=T,其中R,T分别为投影仪坐标系对相机坐标系的旋转和平移矩阵。

在上述方程中,一共有五个未知数sc,sp,X,Y,Z,和六个方程。实际上,六个方程可以解六个未知数,即使我们只需要知道知道up和vp中的一个,这也是为什么在结构光三维重建时我们通常只需要投一个方向的条纹(横条纹或者竖条纹)的原因。

通过上述方程,我们可以解出物体的三维信息,以投影列格雷码(获得up)为例,物体的三维信息的解法推导如下:

则结构光三维成像系统物体的三维解为:

自此,我们就把将投影仪看成的模型推导完毕,想要真正的完成物体的三维重建,我们还需要知道如何获取相机和投影仪的标定参数,以及如何对投影光进行编码和解码,实际上除了格雷码编码外,还有很多常见光编码方式,如相移法,格雷码+相移法,多频外差法等,每个编码方法都有他们的优劣。今后我将对一一介绍以上内容。

本文的参考文献是High-accuracy, high-speed 3D structured light imaging techniques and potential applications to intelligent robotics,这篇文章很详细的介绍了如何通过结构光系统获得物体的三维信息。Ps:这篇文献中给出的三维解有印刷错误,笔者在这篇文章中给出了正确解,感兴趣的小伙伴也可以自己推导。

本文仅做学术分享,如有侵权,请联系删文。

点击进入—>3D视觉工坊学习交流群

干货下载与学习

后台回复:巴塞罗自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件

后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf

后台回复:3D视觉课程,即可学习3D视觉领域精品课程

3D视觉工坊精品课程官网:3dcver.com

1.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
2.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
3.国内首个面向工业级实战的点云处理课程
4.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
5.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
6.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
7.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

8.从零搭建一套结构光3D重建系统[理论+源码+实践]

9.单目深度估计方法:算法梳理与代码实现

10.自动驾驶中的深度学习模型部署实战

11.相机模型与标定(单目+双目+鱼眼)

12.重磅!四旋翼飞行器:算法与实战

13.ROS2从入门到精通:理论与实战

14.国内首个3D缺陷检测教程:理论、源码与实战

15.基于Open3D的点云处理入门与实战教程

16.透彻理解视觉ORB-SLAM3:理论基础+代码解析+算法改进

重磅!粉丝学习交流群已成立

交流群主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、ORB-SLAM系列源码交流、深度估计、TOF、求职交流等方向。

扫描以下二维码,添加小助理微信(dddvisiona),一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿,微信号:dddvisiona

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看,3天内无条件退款

高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

结构光三维重建基本原理相关推荐

  1. 双目三维重建_系列篇|结构光三维重建基本原理

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 结构光三维重建系统是由一个相机和一个投影仪组成,关于结构光三维重建系统的理论有很多,其中有一个简单的模 ...

  2. 重磅直播|计算深度分割技术的实现与全局效应下的结构光三维重建

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微 ...

  3. opencv线结构光三维重建

    下面是从CSDN下载的一个程序,用到了其他的一些库,大致实现了HALCON示例中的线结构光三维重建的功能,下面是完整代码,具体解释见注释 #include <opencv2/highgui/hi ...

  4. 结构光三维重建Projector-Camera Calibration投影仪相机标定

    结构光三维重建-Projector-Camera Calibration投影仪相机标定 目录 结构光三维重建-Projector-Camera Calibration投影仪相机标定 1.结构光相机标定 ...

  5. [结构光三维重建] 2、基于结构光的三维重建系统工作原理总结

    概念 基于结构光三维重建系统模型,如下图所示: 基于结构光的三维成像,实际上是三维参数的测量与重现,需要主动去投射结构光到被测物体上,通过结构光的变形来确定被测物的尺寸参数,是一种主动三维测量方式. ...

  6. 结构光三维重建-3D Scanning Software实现三维重建

    结构光三维重建-3D Scanning Software实现三维重建 目录 结构光三维重建-3D Scanning Software三维重建 1. 说明 2.Requirements (1)下载相关文 ...

  7. 结构光三维重建1——四步相移原理

    一.简介 结构光三维重建主要的原理就是从投影仪中投影出特定图案的结构光,然后通过对多组结构光的分析计算,得到投影仪像素与相机像素的对应关系,进而通过事先标定好的系统参数,实现所拍物体的三维重建. 下面 ...

  8. 线结构光三维重建(一)

     线结构光三维重建测量系统,是基于三角测量的原理进行三维重建.相机在采集图像过程中,对相机进行内外参标定后,我们可以将图像上的像素点坐标,转为世界坐标进行测量.但由于小孔成像的原理,对于目标距离光心的 ...

  9. 线结构光三维重建法兰盘

    线结构光三维重建可以得到法兰盘的三维点云图,进一步的,我们可以对螺纹处的点云数据进行分析,本节主要记录线结构光三维重建的主要步骤及一些问题. 一.光平面方程 1.标定板位置不变,拍摄有激光和无激光两张 ...

最新文章

  1. PYQT5登录界面跳转主界面方法
  2. 首次安装Pycharm出现No Python interpreter selected解决方法
  3. Game-Tech小游戏专场第二趴,这次帝都见
  4. VTK:Shaders之BozoShaderDemo
  5. Django从理论到实战(part29)--Field的常用参数
  6. Restrictions查询用法
  7. MYSQL分页优化查询
  8. ROS Nodelet使用
  9. SqlServer2008 数据库同步的两种方式(Sql JOB)
  10. 如何选择自己喜欢的书籍?
  11. python中dateutil库用法详解
  12. (二)动态白盒测试(含逻辑覆盖例子)
  13. Unity敌人生成器
  14. unity 暂停按钮_Unity VideoPlayer教程之 视频播放暂停切换
  15. pspice仿真过程中出现Less than 2 connections at node
  16. java万年历 节日_用java语言编写一个万年历程序,要求只显示阳历、节日、还有农历年、闰年...
  17. Unity利用JsonFX解析Json格式文本
  18. TCP局域网服务器简易搭建(eps-01s)
  19. SOS1 Ras GEF蛋白高纯度测定
  20. Java毕业设计 JSP+MySQL幼儿园信息管理系统

热门文章

  1. mac怎么做一段卡点音乐
  2. 经纬度和坐标之间怎么相互转换
  3. IDEA :插入代码模板(Ctrl+J )
  4. 基于NodeJS+VUE+Mysql的大学生校园疫情防控管理系统
  5. 百度病了,必应挂了,Yandex疯了。
  6. DNS区域以及批量创建
  7. eSIM产业动态(持续更新)
  8. ZooKeeper各个版本下载
  9. 《Android移动应用基础教程》(Android Studio)(第二版)黑马程序员 课后习题答案
  10. Hive 与 Hbase表映射(内部表与外部表),Hbase常用命令