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

news2024/10/6 8:30:20

▒▒本文目录▒▒

  • ✳️ 一、引言
  • ✳️ 二、条纹投影原理
    • ✳️ 2.1 ==相移轮廓术==
    • ✳️ 2.2 ==傅里叶变换轮廓术==
  • ✳️ 三、仿真分析
    • ✳️ 3.1 傅里叶变换轮廓术仿真实验
      • ✳️ 3.1.1 ==Matlab代码获取==
    • ✳️ 3.2 相移轮廓术仿真实验
      • ✳️ 3.2.1 ==Matlab代码获取==
  • ✳️ 参考文献

✳️ 一、引言

基于光栅投影的光学三维面形测量具有非接触、精度高、速度快、低成本、全场测量和易于实现等特点,在逆向工程、工业检测、质量控制、虚拟现实、医学诊断、文物修复和物体识别等领域应用广泛。相移轮廓术(PSM)和傅里叶变换轮廓术(FTP)是两种传统方法。相移法计算简单,测量精度高,但对噪声比较敏感,噪声会引起解相位结果存在大量虚假2π跳变,增加了相位展开的难度,且至少需要三幅以上的条纹图像,适用于静态测量;傅里叶变换法是M.Takeda 等人在1983年提出来的,它只需要一幅条纹图案,即可恢复物体三维形貌,可用于动态物体的三维形貌测量;但由于傅里叶变换不具有局部分析的能力,频谱混叠等问题,影响了其测量精度。小波变换具有多分辨率分析特点,抑噪能力强,可分为一维小波变换轮廓术(1D WTP)和二维小波变换轮廓术(2D WTP)。小波脊提取是小波变换轮廓术的关键步骤,最大模法是常见的小波脊提取方法。

✳️ 二、条纹投影原理

✳️ 2.1 相移轮廓术

相移法的投影条纹一般为余弦条纹(或正弦),得到条纹的灰度值用下式(1)表示:
g ( x , y ) = a ( x , y ) + b ( x , y ) cos ⁡ [ 2 π f 0 x + ϕ ( x , y ) ] (1) \text{g}\left( x,y \right)=a\left( x,y \right)+b\left( x,y \right)\cos \left[ 2\pi {{f}_{0}}x+\phi \left( x,y \right) \right] \tag{1} g(x,y)=a(x,y)+b(x,y)cos[2πf0x+ϕ(x,y)](1)

式中, a ( x , y ) a\left( x,y \right) a(x,y)为背景光强值, b ( x , y ) b\left( x,y \right) b(x,y)为调制强度, f 0 {{f}_{0}} f0为载波频率, ϕ ( x , y ) \phi \left( x,y \right) ϕ(x,y)为被测物体高度调制相位。

沿着垂直于光栅条纹方向在一个周期内移动n次,n∈(3,5)。当n=3时称为三步相移法,当n=4时称为四步相移法,当n=5时称为五步相移法。以四步相移法为例,四幅带有π/2相移的灰度值函数分别用下式表示:

g 1 ( x , y ) = a ( x , y ) + b ( x , y ) cos ⁡ [ 2 π f 0 x + ϕ ( x , y ) ] g 2 ( x , y ) = a ( x , y ) + b ( x , y ) cos ⁡ [ 2 π f 0 x + ϕ ( x , y ) + π / 2    ] g 3 ( x , y ) = a ( x , y ) + b ( x , y ) cos ⁡ [ 2 π f 0 x + ϕ ( x , y ) + π ] g 4 ( x , y ) = a ( x , y ) + b ( x , y ) cos ⁡ [ 2 π f 0 x + ϕ ( x , y ) + 3 π / 2    ] (2) \begin{align} & {{g}_{1}}\left( x,y \right)=a\left( x,y \right)+b\left( x,y \right)\cos \left[ 2\pi {{f}_{0}}x+\phi \left( x,y \right) \right] \\ & {{g}_{2}}\left( x,y \right)=a\left( x,y \right)+b\left( x,y \right)\cos \left[ 2\pi {{f}_{0}}x+\phi \left( x,y \right)+{\pi }/{2}\; \right] \\ & {{g}_{3}}\left( x,y \right)=a\left( x,y \right)+b\left( x,y \right)\cos \left[ 2\pi {{f}_{0}}x+\phi \left( x,y \right)+\pi \right] \\ & {{g}_{4}}\left( x,y \right)=a\left( x,y \right)+b\left( x,y \right)\cos \left[ 2\pi {{f}_{0}}x+\phi \left( x,y \right)+3{\pi }/{2}\; \right] \\ \end{align} \tag{2} g1(x,y)=a(x,y)+b(x,y)cos[2πf0x+ϕ(x,y)]g2(x,y)=a(x,y)+b(x,y)cos[2πf0x+ϕ(x,y)+π/2]g3(x,y)=a(x,y)+b(x,y)cos[2πf0x+ϕ(x,y)+π]g4(x,y)=a(x,y)+b(x,y)cos[2πf0x+ϕ(x,y)+3π/2](2)

