前言

在近景三维重建领域,结构光技术可以说是应用最广泛的,尤其在工业领域。该技术目前具有高精度和无视弱纹理等优点,但复杂的室外环境还是会对该技术造成一定程度的干扰。目前用的比较多的结构光分别两大类:线结构光以及条纹结构光。接下来我来简单介绍一下线结构光三维重建。


1 原理

线结构光三维重建测量系统,是基于三角测量的原理进行三维重建。整个成像系统示意图如下图所示,我们可以看到主要分为两个子系统,即激光发射器构成的激光系统和相机构成的成像系统。首先我们假定所有点的关系基于相机坐标系,成像系统基于相机标定模型,相机标定完成后得到相机内参,基于相机内参可以得到目标物体点P在成像面P’点的位置坐标(Xc,Yc,Zc)。当P’点的位置坐标已知后,Oc坐标为(0,0,0),因为空间直线OcP’直线方程可以得到。空间直线方程得到后,联立激光发射器投射的光平面方程,直线与平面的交点P(Xw,Yw,Zw)即可通过求解得到,但这一步得到的坐标为相机坐标系下的坐标,将该点坐标乘以相机标定过程中得到的相机外参即可得到该点世界坐标。

2 步骤

结构光三维重建通常分为三步:1)相机标定,标定出相机的内外参数;2)结构光条纹中心的提取即激光线的提取;3)结构光标定即光平面的标定;即将世界坐标系下的三维点转换为相机坐标系下的三维点,通过多个相机下的三维坐标点拟合出光平面,然后拟合的光平面可以用来完成三维重建。

整个过程的详细路线图如下图所示:

激光线提取算法如下所示

光平面标定
有直接标定和间接标定两种办法。直接标定法就是直接获取光条上特征点的世界坐标(Xw,Yw,Zw),进而求得光平面,空间平面方程(光平面方程)可以表示如下AX+BY+CZ = 1,有多个特征点的世界点坐标,通过最小二乘即可拟合出光平面方程。
间接标定法并不是在光条上直接获得特征点的世界坐标,而是首先对摄像机进行标定,通过提取标定靶上的光斑中心和对应的世界坐标,由摄像机模型确定出投影矩阵M,然后拍摄光条图像,通过图像处理和计算提取光条上各点的像素坐标,经投影矩阵进行坐标变换后,获取与该像素坐标对应的世界坐标,进而构造方程AX+BY+CZ = 1,并通过最小二乘解求出A、B、C。

3 双目线激光三维重建

是一种基于线激光扫描和双目立体视觉相结合的三维测量系统,该种线激光扫描系统可以避免传统单相机扫描技术中标定激光平面的过程,提高三维测量精度。该测量系统由两个相机、一个先激光投射器和一个旋转电机组成,如图1所示,测量时通过向被测物体投射单条线激光条纹,然后由旋转电机带动激光条纹扫描整个被测物体,扫描的同时立体视觉系统以指定的帧率拍摄被测物体;根据所拍摄的含有激光条纹的立体图像对,由立体视觉的极线约束和激光条纹特征计算出立体视觉系统之间的对应性关系;最后根据预先标定好的系统参数按照双目立体视觉的方法计算出物体的三维点云数据。简单来说,就是通过相机标定、立体校正得到行(或者列)对齐的图像,然后提取出激光线,由于每一行(或每一列)在左右图像上仅有唯一的点相对应,所以行号(或列号)相同的激光点即可认为是对应的匹配点,然后根据视差,求得三维坐标。

当然了,这是对于单条激光线而言的,如果是双目多线激光,则每一行(或每一列)在左右图像上没有唯一的点相对应,这时可以把我们的激光平面再捡回来了,即通过激光平面来约束得到唯一的匹配点。具体措施就是,左相机提取出的激光点像素坐标通过激光平面得到3D坐标,通过左右相机的旋转平移矩阵,将其转换到右相机坐标系下,然后转换到右影像的像素坐标,判断右影像上的激光点的像素坐标是否有与之重合的,重合的则为对应的匹配点,然后根据视差得到三维坐标。

4 总结

