系列篇|结构光三维重建——相移法基本原理

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

在结构光三维重建中,最常见的方法就是相移法,相移是通过投影一系列相移光栅图像编码,从而得到物体表面一点在投影仪图片上的相对位置或者绝对位置。下面,笔者将详细介绍如何制作相移编码图片,以及如何对获取的相移图片进行解码,最后笔者将粗浅的谈谈相移相比其他方法(如格雷码)有什么优势。

常见的三步相移法公式如下所示:

其中  是相位图的灰度值,  是条纹光强的背景值,  为条纹光强的调制强度,  是相位主值。由于cos的取值范围是[-1,1],在制作编码图片的时候,我们可以把  和 都设置成127,这样就可以保证制作的相位图片的灰度值在0-255之间,以及一个高动态的范围。实际上由于投影仪投射出来的光的灰度值并不是线性变化的,为了消除这种非线性变化问题,有不少人提出了各种针对投影光的伽马矫正方法。如果精度要求不是特别严苛的话,投影仪投影的光在某个动态区间(通常是中间灰度值那一段,比如50-200的区间)会逼近于线性变化,我们也可以在制作图片的时候把动态区间调整至逼近线性变换区间的范围来消除这种非线性变化的干扰。

如下图所示,是用三步相移公式做的相移图片,为了更加清楚地描述,这里使用的是0-55的灰度值范围。

三步相移法示例图片

由之前我们知道,编码主要是为了标记投影仪的图片的实际位置,在相移中,我们用相位主值 编码投影仪图片的像素,对于某一个周期内的投影坐标,我们可以这样把相位主值换成其在周期内的实际坐标:

Pixel即该点在周期内的实际坐标,period即一个相位周期所占的像素列数,实际上,我们不可能仅用一个周期标记一整张相位图片,其实很正常,我们的图片列数常常是几百甚至上千,而灰度值的动态范围只有255, 所以我们通常会设计一个周期所占像素列数,如上图所示,一个相位周期占图片12列, 一张图片约有10个周期。想要知道某个相位解码点在投影图片的实际坐标,我们除了知道其相位主值,还需要知道其是第几个周期的相位。一个像素点的实际列坐标如下所示:

 是相位所在的周期数(通常对第一个相位周期用0来编码), 的数值常用格雷码编码或者其他编码方法辅助得到。又可以根据相位展开后的主值在空域上的分布来求解其是第几个周期,不过这样通常不准。

把相移编码光投影到物体表面后,我们就可以解码了,如上面的方程所示, 是相机图片的灰度值,那么上述三个方程就只剩三个未知数,  三个方程解三个未知数在满秩的情况下一定是可解的,而且对于这三个未知数来说,我们其实只需要关心 ,相位主值的大小。解码公式如下所示:

如果  解成  ,则需要把其换算到  区间。上述相移编码的解码结果如下图所示:

解码后的相位主值图

除了三步相移法,我们还可以设计四步甚至更多步相移法,具体编码和解码方式如下,对于N步相移法,我们需要N幅编码图片,对于第 ( )幅编码图片(通常我们用0标记第一幅图片), 其编码如下:

其对应的N步相移法的解码公式为:

如何选定相移步长呢? 一般来说,步长越多越精确和稳定,但是在实际的应用中,考虑到三维成像帧率等原因,用三步或四步像移方法的较多。如果不考虑帧率的话,在论文[1]中有提到,如果能使用饱和式的相移图片(saturated fringe patterns),即让相移步长 N等于一个相位周期编码列数的整数倍,如果编码列数是偶数m的话,相移步长N可以是 m/2 的整数倍,这样的话,解相移的时候对高反光表面相位主值也能解出比较好的结果。不过要对高反光表面的相移解码得到非常好的效果,相移步长N通常都要在10以上,对于追求速度的三维重建,可能没有那么吸引人。

最后,笔者想和大家聊聊相移法比起格雷码的优势,首先,相移可以看成连续变化的值,比如说我们解相位换算成像素点坐标的时候,通常可以达到小数级(亚像素级)的精度,如果我们用格雷码,在不使用插值的情况下,通常只能达到像素级的精度。为什么相移达到的亚像素级的精度是正确的呢?笔者个人认为和光本身就是一种正弦波有关,光打在物体表面上,会以正弦波的形式向周边散开,所以使用相移时得到的亚像素级的解码精度往往是比较准确的。此外,我们用的相移是时序,利用光的在时间中(不同投影图片下)的变化量来解码,相比格雷码用阈值二值化,受到物体纹理的影响会更小。比如相移光打在暗色物体上,可能解出来的 会比较小,但是不影响我们解出正确的相位主值 。

论文[1]:High-quality 3D shape measurement using saturated fringe patterns.

上述内容,如有侵犯版权,请联系作者,会自行删文。

推荐阅读:

吐血整理|3D视觉系统化学习路线

那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)

超全的3D视觉数据集汇总

大盘点|6D姿态估计算法汇总(上)

大盘点|6D姿态估计算法汇总(下)

机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划

汇总|3D点云目标检测算法

汇总|3D人脸重建算法

那些年,我们一起刷过的计算机视觉比赛

总结|深度学习实现缺陷检测

深度学习在3-D环境重建中的应用

汇总|医学图像分析领域论文

大盘点|OCR算法汇总

重磅!3DCVer-知识星球和学术交流群已成立

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导,670+的星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加群或投稿

3D视觉工坊 CSDN认证博客专家 算法 3D视觉
个人公众号:3D视觉工坊。公众号特邀嘉宾及合伙人,先后就职于国内知名研究机构、自动驾驶公司、海康研究院,主要研究方向为深度学习、目标检测、语义分割、图像处理、自动驾驶感知算法等,CSDN博客专家。博主先后任职于国内知名研究院、知名大厂,致力于3D视觉算法、VLAM算法开发,涉及相机标定、手眼标定、结构光、点云后处理、三维重建等相关领域的研究,同时也是CSDN博客专家。3D视觉工坊坚持原创,近一年来输出了非常多的高质量文章,获得了粉丝的一致好评,我们将始终坚持走原创路线,打造一个铁杆粉丝的聚集区。
已标记关键词 清除标记
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值