得到

tan ⁡ [ 2 π f 0 x + ϕ ( x , y ) ] = g 4 ( x , y ) − g 2 ( x , y ) g 1 ( x , y ) − g 3 ( x , y ) (3) \tan \left[ 2\pi {{f}_{0}}x+\phi \left( x,y \right) \right]=\frac{{{g}_{4}}\left( x,y \right)-{{g}_{2}}\left( x,y \right)}{{{g}_{1}}\left( x,y \right)-{{g}_{3}}\left( x,y \right)} \tag{3} tan[2πf0x+ϕ(x,y)]=g1(x,y)g3(x,y)g4(x,y)g2(x,y)(3)

求取反正切函数,得到:

在这里插入图片描述

式(4)反正切运算得到的相位值 包裹在(-π,π]之间,称为相位主值(或包裹相位),需要通过相位解包裹算法展开得到实际相位。

✳️ 2.2 傅里叶变换轮廓术

傅里叶变换解相位的基本原理是在频域中把代表背景光的零频分量和代表噪声的高频分量通过合适的滤波器滤除掉,剩下的是包含有用相位信息的基频分量,再对基频分量进行逆傅里叶变换,通过正切运算即可解出被测物体高度调制相位主值。

根据欧拉公式,式(1)可以(5)表示为:

g ( x , y ) = a ( x , y ) + c ( x , y ) + c ∗ ( x , y ) (5) \text{g}\left( x,y \right)=a\left( x,y \right)+c\left( x,y \right)+{{c}^{*}}\left( x,y \right) \tag{5} g(x,y)=a(x,y)+c(x,y)+c(x,y)(5)

式中:

c ( x , y ) = 1 2 b ( x , y ) exp ⁡ ( i ( 2 π f 0 x + ϕ ( x , y ) ) ) c ∗ ( x , y ) = 1 2 b ( x , y ) exp ⁡ ( − i ( 2 π f 0 x + ϕ ( x , y ) ) ) (6) \begin{align} & c\left( x,y \right)=\frac{1}{2}b\left( x,y \right)\exp \left( i\left( 2\pi {{f}_{0}}x+\phi \left( x,y \right) \right) \right) \\ & {{c}^{*}}\left( x,y \right)=\frac{1}{2}b\left( x,y \right)\exp \left( -i\left( 2\pi {{f}_{0}}x+\phi \left( x,y \right) \right) \right) \\ \end{align} \tag{6} c(x,y)=21b(x,y)exp(i(2πf0x+ϕ(x,y)))c(x,y)=21b(x,y)exp(i(2πf0x+ϕ(x,y)))(6)

沿 x 方向对式(5)采用一维傅里叶变换,得到:

G ( f ) = A ( f ) + C ( f − f 0 ) + C ∗ ( f + f 0 ) (7) \text{G}\left( f \right)=\text{A}\left( f \right)+\text{C}\left( f-{{f}_{0}} \right)+{{C}^{*}}\left( f+{{f}_{0}} \right) \tag{7} G(f)=A(f)+C(ff0)+C(f+f0)(7)

上式(7)由-1级 C ∗ ( f + f 0 ) {{C}^{*}}\left( f+{{f}_{0}} \right) C(f+f0)、0级 A ( f ) \text{A}\left( f \right) A(f)、1级 C ( f − f 0 ) \text{C}\left( f-{{f}_{0}} \right) C(ff0)三种频谱信号组成,如图0所示

在这里插入图片描述

图0 一维傅里叶变换的基频分量提取[1]

