结构光三维测量(数字光栅投影)

  • 结构光三维测量系统
    • 单目测量系统
    • 双目测量系统
    • 单目系统测量实例
      • 光栅生成
      • 三维点云重建

结构光三维测量系统

目前对于三维视觉来说,有很多种技术,例如双目/多目视觉法、TOF法、散斑法、结构光等等,不同的方法有着各自不同的应用场景和范围。对于工业的产品测量、识别,检测来说,结构光方法是目前比较主流的方法。结构光方法拥有高精度、高密集点云、高速的优点,适用于三维重建、缺陷检测、智能抓取、人脸识别、视觉导航等一系列工作。

结构光主要分为点、线、面三类测量结构,本博客主要从面结构光(数字光栅投影测量)阐述其测量原理和重建效果,面结构光主要投影光栅图像到测量物体表面,然后光栅经过物体面型调制之后被相机采集,通过一系列解相位,然后经过系统标定好的参数,将相位转换为三维点云。

单目测量系统

单目测量系统,就是一个相机+一个投影仪的测量结构,该方法需要对投影仪进行标定,首先对光栅进行投影,然后求解相位信息,再把相位转换到三维点云。对于求解相位信息有很多种成熟的方法:例如(1)格雷码方法(2)多频外差方法(3)倍频法(4)phase-coding法等等。将相位转化为三维点云也有很多经典的方法,例如(1)相位差法(2)东南大学达飞鹏老师的8参数方法(3)反向相机方法。后两种方法最为灵活,应用相对也更为广泛,下面会具体进行描述。下图改自南理工左老师的论文图。

双目测量系统

双目测量系统,就是双目相机+一个投影仪的测量系统,该方法主要利用相位信息进行双目匹配,然后实现三维重建。该方法的好处就是对投影仪无需进行标定,且现有双目测量有很多优秀的库函数可以调用,例如Opencv中包含很多标定、匹配、畸变校正、立体校正的代码。

单目系统测量实例

下面结合具体的测量实例进行详细介绍,包含光栅生成,相位解包,和三维点云转换。

光栅生成

