线结构光三维重建测量系统,是基于三角测量的原理进行三维重建。相机在采集图像过程中,对相机进行内外参标定后,我们可以将图像上的像素点坐标,转为世界坐标进行测量。但由于小孔成像的原理,对于目标距离光心的深度信息无法进行测量。为获得目标的深度信息,引入线激光系统,线激光投射下来,为一个光平面;光平面的约束使得目标物体的深度信息可以求解。

        该系列文章涉及到线激光三维重建的原理、光平面标定、激光轮廓提取、相机标定和三维重构。本篇以阐述线结构光三维重建的原理、光平面的标定方法、激光轮廓提取的方法为主。后续将进一步实现光平面多种不同方法的标定、相机标定和激光轮廓的提取。

线结构光三维重建测量原理

整个成像系统示意图如下图所示。我们可以看到主要分为两个子系统,即激光发生器构成的激光系统和相机构成的成像系统。首先我们假定所有点的关系基于相机坐标系,即坐标系原点为光心所在的位置Oc,成像系统基于相机标定模型,相机标定完成后得到相机内参,基于相机内参可以得到目标物体P点在成像面P'点的位置坐标(Xc,Yc,Zc)。具体推导求解过程参考博文北邮鲁鹏老师三维重建课程之相机标定https://blog.csdn.net/beyond951/article/details/122201757?spm=1001.2014.3001.5501当P'点的位置坐标(Xc,Yc,Zc)已知后,Oc坐标为(0,0,0),因此空间直线OcP'直线方程可以得到。

        空间直线方程得到后,联立激光发生器投射的光平面方程。直线与平面的交点P(Xw,Yw,Zw)即可通过求解得到。但这一步求得坐标为相机坐标系下的坐标。将该点的坐标乘以相机标定过程中得到的相机外参即可得到该点世界坐标。

        综上所述,线结构光三维重建成像系统,在于引入激光发生器投射的光平面约束,使得目标距离相机光心的深度信息可解。

线结构光实现三维重建的整体技术路线如下图所示 。其中技术要点在于光平面标定、激光轮廓提取和相机标定。其中相机标定在这里不再赘述。

        其整个过程的详细实现路线图如下图所示。

光平面标定方法

参考文章来源:Line structured light calibration method and centerline extraction- A review 2020

该小节论述了线结构光光平面标定的关键技术。对矢量叉乘、线性方程解、交叉比不变性、消失点与线等主要标定方法进行了分析。下面分开对上述提到光平面方法进行论述。

矢量叉乘

对于线结构光系统,标定相机坐标系中光平面的方程参数至关重要,光平面的法向量可以由两个不平行的激光条纹向量的叉乘得到。其示意图如下图所示。

其中当向量M1M2和向量M1'M2'可知时,两个向量的叉乘即为光平面的法向量;同时两个已知向量的点乘即为向量的交点。已知平面上一点和平面的法向量即平面方程可得。

线性方程组解法

        通过建立相机像素与世界参考点之间的线性关系来求解线性方程。其关系是

其中s为比例因子,ri(i = 1,2)为旋转矩阵第i列的列向量。在摄像机坐标系中,通过求解旋转矩阵和平移向量可以得到平面方程。

因此,至少需要4组已知的目标参考点和像素点来求解相机坐标系与世界坐标系之间的变换矩阵。在求解线性方程的方法中,重点是通过变换矩阵得到世界坐标系和摄像机坐标系中参考点的对应关系。然后,对变换矩阵进行转换,计算出光平面方程。

交比不变性

        交叉比不变性方法是立体视觉的基本理论,在线结构系统中得到了广泛的应用。成像系统如下图所示。

根据交比不变性的性质,关系可以表示为:

其中AB、AC、BQ、QC分别为世界坐标系中的欧氏距离,ab、qb、ac、qc分别为像素坐标系中对应坐标点的像素距离。这样就可以计算出激光线与目标的交点Q,从而确定光的平面方程。

消失点、线方法

       消失点和消失线也是立体视觉中的理论,其原理如下图所示。透视投影后,空间中的平行线在相机坐标中不再平行。理想情况下,空间中的平行线相交于摄像机坐标中的一点,这一点被定义为平行线的消失点。如下图所示,点v1和点v2分别为目标在垂直方向和水平方向平行线的归零点。两点的直线l构成位置下目标平面的消失线。需要注意的是,目标的放置要避免目标面和摄像机的像面平行的情况。否则,它们之间的映射关系将变成仿射变换。如果仿射变换是平行的,那么平行线的像也是平行的,不会相交于一点。

影消点与影消线计算相机内参和平面法向量过程参考如下:

单视图重构—影消点、影消线与相机内参、平面法向量的推导https://blog.csdn.net/beyond951/article/details/125791301?spm=1001.2014.3001.5501

激光轮廓提取

        参考文章来源:激光双目三维成像关键技术研究

        在线结构光系统中,大多数标定方法都需要得到激光条纹与目标的交点。因此,激光中心线的提取具有极其重要的意义。研究人员提出了多种提取激光条纹中心线的算法。中心线提取可分为灰度质心法、Steger算法。

