结构光三维重建(四步相移&多频外差法)matlab实现(一)

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

前言:这里主要梳理自己在理解四步相移法和三频外差法,以及用MATLAB实现条纹图生成,四步相移求相位主值,三频外差相位展开(解包裹)的过程。
废话不多说,一些基本思想概念可以看下面参考文章,里面有详细介绍。这里主要对遇到的问题展开阐述。

多频外差法

由于用周期性变化的黑白条纹编码整幅图像,导致通过相移法获得的相位主值包裹在[-pi,pi]之间,相位不具备唯一性,此时就涉及相位展开,即解包裹的问题。

  1. 通过四步相移法:
    matlab三维重建程序,高动态三维形测,matlab,开发语言,算法

  2. 选择三种光栅频率:
    这里参考李中伟博士的博士论文中提到的三种光栅频率。
    matlab三维重建程序,高动态三维形测,matlab,开发语言,算法

  3. 进行相位差值运算:
    此节参考文章:https://blog.csdn.net/weixin_43263382/article/details/123090465
    matlab三维重建程序,高动态三维形测,matlab,开发语言,算法matlab三维重建程序,高动态三维形测,matlab,开发语言,算法
    故:经过公式验证知,两高频率光栅转化为低频率光栅时,相位值等于两频率相位作差。

  4. 相位展开:
    此节参考文章:https://blog.csdn.net/weixin_43263382/article/details/123090465
    因为T123已经可以覆盖整幅图像所以其中的相位可以认为为绝对相位。下面就是对某一包裹相位进行展开一般最后选择频率最高的进行相位展开,这是因为高频的信噪比比较高,误差较小。
    详细计算公式推导过程如下:
    matlab三维重建程序,高动态三维形测,matlab,开发语言,算法
    其中由图中,根据平行原理,可以知道,包裹区域相位值是以2nπ的量值增长。根据公式即可展开绝对相位。

  5. 问题展开:
    理论理解内容基本就到此结束,在matlab实现过程中,遇到了三个问题:
    注:问题发现主要是在代码实现过程中遇到的,后面会给出代码,结合代码的话,容易理解。(代码链接在最下面)

matlab三维重建程序,高动态三维形测,matlab,开发语言,算法
6. 问题解答:
问题一:λ 12,λ 23,λ 123中的频率代表含义,以及与其图像,像素点值有什么关系?
通过在解决这一问题途中,发现自己原来的条纹图生成周期有问题。比如一幅宽为1110的图像,其正弦条纹频率,宽度为70。
我原文生成的是:每个像素点值以1/70递进;即70为正弦条纹的周期。
但实际上是:正弦条纹频率70,即代表整幅图像出现的正弦条纹条数为70;正弦条纹宽度即有1110/70;
帮助理解的参考文章:https://blog.csdn.net/qq_33810188/article/details/89921099
如此一来,对于整幅图:
λ 12的频率为1/6即代表整幅图有6条正弦条纹。
λ 23的频率为1/5即代表整幅图有5条正弦条纹。
λ 123的频率为1即代表整幅图有1条正弦条纹。

问题二:作相位差时,θ12,θ23,θ123为什么也要缩放到[0,2pi]?
%将截断相位映射到0~2π
phaseMap(phaseMap<0)=phaseMap(phaseMap<0)+2*pi;

类似这行代码,在代码中,有两处地方出现。
第一次是在经过四步相移法后,由于atan2()函数,原本是0~2pi的相位值,被分成了两部分,因而需要还原。如图,不仅是因为要使用三频外差,才缩放到[0,2pi];而是因为,本来的相位值就是[0,2pi]递增的。
matlab三维重建程序,高动态三维形测,matlab,开发语言,算法
第二次则是在相位作差的时候,可以看到,叠加频率的相位值范围也应该是[0,2pi]递增的。
matlab三维重建程序,高动态三维形测,matlab,开发语言,算法
单纯经过相减后,可以发现有正值也有负值;而在实际运算中,为什么通过代码:
phaseMap(phaseMap<0)=phaseMap(phaseMap<0)+2*pi;
,即将负值加2pi就能还原到正确值?是我的疑惑点; 之后,通过debug,推了一遍数据值演算结果,找到了答案。
matlab三维重建程序,高动态三维形测,matlab,开发语言,算法

问题三:既然θ123是频率为1的绝对相位,为什么不直接作为含有物体信息的相位值使用,还要对θ1或θ2或θ3进行绝对相位展开?
通过查看θ123的数值分布发现,相位值都是在[0,2pi]之内;虽然θ123为绝对相位,但与其要展开的,折叠多个2pi的绝对相位数值分布不同。同时,考虑到对于有物体的条纹图,如果进行多个不同频率相位相减,越是多个频率交错相减,作差次数越多,其结果越混乱,尽管最后能整合为频率为1的绝对相位,但对于物体相位,不具有代表性或实际意义。考虑到这一点,也就觉得θ123是不合适的了。