最后值得一提的是,双目多线激光还存在着一点小问题,比如,有一部分多的误匹配点难以剔除。目前论文里说到的剔除误匹配点的方法,都有很大的局限性,且效果不会很明显。
理论比较简单,这里就不放源码了。

结构光三维重建(二)线结构光三维重建相关推荐

  1. python中三种分支结构的_python二分支结构

    Python 基础 分支与循环 2020/4/21 1 目录 程序基本结构 分支结构 循环结构 布尔表达式 练习 总结 2020/4/21 2 程序设计基本结构 任何算法(程序)都可以由顺序..... ...

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

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

  3. opencv线结构光三维重建

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

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

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

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

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

  6. 中线提取算法_综述|线结构光中心提取算法研究发展

    摘 要: 线结构光扫描是三维重建领域的关键技术.光条纹中心提取算法是决定线结构光三维重建精度以及光条纹轮廓定位准确性的重要因素.本文详细阐述了光条纹中心提取算法的理论基础及发展历程,将现有算法分为三类 ...

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

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

  8. 一分钟详解线结构光扫描系统

    前言 利用视觉进行测距,大家都知道哪些方案呢?除了常见的传统的双目立体视觉(可以参见<立体视觉动态测量技术>).TOF技术.面结构光技术(可以参见<3D Scanner相机>) ...

  9. 线结构光标定详细步骤与实现HALCON

    这部分是HALCON官方的一个例子,下面是对这个比较复杂的例子的一些理解,具体的每一句代码都对应相应的作用解释 具体的例子是这个: 此程序演示如何执行校准光片测量系统: 测量系统由区域扫描摄像机和光线 ...

  10. 深度相机(二)--结构光深度测距

    原文: http://blog.sina.com.cn/s/blog_80ce3a550100wg5j.html http://blog.csdn.net/u013360881/article/det ...

最新文章

  1. 【java】4.27上课及做作业时遇到的问题及第十六节课笔记整理
  2. html编写app页面代码,编写html页面代码需要了解的--综合编
  3. php 外部调用内部变量,PHP 如何在方法体外部获取内部变量?
  4. Git之签署工具GPG的安装和使用
  5. 04机器学习实战之朴素贝叶斯
  6. ai/ml_您本周应阅读的有趣的AI / ML文章(8月9日)
  7. PyTorch系列入门到精通——GPU的使用
  8. mysql5.6 安装配置 老系统_mysql 5.6 从陌生到熟练之-安装配置(windows系统)
  9. Spectra Logic磁带库成SGI方案中标准化产品
  10. springboot的restful接口成功失败返回值设计
  11. Android怎么改图标都不生效安卓开发如何修改APP图标和名字
  12. 携手网易打造世界杯主题房 YUNIK HOTEL玩转兴趣社交新场景
  13. Robotium-基础理论介绍
  14. python采集世界大学排名并作数据可视化, 来看看你的母校上榜没~
  15. 卫星影像去雾与色彩复原
  16. 软件测试自动化工具_用于软件测试的最佳免费自动化工具
  17. 电脑中的快捷键(常用)
  18. leetcode_middle_2_406. Queue Reconstruction by Height
  19. [C++STL教程]7.priority_queue优先队列入门学习!零基础都能听懂的教程
  20. 单代号网络图计算例题_最新(免锁版)网络图横道图绘制软件,内附安装教程,制图做更快...

热门文章

  1. 效率是绳,质量是命!——浅析如何运用UML来提高手游团队的绳命质量
  2. 怎么使用pyd 文件
  3. 工具优化篇之IDEA新UI+日常插件
  4. 小程序---验证input输入不能为空
  5. 【新书推荐】Interpretable Machine Learning with Python
  6. 计算机考试系统注册组件失败,银行从业在线支付,IE浏览器安装控件不成功怎么办...
  7. [论坛专贴]关于接口
  8. 为什么要进行网站流量分析?从6个方面告诉你答案
  9. python输出n的32次方_在Python中,如何将2的32次方-1的值存放到g中?
  10. Android Studio中关于消除“Permission is only granted to system apps”错误的方法