本次我们采用四步相移+格雷码的方法进行物体测量,四步相移为了求解包裹相位,但是包裹相位是一个一对多的映射函数,因此需要利用格雷码将包裹相位展开,求取一个一对一映射函数的绝对相位。四步相移的光栅的形式如下:
I1(x,y)I_1(x,y)I1​(x,y) = a(x,y)a(x,y)a(x,y) + b(x,y)b(x,y)b(x,y)cos[ϕ(x,y)\phi(x,y)ϕ(x,y)]
I2(x,y)I_2(x,y)I2​(x,y) = a(x,y)a(x,y)a(x,y) + b(x,y)b(x,y)b(x,y)cos[ϕ(x,y)\phi(x,y)ϕ(x,y)-π/2\pi/2π/2]
I3(x,y)I_3(x,y)I3​(x,y) = a(x,y)a(x,y)a(x,y) + b(x,y)b(x,y)b(x,y)cos[ϕ(x,y\phi(x,yϕ(x,y)-π\piπ]
I4(x,y)I_4(x,y)I4​(x,y) = a(x,y)a(x,y)a(x,y) + b(x,y)b(x,y)b(x,y)cos[ϕ(x,y)\phi(x,y)ϕ(x,y)-3π/2\pi/2π/2]
利用四步相位我们可以求解包裹相位,
ϕ(x,y)\phi(x,y)ϕ(x,y) = atan2[I1(x,y)I_1(x,y)I1​(x,y)-I3(x,y)I_3(x,y)I3​(x,y), I2(x,y)I_2(x,y)I2​(x,y)-I4(x,y)I_4(x,y)I4​(x,y)]
其中atan2[]是一个四象限反正切函数,于是我们就得到了包裹相位,其具体形式如下图所示,

可以看出x与y是一个一对多的函数,我们需要进行展开,此时我们需要一个条纹阶次k(x,y)k(x,y)k(x,y),然后通过下面的公式,完成相位展开
Φ(x,y)\Phi(x,y)Φ(x,y) = ϕ(x,y)\phi(x,y)ϕ(x,y) + 2π×k(x,y)\pi\times k(x,y)π×k(x,y)
其展开的过程如下图所示,格雷码的作用就是为了求解这个条纹阶次k(x,y)k(x,y)k(x,y)。

格雷码是由0或1的码字构成的,因此每张格雷码可以区分出两个周期的阶次k(x,y)k(x,y)k(x,y),因此为了获取求解更多的阶次信息,更多的格雷码就需要,格雷码的数量n与阶次的关系为2n2^n2n。例如如下图的方式是三张格雷码光栅,第一个阶次的格雷码字为000,第二个为100,以此类推各个周期的格雷码都不相同,因此可以确定出8个阶次,结合包裹相位于是这样我们就可以得到绝对相位信息。

三维点云重建

本博客采用反向相机法将相位信息转化为三维点云,首先对圆形标定板进行了重建,其效果如下图所示,

利用50w分辨率相机对瓶盖进行三维重建,其纹理信息清晰可见

然后采用500w高分辨率相机对雕像进行三维重建,

如需了解更多,交流合作可以联系QQ:571861127。

结构光三维测量(数字光栅投影)相关推荐

  1. 结构光三维测量几种比较成熟的方法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 1.飞行时间发 原理:通过直接测量光传播的时间,确定物体的面型.发 ...

  2. 机器视觉学习系列一:线结构光三维测量重建

    项目背景: 项目用于工业零件的公差检测,主要是针对缝隙和高低差两种公差,具体应用领域如汽车.飞机的蒙皮对接检测,当然,对于别的公差改变一些代码,也是可以做到的: 技术方案: 采用线结构光进行三维重建, ...

  3. 3D视觉/人工智能/结构光三维测量

    关注公众号了解更多:

  4. 基于数字光栅投影的结构光三维测量技术

    概述 欢迎访问 持续更新:https://cgabc.xyz/posts/fb344124/ 本文是在读了论文<基于数字光栅投影的结构光三维测量技术与系统研究>[1]之后做的学习总结,方便 ...

  5. 基于数字光栅投影的结构光三维测量技术与系统研究

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文末福利:按描述操作,可获取原书籍电子版. [摘要] 相位测量轮廓术是目前使用最为广泛的一种结构光三维 ...

  6. 图像凸集投影法_论文分享|数字投影结构光三维测量方法研究

    温馨提示:本文约5600字,阅读全文需约10分钟. 文末福利:按照文末提示操作,输入关键词可获取论文全文. 摘要 人类所处的物理世界空间是三维的,任何实物都以三维的方式呈现.随着社会的进步发展,三维信 ...

  7. 基于相移法的结构光三维测量技术

    1. 结构光三维测量原理 1.1 单目结构光系统 结构光投影三维测量系统主要由一个CCD相机.投影仪和PC机组成,如图所示.首先在PC上进行结构光编码,通过投影仪将编码好的结构光投影至物体表面,再由数 ...

  8. 【论文阅读笔记】Structured-light 3D surface imaging: a tutorial(结构光三维表面成像)

    Geng J. Structured-light 3D surface imaging: a tutorial[J]. Advances in Optics and Photonics, 2011, ...

  9. 编码结构光三维视觉测量系统(二)

    一.摘要 结构光三维视觉测量方法不需要直接接触被测物体,不会磨损被测物体表面,且具有速度快.精度高.实用性高等特点,是进行三维测量的最佳方法之一.而单目结构光视觉测量系统与双目相比,具有成本低.算法简 ...

最新文章

  1. 《C++程序设计教程(第3版)》——第3章,第2节cout输出流
  2. deepin启动盘无法引导安装_深度启动盘制作工具(Deepin Boot Maker)怎么安装kubuntu?Deepin Boot Maker图文教程...
  3. 【solr专题之二】配置文件:solr.xml solrConfig.xml schema.xml
  4. (剑指Offer)面试题18:树的子结构
  5. java的知识点45——事务||测试时间处理(java.sql.date,time,timestamp)
  6. Xshell-密钥登录
  7. Shell命令-文件及目录操作之chattr、lsattr
  8. 自动安装 Java Access Bridge 2.0.2 的批处理脚本
  9. Apache HTTP Server 与 Tomcat 的三种连接方式介绍
  10. html之marquee详解
  11. JavaScript写一个能遍历对象和数组的通用forEach函数
  12. Redis(六):Redis主从复制(1)原理
  13. Tuxera NTFS对磁盘进行不同格式转换
  14. 【软件需求工程与建模】13组组队项目选题介绍及项目计划安排
  15. util.Date插入数据库有时差
  16. linux审计工具audit,Linux audit安全审计工具
  17. QT .pro文件详解
  18. python学习记录--转义字符 字符串 特殊参数
  19. nginx配置详解(容器、负载)—官方原版
  20. 解决php报错Warning: date(): It is not safe to rely on the system's timezone settings

热门文章

  1. 转行学什么技术最赚钱?选择Python,你绝对不会后悔
  2. 利用稳压二极管构造简单电压控制开关电路
  3. I2C总线为什么要接上拉电阻
  4. SurfaceView和TextureView的使用以及区别
  5. python Mock模块
  6. (六)51单片机基础——定时器
  7. 数字图像处理中的卷积定理和傅里叶变换
  8. part alway false condition not allow mybatis报错解决
  9. 细胞治疗最新研究进展(2022年5月)
  10. VxWorks中的任务间通信(信号量、共享内存、消息队列、管道、信号、事件、套接字socket)