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

作者:神秘网友 发布时间:2020-09-30 23:26:12

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

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

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

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

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

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

单目测量系统

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

双目测量系统

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

单目系统测量实例

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

光栅生成

本次我们采用四步相移+格雷码的方法进行物体测量,四步相移为了求解包裹相位,但是包裹相位是一个一对多的映射函数,因此需要利用格雷码将包裹相位展开,求取一个一对一映射函数的绝对相位。四步相移的光栅的形式如下:
I 1 ( 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)]
I 2 ( 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]
I 3 ( 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 π]
I 4 ( 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[ I 1 ( x , y ) I_1(x,y) I1?(x,y)- I 3 ( x , y ) I_3(x,y) I3?(x,y), I 2 ( x , y ) I_2(x,y) I2?(x,y)- I 4 ( 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与阶次的关系为 2 n 2^n 2n。例如如下图的方式是三张格雷码光栅,第一个阶次的格雷码字为000,第二个为100,以此类推各个周期的格雷码都不相同,因此可以确定出8个阶次,结合包裹相位于是这样我们就可以得到绝对相位信息。
结构光三维测量(数字光栅投影)

三维点云重建

本博客采用反向相机法将相位信息转化为三维点云,首先对圆形标定板进行了重建,其效果如下图所示,
结构光三维测量(数字光栅投影)
利用50w分辨率相机对瓶盖进行三维重建,其纹理信息清晰可见
结构光三维测量(数字光栅投影)
然后采用500w高分辨率相机对雕像进行三维重建,
结构光三维测量(数字光栅投影)
如需了解更多,交流合作可以联系QQ:1091454117。

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

  1. Vue第2章Vue目录结构分析常用指令-数据绑定属性绑定渲染数据循环

    Vue【第2章】:Vue目录结构分析,常用指令-数据绑定、属性绑定、渲染数据、循环渲染数据... Vue目录结构分析 常用指令:数据绑定、属性绑定、数据渲染 1.整体目录说明: 2. .vue文件说明: .vue的文件称为组件,里面有三部分组成:template、script、style

  2. 【数据结构·考研】Floyd算法

    【数据结构·考研】Floyd算法 Floyd算法 Floyed 算法与 Dijkstra 算法的思想完全一样,遍历整个邻接矩阵,比较每一条边可否加入循环中的两边之间来短接。 Floyed 算法基于动态规划算法,可以允许有负权值,但不可以有带负权值的边存在。 首先,初始化一个邻接

  3. MyISAM 和 InnoDB存储引擎(二者和表结构有关系)

    MyISAM 和 InnoDB存储引擎(二者和表结构有关系) MyIsAm :是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的 也就是说: InnoDB的B+树主键索引的叶子节点就是数据文件,辅助索引

  4. 【数据结构·考研】Prim算法

    【数据结构·考研】Prim算法 Prim算法 Prim 算法和 Dijkstra 算法很相似,都是从一个点开始把点不停加入到点集合。 Prim算法适合于边疏密的图。 首先定义邻接矩阵、标志数组和一个不断更新的 minCost 数组用来求当前点集到其他点的最小权值。 #define N 6 vec

  5. LeetCode 剑指Offer 09. 用两个栈实现队列(数据结构)

    LeetCode 剑指Offer 09. 用两个栈实现队列(数据结构) 题目链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/ 思路: 如图所示,我们用第一个栈支持插入操作,第二个栈支持删除操作。 根据栈先进后出的特性,我们把要插入

  6. 设备管理

    设备管理 Java学习笔记 设备管理 磁盘结构 磁盘调度算法 本文转载自 计算机操作系统之设备管理,如有侵权,联系博主速删! 设备管理 盘面(Platter):一个磁盘有多个盘面; 磁道(Track):盘面上的圆形带状区域,一个盘面可以有多个磁道; 扇区(Track Sect

  7. Python中三维矩阵图像的解释

    Python中三维矩阵图像的解释 对于一个有m*n个像素的图片,表示为三维矩阵就是(m, n, 3),其中m表示高,n表示宽,3表示该元素的RGB色彩值。也就是下面这个矩阵: 每个蓝色的框代表的就是一个像素,该像素的值为rgb色彩值,如可以是[70 69 64],该像素的R值为7

  8. 计算机体系结构知识笔记

    计算机体系结构知识笔记 计算机体系结构结构:计算机的概念结构、功能和性能特性,它从一个更高的层次对计算机的结构特征等宏观特征进行研究。 1、计算机体系结构分类 2、CISC和RISC 指令体系结构(ISA):一个处理器支持的指令和指令的字节级编码,不同的处