灰度重心法

        灰度重心法可以看成以灰度平方为加权值的加权计算激光轮廓中心的方法,其精度可以达到亚像素精度,精度高于骨架提取方法。该方法沿着光条横截面的方向进行扫描,筛选出灰度值最大点以及灰度值大于极大值与阈值的差值的所有像素点,然后对于这些像素点,灰度值视为该像素点的权重,对该行筛选出的这些点坐标进行加权平均,得到的坐标值就被视作光条中心。激光光条灰度分布图像如下图所示:

        设事先设置的灰度阈值为 T,沿着光条横截面方向进行搜索,首先找到该行中灰度值最大的像素点位置 C,其灰度值为 Gmax,接着从该最大灰度值点处向光条两边搜索,找出高于自适应阈值线 Gmax− T 的所有像素点,不妨设满足高于阈值的两个边界点分别为 A,B,两边界点之间的 n 个像素点中的第 i 个像素点列坐标值为 yi,对应的灰度值为 gi,那么利用重心计算公式可以得到该行的光条中心位置的列坐标 Y:

逐行或者逐列进行上述运算,即可提取出完整的激光轮廓的中心。

Steger算法

德国慕尼黑大学的 Steger 教授首次提出了一种基于 Hessian 矩阵的亚像素级别精度的光条中心提取算法。Steger 教授首次在其论文中提出了一种名为 Hessian矩阵的概念,该矩阵是通过求取事先设置好的高斯卷积模板对图像两方向的二阶导数和相应图像区域像素点的卷积来得到。具体来说,在激光光条的图像中,Hessian 矩阵的表达式如下:

        该矩阵由图像某点沿不同方向的四个偏导组成,该矩阵可以确定z(x,y)的二阶方向导数最大绝对值的方向。接下来的思路就是:首先进行高斯滤波,然后计算Hessian矩阵得到光条的法线方向,最后在法线方向利用泰勒展开得到亚像素位置。详细原理说明过程此处不再赘述。

总结

本篇博文阐述了线激光三维重建成像系统的原理、系统标定和激光轮廓条纹中心提取的方法。其中重难点在于系统的标定(相机标定和光平面方程的标定)和激光轮廓高精度提取,二者精度决定了整个系统的测量精度。后续将针对上面提到的整个过程进行代码实现。

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

  1. opencv线结构光三维重建

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

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

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

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

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

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

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

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

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

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

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

  7. 结构光三维重建基本原理

    点击进入->3D视觉工坊学习交流群 结构光三维重建系统是由一个相机和一个投影仪组成,关于结构光三维重建系统的理论有很多,其中有一个简单的模型是把投影仪看做相机来使用,从而得到物体的三维信息.接下 ...

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

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

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

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

最新文章

  1. c++ static 静态变量初始化
  2. lia人是什么意思_狗狗喜欢舔人到底什么意思?毛孩的心思主人你要懂
  3. Scala 写第一个程序HelloWorld
  4. [转载]golang sync.Pool
  5. Python之数据分析(算数平均值、加权平均值、最大值与最小值)
  6. HALCON 21.11:学习笔记---OPC_UA(I/O)
  7. js基础 之 引用类型
  8. Elasticsearch 7.x Nested 嵌套类型查询 | ES 干货
  9. 《FPGA设计实战演练》学习笔记(二)FPGA核心板电路设计
  10. 一纸学习康奈尔笔记法
  11. 测试系统工程师TSE的四项基本技能
  12. 基于标记的分水岭分割算法
  13. QCC512X--QCC514X--QCC302X--QCC304X烧录工具
  14. 这样充满青春活力的微信公众号图文排版,你见过吗?
  15. LaTeX第一课:MiKTeX+Texmaker安装
  16. Cisco Packet trace的常用命令
  17. Delphi System 提供的编译期函数(Dec,Inc,Odd,Pred,Succ,Ord,Chr,Low,High,Sizeof)
  18. AddressSanitizer使用介绍
  19. Java基础知识小练习合集
  20. ant java macrodef_Ant之 ZipException And Taskdef And MacroDef——“宏”

热门文章

  1. java MVC英语文献_外文文献: MVC简介Introduction to MVC.pdf
  2. ExtJs4 Ext.tab.Panel 选项卡
  3. python分割字符串保留分隔符_python字符串分割,保留分隔符
  4. 计算机u口不识别打印机 u盘,不认U盘?U口不读U盘,U盘上灯也不亮,但是从U口接的打印机就认 爱问知识人...
  5. 腾讯云服务器从购买到使用-第一章-数据库
  6. 杜比音频和Microsoft Edge体验
  7. 成为华尔街金融巨鳄第四课:Matplotlib从入门到放弃
  8. 成为PHP大牛的绝招 —— 君子生非异也,善假于物也
  9. 我的世界基岩版开服教程
  10. 20211013学习总结