参考文章:
https://zhuanlan.zhihu.com/p/432343200
https://blog.csdn.net/weixin_43263382/article/details/123090465?spm=1001.2014.3001.5502
https://blog.csdn.net/weixin_43263382/article/details/123220055
https://blog.csdn.net/qq_33810188/article/details/89921099
https://blog.csdn.net/weixin_40204808/article/details/115376564
https://blog.csdn.net/qq_27353621/article/details/124235712
https://blog.csdn.net/qq_33810188/article/details/89921099

下章将附上完整MATLAB代码。
结构光三维重建(四步相移&多频外差法)matlab实现(二)文章来源地址https://www.toymoban.com/news/detail-604949.html

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

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

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

相关文章

  • 三维重建之条纹投影结构光(一)

            该系列为条纹投影结构光学习笔记,一共分为四篇。 第一篇记录文献阅读的笔记,对重要知识点进行摘录介绍;第二篇为相位求解和相位展开;第三篇为相高模型的标定;第四篇为重构篇。         本篇以理论知识为主,主要从以下三个方面进行介绍,首先介

    2024年02月02日
    浏览(47)
  • MATLAB算法实战应用案例精讲-【目标检测】三维点云重建

    目录 前言 算法原理 什么是点云? 数据预处理  三维计算视觉研究内容

    2024年02月06日
    浏览(53)
  • 线结构光三维重建(二)相机标定、光平面标定

    线结构光三维重建(一) https://blog.csdn.net/beyond951/article/details/125771158                   上文主要对线激光的三角测量原理、光平面的标定方法和激光条纹提取的方法进行了一个简单的介绍,本文则主要针对线激光三维重建系统的系统参数标定进行阐述,同时对采集到

    2024年02月09日
    浏览(42)
  • OpenCV C++双目三维重建:双目摄像头实现双目测距

    目录 OpenCV C++双目三维重建:双目摄像头实现双目测距 1.目录结构 2.依赖库  (1) Ubuntu 18.04配置开发环境  (2) Windows配置开发环境 3.双目相机标定  (1)双目相机标定-Python版  (2)双目相机标定-Matlab版 4.相机参数配置 5. 双目测距 6. 运行Demo 7.双目测距的误差说明 8. 双目三维重建项

    2024年02月02日
    浏览(66)
  • 制作自己的ORBSLAM2数据集,并实现三维重建(代码自己写的)

    2 ORBSLAM2 测试自己拍摄的数据集         使用手机、摄像机等设备拍摄视频,对应我们只能使用单目 (Monocular)。 2.1对相机标定         首先我们要对相机进行标定,使用 MATLAB 里面的标定工具包。标定好之 后创建一个单目模式下的 yaml,复制 TUM1.yaml 修改标定参数即可

    2023年04月20日
    浏览(45)
  • 基于3D Gaussian Splatting与NeRF实现三维重建(使用IPhone创建数据集)

    本项目参考YouTube中博主( Spectacular AI ) 详细可了解:SpectacularAI官网 本文项目构建在Windows与Ubuntu中,二者在项目构建中并未有实质性的差距,可相互参考环境与参数的配置,本文即在Windows11(已配置好CUDA)中进行。 Windows下配置CUDA的方法可参考 :《TensorFlow-GPU-2.4.1与CUDA安

    2024年01月17日
    浏览(50)
  • ubuntu20.04使用微软Azure Kinect DK 实现三维重建demo记录

    本文仅为在ubuntu20.04实现Azure Kinect DK 三维重建demo,此文记录实现过程仅供学习,同时为大家避坑,文中参考大量文章已列至末尾。 1 ros安装 2 安装微软 DK的sdk 3 ros之AzureKinect驱动 4 Azure Kinect DK 点云和RGBD图的获取 5 conda安装 6 Kinect DK 实现三维重建 1.1 安装源,添加sources.list 1

    2024年02月07日
    浏览(66)
  • DTMF双音多频系统信号输入和检测识别算法matlab仿真

    目录 一、理论基础 二、核心程序 三、仿真结论        双音多频(Dual Tone Multi Frequency, DTMF)信号是音频电话中的拨号信号,由美国ATT贝尔公司实验室研制,并用于电话网络中。这种信号制式具有很高的拨号速度,且容易自动检测识别,很快就代替了原有的用脉冲计数方式的

    2024年02月12日
    浏览(36)
  • 开源,点云处理及三维重建软件(Point Cloud Viewer, PCV)的设计与实现

    GitHub地址:point-cloud-viewer GitCode地址:point-cloud-viewer 笔者于2021年底开始,着手设计并实现这款点云处理及三维重建软件Point Cloud Viewer, PCV,历时三个月,完成该软件的大部分功能实现。由于笔者转行做嵌入式底层相关工作,不再研究点云处理相关技术,PCV的后续功能实现就一

    2024年02月01日
    浏览(40)
  • 4 OpenCV实现多目三维重建(多张图片增量式生成稀疏点云)【附源码】

    本文是基于 OpenCV4.80 进行的,关于环境的配置可能之后会单独说,先提一嘴 vcpkg 真好用 从多张图片逐步生成稀疏点云,这个过程通常包括以下步骤: 初始重建: 初始两张图片的选择 十分重要 ,这是整个流程的基础,后续的增图都是在这两张图片的基础上进行的 对于输入图

    2024年02月06日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包