结构光三维重建(一)条纹结构光三维重建

这篇具有很好参考价值的文章主要介绍了结构光三维重建(一)条纹结构光三维重建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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


1 单目尺度不确定性

下图是一个典型的双目条纹结构光设备,由两部相机和投影仪组成,由投影仪投射结构化的光,相机捕获图像。
结构光三维重建(一)条纹结构光三维重建
其实如果少掉投影仪,这台设备就可以看作是一个双目立体匹配相机。我们知道,双目立体匹配的工作原理在于通过左右相机拍摄到的图像视差来重建三维场景,其原理相似于人的双眼。而这其中最重要的工作,计算视差,就是要寻找左右相机图像中的同名点,效果如下所示:
结构光三维重建(一)条纹结构光三维重建
而计算机寻找同名点的方式,并不如人眼那么智能,我们通过描述子(sift,surf,orb等)找出图片中比较显著的特征点,然后对它们一一进行配对(匹配,实际上因为有极线约束的关系,这个匹配不会是n2那么复杂),最终的效果如下所示:
结构光三维重建(一)条纹结构光三维重建
有了这些同名点,我们就可以依据视差计算公式(三角计算关系)来进行三维重建了。但是这个方法,存在一个致命的问题,那就是如果物体的表面没有丰富的纹理信息。这种情况,对于大部分刚加工好的工件是一个非常正常的现象,比如下图:
结构光三维重建(一)条纹结构光三维重建
那如何解决呢?我们可以主动向待测量区域投射结构化的光,主动为物体表面创建“纹理”,那么问题就迎刃而解了。但事实上,这种方式依然受到物体表面材料的影响,比如说某些地方出现高反光现象等,这里先略过。

2 相移法 + 多频外差法

在结构光技术中,我们经常投影N步相移条纹来主动标记区域,投影出的条纹如下所示:
结构光三维重建(一)条纹结构光三维重建
2.1 条纹生成
先来看下“计算机生成理想的,待投影仪计算投影的条纹”与”实际发生形变后,相机拍摄的条纹“的特点。特点1:单方向编码:极线约束减少搜索量;特点2:灰度反复变化:一个视场内有多个周期的条纹。
结构光三维重建(一)条纹结构光三维重建
假设相移的步数为N,则生成条纹的相移公式:
结构光三维重建(一)条纹结构光三维重建
A:背景光强
B:调制强度
ϕ \phi ϕ:相位值
∇ ϕ \nabla\phi ϕ:相移值
f = 1 / T :相移频率,其中T为单个周期内的像素数量,也称为条纹周期,也有的成为节距
x:编码方向上的像素坐标
(注意:通常相移法一次只能单方向编码,如果要对y方向,还需要重新生成,事实上利用极线约束,结构光算法编码单个方向就能完成重建。)

四步相移:
结构光三维重建(一)条纹结构光三维重建

2.2 包裹相位
解相位公式(上面多个方程联立的解析解):
结构光三维重建(一)条纹结构光三维重建
(注意:这个公式是针对单个像素成立的,因为他用的是外差的方法(类似于卫星定位,多个信号之间的差值),因而有两点:)
1.针对投影到物体后发生变形的条纹依然有效:也就是我们能够唯一标记点,在没有误差的情况下,左相机解出来的相位 ϕ \phi ϕl和右相机解出来的相位 ϕ \phi ϕr是相同的,利用双目测距模型,我们就可以计算该点的3D坐标;
2.结构光算法很容易部署在FPGA或者GPU端:达到很快的重建速度。
(注2:解出来的相位除以2Πf,就可以得到它的横坐标x,但是由于某些原因(多频外差),在计算绝对相位的时候需要进行归一化,因为我们并不会用这种方式去计算它的横坐标。)
调制度B(用于滤除噪声区域)以及误差项的计算如下:
结构光三维重建(一)条纹结构光三维重建
σ \sigma σn:投影亮度的标准差,是由投影仪的工艺决定的
N:相移步数;
α \alpha α:相机相应系数;
t:曝光时间;
r:物体表面发射率;
B:调制光强。

由上式可以得出两个结论:1.步长N越长,相位误差越小,事实上,增大步长N由很多好处,比如增大测量高反光的性能、降低投影仪非线性的影响,但是越长的步长意味着增大测量时间,这对某些需要动态测量的场景来说是很难接受的!2.增大调制光强,可以减小误差,但是投影仪存在非线性区域,调制度B不能无线增大。

包裹相位计算结果如下:
结构光三维重建(一)条纹结构光三维重建