其中 A ( f ) \text{A}\left( f \right) A(f)其代表零频背景信号,而 C ( f − f 0 ) \text{C}\left( f-{{f}_{0}} \right) C(ff0) C ∗ ( f + f 0 ) {{C}^{*}}\left( f+{{f}_{0}} \right) C(f+f0)包含了所需的相位信号。这里选取 C ( f − f 0 ) \text{C}\left( f-{{f}_{0}} \right) C(ff0),逆傅里叶变换得到:

c ( x , y ) = 1 2 b ( x , y ) [ cos ⁡ ( 2 π f 0 x + ϕ ( x , y ) ) + i sin ⁡ ( 2 π f 0 x + ϕ ( x , y ) ) ] (8) c\left( x,y \right)=\frac{1}{2}b\left( x,y \right)\left[ \cos \left( 2\pi {{f}_{0}}x+\phi \left( x,y \right) \right)+i\sin \left( 2\pi {{f}_{0}}x+\phi \left( x,y \right) \right) \right] \tag{8} c(x,y)=21b(x,y)[cos(2πf0x+ϕ(x,y))+isin(2πf0x+ϕ(x,y))](8)

其实部和虚部分别为:

Re ⁡ { c ( x , y ) } = 1 2 b ( x , y ) cos ⁡ ( 2 π f 0 x + ϕ ( x , y ) ) Im ⁡ { c ( x , y ) } = 1 2 b ( x , y ) sin ⁡ ( 2 π f 0 x + ϕ ( x , y ) ) (9) \begin{align} & \operatorname{Re}\left\{ c\left( x,y \right) \right\}=\frac{1}{2}b\left( x,y \right)\cos \left( 2\pi {{f}_{0}}x+\phi \left( x,y \right) \right) \\ & \operatorname{Im}\left\{ c\left( x,y \right) \right\}=\frac{1}{2}b\left( x,y \right)\sin \left( 2\pi {{f}_{0}}x+\phi \left( x,y \right) \right) \\ \end{align} \tag{9} Re{c(x,y)}=21b(x,y)cos(2πf0x+ϕ(x,y))Im{c(x,y)}=21b(x,y)sin(2πf0x+ϕ(x,y))(9)

被测物体高度调制相位主值可以写成:

ψ ( x , y ) = Im ⁡ { c ( x , y ) } Re ⁡ { c ( x , y ) } = arctan ⁡ [ 2 π f 0 x + ϕ ( x , y ) ] (10) \begin{align} & \psi \left( x,y \right)=\frac{\operatorname{Im}\left\{ c\left( x,y \right) \right\}}{\operatorname{Re}\left\{ c\left( x,y \right) \right\}} \\ & =\arctan \left[ 2\pi {{f}_{0}}x+\phi \left( x,y \right) \right] \end{align} \tag{10} ψ(x,y)=Re{c(x,y)}Im{c(x,y)}=arctan[2πf0x+ϕ(x,y)](10)

同相移法类似,傅里叶变换法得到的相位主值也是截断的,即包裹在(-π,π]之间,需要相位解包裹才可得到实际相位。

✳️ 三、仿真分析

✳️ 3.1 傅里叶变换轮廓术仿真实验

原始待测物体及其三维形貌如图2(a)与(b)所示,模拟得到的参考条纹与变形条纹如图1(a)与©所示。分别对参考条纹与变形条纹图进行傅里叶变换,其各自频谱如图1(b)与图1(d)所示。提取+1级频谱进行居中处理后,进行逆傅里叶变换变换即可得到包裹相位信息,对其进行解包裹后进行解包裹,即可恢复出待测物体的相位信息。重构结果如图2©与(d)所示。
在这里插入图片描述

图1 模拟得到的参考条纹与变形条纹

在这里插入图片描述

图2 原始待测物体与傅里叶变换轮廓术重构物体三维形貌

✳️ 3.1.1 Matlab代码获取

傅里叶变换轮廓术仿真实验Matlab代码下载链接如下:

傅里叶变换轮廓术仿真实验

✳️ 3.2 相移轮廓术仿真实验

待测物体任然如图2(a)与(b)所示。以四步相移为例,分别获取四副参考条纹图与变形条纹图,如图3(a)-(h)所示。根据四步相移算法,可分别解调得到参考包裹相位以及目标包裹相位,如图3(i)与(j)所示。通过解包裹算法即可重构出待测物体的相位信息,其结果分别如图3(k)与(l)所示。

