傅里叶变换轮廓术(FTP)matlab模拟

编程入门 行业动态 更新时间:2024-10-14 02:24:17

傅里叶变换<a href=https://www.elefans.com/category/jswz/34/1738555.html style=轮廓术(FTP)matlab模拟"/>

傅里叶变换轮廓术(FTP)matlab模拟

上一篇讲了傅里叶变换轮廓术的原理,这篇简单讲讲Matlab模拟傅里叶变换轮廓术(FTP)

由于部分代码我不是用Matlab写的,所以个别步骤我会跳过,但相关的操作百度一搜一大把,动起小手丰衣足食

 

条纹产生

FTP用到的都是正弦光栅条纹,用matlab生成正弦光栅条纹其实也很简单

f=1/18;%条纹频率,即18个像素一个周期
w=2*pi*f;%角频率%条纹尺寸
x=1:150;
y=1:150;
[x,y]=meshgrid(x,y); %条纹图样I
I=127.5+127.5*cos(w*x);%可在条纹中加相移
%I=127.5+127.5*cos(w*x-2*pi/3);%相移2pi/3的条纹
I=mat2gray(I);%转为灰度图显示
imshow(I);

 

目标物体

目标物体用大部分论文都用到的matlab的peak函数生成即可

%目标物体
z=3*peaks(150);
figure('name','目标');mesh(z);

 

变形条纹

将得到的正弦光栅条纹投影到目标物体上,这里是根据上一篇文章的高度和相位的几何关系, 反推相位和高度的关系

L=80;%摄像机出瞳到参考面的距离
d=15;%摄像机出瞳和投影仪出瞳的距离
I1=127.5+127.5*cos(w*(x+z*d./(L-z)));%纵向
I1=mat2gray(I1);
figure('name','变形图样');imshow(I1);

 

傅里叶变换+滤波+傅里叶逆变换

由于这一步我是用C++和OpenCV来写的,所以就不能贴源码了

主要是对变形图样做傅里叶变换,设计合适的滤波器滤出其中一半基频分量,再做逆变换后求相位,这些都可以在网上找到matlab的相应代码。

 

相位解包裹

经过上一步的操作,得到的是包裹相位,即相位被截断在[-π,π]之间,需要相位解包裹得到连续相位。

只要peak函数产生的高度不是设置得特别大,可以采用最简单的Itoh's method的一维解包裹方法来解包裹

基本思路是:

同一行前后两个点的相位作比较,如果后一个点的相位比前一个点的相位大π,则后一个点的相位减2π;

如果后一个点的相位比前一个点的相位小π,则后一个点的相位加π。

额······这步我同样没用matlab写,所以就不放源码了。

 

得到连续相位后,根据上面提到的高度相位关系就可以求出被测物体原高度了。

 

 

 

更多推荐

傅里叶变换轮廓术(FTP)matlab模拟

本文发布于:2024-03-11 23:38:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1730197.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:轮廓   傅里叶   matlab   FTP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!