2.3 多频外差法:绝对相位
假设投影仪的分辨率为1280 x 720,编码x方向,我们即使选择最大条纹周期:T=255,即一个灰度编码一个条纹,单个周期的条纹依然不够编码全部视场范围,也就是无法消除相位歧义性:结构光三维重建(一)条纹结构光三维重建
在这种情况下,假设我们知道解码出来的条纹属于第 k 个周期,也就是条纹阶数,那么它实际的相位值,也就是绝对相位即为:结构光三维重建(一)条纹结构光三维重建
为了解算出绝对相位,在这里我们采用多频外差法,其原理是通过多个不同周期正弦光栅的相位做差,将小周期的相位主值转化为大周期的相位差,从而使得相位差信号覆盖整个视场,然后再根据相位差来得到整幅图像的绝对相位分布。
在这里以双频外差为例,原理如下图所示,其中T1、T2为条纹的周期, ϕ \phi ϕ1 ϕ \phi ϕ2为包裹相位值,对于两者的相位差 ϕ \phi ϕ12
结构光三维重建(一)条纹结构光三维重建
而关于周期,假设 ϕ \phi ϕ1 < ϕ \phi ϕ2,显然有:
结构光三维重建(一)条纹结构光三维重建
从这个周期看出:用短周期的相移条纹进行叠加,从而和获取周期更长的相移条纹,为了能够实现全场无歧义的相位展开,我们必须选择合适的T1、T2,使得T12超过整个视场,从而获得唯一相位。
(注意:双频外插还是不太够用,我们需要引入频率T3,来得到超过视场宽度的合成周期)。

3. 相移法+格雷码法

3.1 二值码与格雷码
以最简单的三位二进制码为例,亮区域:编码为1,暗区域:编码为0、假设现在我们向被测物体顺序投射三幅二进制编码图案,如下所示:(注,由于极线约束的关系,我们只需要编码一个方向,即可完成3D重建)
结构光三维重建(一)条纹结构光三维重建
考虑单个像素点的编码在相机拍照清晰的情况下,这种编码方式当然不会出现任何问题。问题就出在:相机拍摄到的黑白相间的边界点往往是一个过渡灰度,很容易导致解码错误。在编码的最后一幅图像里,条纹都是非常细的,以上面3位编码为例,如果是

结构光三维重建(一)条纹结构光三维重建
格雷码特点
结构光三维重建(一)条纹结构光三维重建
3.2 格雷码+相移法所需图像的样例

算上相移条纹(N = 3), 取n = 4,另外传统相移+格雷码技术需要投影黑白两幅图像,用于二值化,生成的图像如下所示:
结构光三维重建(一)条纹结构光三维重建
实际拍摄图片(N = 4):
结构光三维重建(一)条纹结构光三维重建
3.3 格雷码二值化
对于格雷码解码,主要的困难在于:格雷码二值化,即如何衡量一个点是亮条纹还是暗条纹?由于环境光、以及物体表面材料原因,一副图像中像素的灰度值通常是不均匀的,但是下面这条结论是确定无疑的:二值化原则:对于同一位置,其被亮条纹照射到的亮度总是高于其被暗条纹照射的亮度!那么对于一个像素点在一张图片中的二值化,我们可以结合多幅图片来判断,具体的做法是:
结构光三维重建(一)条纹结构光三维重建
但是,这类方法对于编码全为0、或者全为1的点是无效的!这个点是有的,比如说下面这幅编
码图,区域 0 全暗,区域10全亮:
结构光三维重建(一)条纹结构光三维重建
因为这些点不会经历明暗变化,所以不好判断是亮条纹还是暗条纹。我们有很多办法去避免这个现象,比如说:避开这个编码;跟其他像素点亮度做比较。其中,有一种鲁棒性比较好的解决办法是,额外让所有编码编码位置都能经历全0或者全1的过程,这也是传统格雷码结合相移技术需要额外投影两幅全黑和全白图案的原因。

3.4 格雷码解码
一旦确定了二值化策略,我们就可以对每个像素求解其格雷码值,并将其映射到自然序列,据下面的公式:
结构光三维重建(一)条纹结构光三维重建
解码代码如下:
结构光三维重建(一)条纹结构光三维重建
3.4 相移法+格雷码具体原理
结构光三维重建(一)条纹结构光三维重建
问题:
结构光三维重建(一)条纹结构光三维重建

最终结果:
结构光三维重建(一)条纹结构光三维重建

总结

最后值得一提的是有很多改进算法从效率上、精度上高于上述的算法,但是需要大家去阅读最新的论文,这里只是对结构光进行一个简单的介绍,理论比较简单,这里就不放源码了。文章来源地址https://www.toymoban.com/news/detail-463609.html