在这里插入图片描述

图3 相移轮廓术仿真实验结果

✳️ 3.2.1 Matlab代码获取

相移轮廓术仿真实验Matlab代码下载链接如下:

相移轮廓术仿真实验-Matlab代码

✳️ 参考文献

[1] 徐昆鹏, 王建华. 光栅投影三维测量解相位方法的对比研究[J]. 电子制作, 2022, 30(15): 64-69.


⭐️◎⭐️◎⭐️◎⭐️ · · · **博 主 简 介** · · · ⭐️◎⭐️◎⭐️◎⭐️

▁▂▃▅▆▇ 博士研究生生 ,研究方向主要涉及定量相位成像领域,具体包括干涉相位成像技术(如**全息干涉☑**、散斑干涉☑等)、非干涉法相位成像技术(如波前传感技术☑相位恢复技术☑)、此外,还对各种相位解包裹算法☑相干噪声去除算法☑等开展过深入的研究。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

玩转axios, 我行你行吗

一.axios是什么? Axios是一个基于Promise网络请求库,作用于node.js和浏览器中, 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。 在服务端它使用原生node.js http模块,而在客户端(浏览端)则使用XMLHttpRequests。 二.特性 1.从浏览器创…

SpringCloud:微服务保护之流量控制

雪崩问题虽然有四种方案,但是限流是避免服务因突发的流量而发生故障,是对微服务雪崩问题的预防。我们先介绍这种模式。 1.簇点链路 当请求进入微服务时,首先会访问DispatcherServlet,然后进入Controller、Service、Mapper&#…

c++ static修饰类的成员

静态成员就是成员变量和成员函数前面加上static,称为静态成员 1.static修饰成员变量 (1)所有对象共享static成员变量,一旦一个对象数据对其进行改动,所有对象调用其数据也会改变,一改全改。 (2)编译阶段分配内存,static成员变量…

定积分比较大小的常用手段。

1.常用手段 ①区间对称&#xff0c;利用被积函数奇偶性 ②放缩(利用常用不等式,结论等) ③将 1 转换成定积分 ④直接算 ⑤“拆区间&#xff0c;变量代换改区间再合并” 2.常用不等式 1.基本不等式 sinx < x < tanx (0 , Π/2) (几何或者夹逼证明) ex > 1 x (-∞&a…

【数据结构】set 与 map

目录 一、关联式容器 二、set 1、set的介绍 2、set的模板参数列表 3、set的构造 4、set的迭代器 5、set的容量 6、set修改操作 7、set 与 multiset 三、map 1、map的介绍 2、map的模板参数列表 3、map的构造 4、map的迭代器 5、map的容量与元素访问 6、map中元素…

代码随想录算法训练营第五十三天| 1143.最长公共子序列 、1035.不相交的线、53. 最大子序和 动态规划

文章目录 1143.最长公共子序列:star:1035.不相交的线53. 最大子序和 动态规划 1143.最长公共子序列⭐️ 题目链接&#xff1a;代码随想录 解题思路&#xff1a; 1.dp数组&#xff1a;长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp(i)[j]…

记录一次从exe到python源码

找到要解析源码的exe&#xff0c;用7zip解压出来&#xff0c;可以看到打包前的目录&#xff08;这里并不是所有的exe都可以&#xff09;。 如下图所示&#xff0c;由于这个是一个前后端打包的exe&#xff0c;这里的server是后端的服务&#xff0c;resources是前端&#xff0c;这…

【现代机器人学】学习笔记十二:轮式移动机器人

这一章讲移动机器人相关的内容。许久没有更新了&#xff0c;有人私聊我是不是烂尾了。写的这几篇屁文我本来是拿来当自己的笔记本的&#xff0c;不以为有人会认真看。没想到居然还有人追&#xff0c;真是受宠若惊。在这里深表感谢&#xff01;一直没更新其实是因为年后的工作实…

优惠卷秒杀功能、全局唯一ID、乐观锁解决超卖问题、悲观锁实现一人一单、集群下锁失效问题