到了这里,关于结构光三维重建(一)条纹结构光三维重建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于条纹投影的物体三维形貌测量理论与仿真实验-含Matlab代码

    基于光栅投影的光学三维面形测量具有非接触、精度高、速度快、低成本、全场测量和易于实现等特点,在逆向工程、工业检测、质量控制、虚拟现实、医学诊断、文物修复和物体识别等领域应用广泛。相移轮廓术(PSM)和傅里叶变换轮廓术(FTP)是两种传统方法。相移法计算简单

    2024年02月03日
    浏览(157)
  • 医疗PACS源码,支持三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜

    C/S 架构的PACS系统源码,PACS主要进行病人信息和影像的获取、处理、存储、调阅、检索、管理,并通过网络向全院提供病人检查影像及诊断报告;各影像科室之间共享不同设备的病人检查影像及诊断报告;在诊断工作站上,调阅HIS中病人的其它信息 (如: 病人信息、病历信息、

    2024年02月12日
    浏览(44)
  • 【三维重建】三维重构基础知识、三维数据、重建流程

    1.使用几何建模软件,通过人机交互生成人为控制下的三维:3DMAX、Maya、AutoCAD、UG 2.获取真实的物体形状:三维重构 三维图像重构: 摄像机获取图像,对图像分析处理,结合CV知识推导出现实中物体的三维信息 从二维图像到三维空间的重构(模仿生物两只眼睛观察物体产生的

    2024年02月02日
    浏览(56)
  • 基于MVS的三维重建算法学习笔记(一)— MVS三维重建概述与OpenMVS开源框架配置

    本人书写本系列博客目的是为了记录我学习三维重建领域相关知识的过程和心得,不涉及任何商业意图,欢迎互相交流,批评指正。 MVS(多视点立体视觉,Multi-view stereo)能够单独从图像中构造出高度细节化的3D模型,采集一个庞大的图像数据集,用其来构建出一个用来解析

    2024年01月15日
    浏览(49)
  • 【卫星三维重建】卫星影像三维重建数据集-MVS3DM数据集介绍

    MVS3DM数据集是用于IARPA多视图卫星影像3D重建挑战赛的标准数据集(IARPA Multi-View Stereo 3D Mapping Challenge),该数据集由Digital Globe WorldView-3卫星影像以及机载激光雷达获取的影像覆盖范围内的点云数据作为算法真值数据组成。 卫星影像数据类型和数量 :包含50张WorldView3全色影像(

    2024年03月12日
    浏览(128)
  • 【三维重建】之 matlab读取 .wrl 三维图像文件

    wrl(虚拟现实语言): wrl文件是一种虚拟现实文本格式文件。也是VRML的场景模型文件的扩展名。 wrl文件是纯ASCII文件,所以可以用文本编辑器打开和编辑。虽然这样,但是对于大型的3D文件。用纯手工的方法是不可取的。应该选择用三维软件(maya,max等)进行场景建模和输出。

    2024年02月17日
    浏览(50)
  • 三维重建-colmap基本原理

    源码: colmap中的pose是 world to camera,满足: Pc = R * Pw + T colmap坐标系: 补充代码实现: colmap主要相机模型: 径向畸变:一般是有镜头的形变误差导致的。一般分为 枕形畸变和桶形畸变。 切向畸变:又称为偏心畸变。 一般无人机视频选择径向畸变模型(simple Radial)就可以了

    2024年02月13日
    浏览(63)
  • 三维重建:技术及实际应用

    摘要:本文将探讨计算机视觉领域中的三维重建技术,以及它们在实际项目中的应用。我们将重点介绍一个基于双目视觉的三维重建项目,并详细解释项目步骤及相关代码。 正文: 三维重建是计算机视觉领域的一个重要研究方向。通过从图像或视频中重建三维场景或对象的

    2024年02月10日
    浏览(42)
  • 线激光三维重建

    张正友标定法 通过OpenCV的solvePnp()函数计算出相机到基准坐标系的外参数 R b 、t b P c = R b ( P b - t b ) 通过两个不同位姿的标定板及在他们上的激光线条,使用最小二乘法计算出光平面的公式。 Ax+By+z+C=0 上面两张图片是两个不同位姿的标定板,下面两张图片是关灯之后分别照

    2024年02月06日
    浏览(60)
  • 三维重建SfM算法

    三维重建的 SfM (Structure from Motion) 算法是通过多张二维图片来重建三维场景的算法。 特征点提取 在这个步骤中,需要对每张图片提取出一些特征点,并计算它们的描述子。在特征点提取的过程中,可以使用 SIFT,SURF 等算法。一般来说,一个好的特征点需要具备旋转不变性、

    2024年02月02日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包