文章目录 1 全局唯一ID的需求分析2 Redis实现全局唯一Id3 添加优惠卷4 实现秒杀下单5 库存超卖问题分析6 乐观锁解决超卖问题6 悲观锁实现一人一单7 集群环境下的并发问题 1 全局唯一ID的需求分析 每个店铺都可以发布优惠券&#xff1a; 当用户抢购时&#xff0c;就会生成订单…

ASP.NET Core MVC 从入门到精通之序列化

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

Springboot +Flowable,任务认领和回退(三)

一.简介 有的时候&#xff0c;一个任务节点会存在多个候选人&#xff0c;例如&#xff1a;张三提交一个任务&#xff0c;这个任务即可以由李四处理&#xff0c;又可以由王五处理&#xff0c;那么针对这种多个任务候选人的情况&#xff0c;该如何处理&#xff1f; 二.绘制流程…

并发编程05:Java内存模型之JMM

文章目录 5.1 先从大场面试开始5.2 计算机硬件存储体系5.3 Java内存模型Java Memory Model5.4 JMM规范下三大特性5.5 JMM规范下多线程对变量的读写过程5.6 JMM规范下多线程先行发生原则之happens-before5.6.1 x,y案例说明5.6.2 先行并发原则说明5.6.3 happens-before总原则5.6.…

【面试题】面试官:说说你对MySQL的了解

文章目录 基础篇非关系型数据库和关系型数据库的区别&#xff1f;MySQL 数据库两种存储引擎的区别? 索引篇为什么索引能提高查询速度?聚集索引和非聚集索引的区别&#xff1f;非聚集索引一定回表查询吗?索引这么多优点&#xff0c;为什么不对表中的每一个列创建一个索引呢&a…

八岁都能懂:BFS判断一个图是二分图

目录 1 什么是二分图2 进入情境3 代码实现4 BFS是什么&#xff1f; 1 什么是二分图 一个图用两种颜色涂&#xff08;橙黄和橘绿&#xff09;&#xff0c;相邻节点不能同色&#xff0c;如下图&#xff0c;4与5相邻且同色&#xff0c;所以不是二分图。 2 进入情境 第一版&#xf…

微服务高频面试题

1、Spring Cloud 5大组件有哪些&#xff1f; 早期我们一般认为的Spring Cloud五大组件是 Eureka : 注册中心Ribbon : 负载均衡Feign : 远程调用Hystrix : 服务熔断Zuul/Gateway : 网关 随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件 注册中心/配置…

【论文】SimCLS:摘要总结的对比学习(2)

SimCLS:摘要总结的对比学习(1&#xff09; 写在最前面2 抽象总结的对比学习框架 写在最前面 SimCLS: A Simple Framework for Contrastive Learning of Abstractive Summarization&#xff08;2021ACL会议&#xff09; https://arxiv.org/abs/2106.01890 论文&#xff1a;htt…

HTTP第四讲——域名和DNS

IP 协议的职责是“网际互连”&#xff0c;它在 MAC 层之上&#xff0c;使用 IP 地址把 MAC 编号转换成了四位数字&#xff0c;这就对物理网卡的 MAC 地址做了一层抽象&#xff0c;发展出了许多的“新玩法”。 例如&#xff0c;分为 A、B、C、D、E 五种类型&#xff0c;公有地址…

[GFCTF 2021] day2

Baby_Web 查看源码发现 <!--源码藏在上层目录xxx.php.txt里面&#xff0c;但你怎么才能看到它呢?--> 然后抓包看中间件&#xff0c;Apache/2.4.49 (Unix) 存在目录穿越漏洞 curl http://node4.anna.nssctf.cn:28805/cgi-bin/.%2e/.%2e/.%2e/.%2e/var/www/index …

快速上手分布式异步任务框架Celery

一、Celery架构介绍 Celery&#xff1a;芹菜&#xff1f;&#xff08;跟翻译没有任何关系&#xff09;&#xff0c;分布式异步任务框架&#xff08;跟其他web框架无关&#xff09; Celery is a project with minimal funding, so we don’t support Microsoft Windows. Please…

【嵌入式系统】课程复习资料整理

【嵌入式系统】课程复习资料整理 一、绪论 1.定义 从技术的角度定义&#xff1a;以应用为中心、以计算机技术为基础、软件硬件可裁剪、对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从系统的角度定义&#xff1a;嵌入式系统是设计完成复杂功能的硬件和软件&a…