傅里叶变换轮廓术Fourier Transform Profilometry(FTP)

2024-05-14 17:48

本文主要是介绍傅里叶变换轮廓术Fourier Transform Profilometry(FTP),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

小钟第一次写博客,希望把读研期间学习的结构光三维重建的知识还有实验记录下来,并且分享出去,一是希望能帮助跟我研一的时候一样的小伙伴,当时痛苦地读大量文献,从仿真到实验,一个人在奋斗捣鼓,迷茫的时候超级渴望有人能跟我讨论分享,我痛苦的时候没有人能和我讨论,但希望通过这篇文章能帮助到未来跟我一样的小伙伴。二是万一我毕业工作不从事相关的工作,不希望我白看那么多文献,白学了这些东西,记录下来留个念想也好。第一次写,文笔拙劣,有错漏之处忘同行批评指正。不啰嗦了。

 

结构光三维重建

三维重建的运用越来越广泛,结构光三维重建是其中一种热门的、精度高、速度快且无接触式的技术。

结构光中,正弦条纹结构光是被广泛运用的一种,只需要一个投影仪一个摄像头就可以搭建正弦条纹结构光系统。一般,利用投影仪将正弦条纹投影到被测物体上利用摄像头拍摄被物体高度所调制的变形条纹图样,得到变形条纹图样后,非常重要的一步就是从条纹中获取相位信息,一般有傅里叶变换轮廓术(FTP),相位测量轮廓术(PMP)这两种,前者的原理会在本文详述,而这一技术也引申出了窗口傅里叶、小波变换等方法来提取相位;后者其实就是相移方法,或许有小伙伴听说过的三步相移、四步相移,其实就是PMP,我会找时间再写一篇博客来介绍。在得到相位信息后,由于相位是通过反正切(atan2)求出来的,所以会被截断在[-π,π]或者说是[0,2π]之间,因此另一个关键且重要的一步就是相位解包裹,这里不详细介绍了。最后建立相位——高度映射就可以求出物体的三维形貌。

 

傅里叶变换轮廓术Fourier Transform Profilometry

为了方便,以下简称FTP。FTP是在1983年有日本的Takeda和Mutoh提出来的,后来也被广泛地运用,例如四川大学的苏显渝教授的组,就有相当多FTP的研究的文章。

如下图,当左边的正弦条纹打在中上的一个平面上的时候,条纹(右上)是不会发生形变的,但当打在了一个有高度变化的物体上时,条纹就会被物体的高度调整而发生形变。而条纹的形变可以理解为相位的变化,那么只要得到相位,就可以知道物体的三维形貌了。(由于用的是我组内pre的ppt,所以很多图内都是英文注释的,见谅)

FTP主要步骤

FTP实际上就是从变形的条纹图样中获取条纹的相位的一种方法。主要的步骤如下:

接下来我会从把物理推导推一遍,不过整体的步骤就是上面的图这样的,实在看不下去也可以考虑跳过,不过认清了整个物理过程,对于理解FTP是非常有帮助的。

物理推导

对于条纹图样,可以写成光强的函数I\left (x, \right y)的形式,也可以写成泰勒展开后的形式g\left ( x, \right y),这里需要留意的是他们的相位?\varphi \left ( x, \right y),FTP的最终目的就是要得到\varphi \left ( x, \right y)

I\left (x, \right y)或者g\left ( x, \right y)做x方向上的1D傅里叶变换(实际操作中实际是做二维傅里叶变换),在得到设计相应滤波器,将其中一个基频分量滤出(如下图中的Spectrum,频谱中有对称的基频分量,因为是一样的,所以只需要其中一半就可以了)。

滤出基频分量后做傅里叶逆变换,就可以得到右边的式子,这式子中只含有基频f_{0}

 刚刚提到要提取相位\varphi \left ( x, \right y),因此对\widehat{g_{0}}}取共轭,然后将他们相乘,对相乘后的式子取复对数就可以提取出相位了,相位在式子的虚部中。当然,在实际操作中,相乘和取对数的操作都是不需要的。 

得到相位之后,因为通过反正切来求相位,因此相位会截断在[-π,π]或者是[0,2π]之间,因此需要通过相位解包裹来得到连续相位,解包裹算法众多,这里就不详细展开了,有机会再写吧。

根据系统和被测物体的几何关系,可以得到相位和高度的映射关系,最后就可以求出物体的高度信息了。

 

仿真与实验结果

以下是我仿真的结果,物体使用matlab中的peak函数模拟的。

此外我也做了一个人脸的三维重建,其中解包裹是用质量图导向法(quality guide)来实现的。(脸是实验室的孟同学的友情客串,千万别笑人家!)这是快1年前做的结果,当时没有继续抓精度,和现在做的结果还是有差距的。

 

 

部分参考文献

[1]Mitsuo Takeda, Kazuhiro Mutoh.Fourier transform profilometry for the automatic measurement of 3-D object shapes[J].Applied Optics,1983,Vol.22: 3977-3982

[2] 毛先富,陈文静,苏显渝.傅里叶变换轮廓术新理论研究[J].中国激光杂志,2007,(1): 99-104

[3] 毛先富,苏显渝,陈文静,荆海龙.改进傅里叶变换轮廓术的测量算法研究[J].光学学报,2008,(7): 1291-1295

[4] 毛先富,陈文静,苏显渝,边心田.傅里叶变换轮廓术中新的相位及高度算法分析[J].光学学报,2007,(2): 225-229

[5] 苏显渝,谭松新,向立群,李继陶,羡涛.基于傅里叶变换轮廓术方法的复杂物体三维面形测量[J].光学学报,1998,第18卷(9): 77-82

 

以上就是我对FTP的一些小见解,如有错误,敬请各位大神指正。当然实际操作中有些细节我没往里面写,如果有兴趣也欢迎大家和我讨论。

本文用到的图都是我个人总结归纳和实验得到的,请不要私自拿去用了,谢谢!

这篇关于傅里叶变换轮廓术Fourier Transform Profilometry(FTP)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/989428

相关文章

Verybot之OpenCV应用二:霍夫变换查找圆

其实我是想通过这个程序来测试一下,OpenCV在Verybot上跑得怎么样,霍夫变换的原理就不多说了,下面是程序: #include "cv.h"#include "highgui.h"#include "stdio.h"int main(int argc, char** argv){cvNamedWindow("vedio",0);CvCapture* capture;i

Ubuntu ftp搭建--配置不同用户不同权限

一、安装VSFTP sudo apt-get install vsftpd 二、添加FTP用户 sudo mkdir /etc/vsftpdsudo useradd -m -d /home/vsftpd vsftpd --用户名为vsftpd,目录和用户名可以自己更改sudo vi /etc/vsftpd/ftpuser.txt --这个到时与vsftp的配置文件对应建立一

【虚拟机/服务器】Ubuntu Server上配置FTP服务器

当使用FTP工具连接但 Ubuntu Server 未安装 vsftpd 时会出现这样的报错 安装vsftpd sudo apt-get install vsftpd 卸载vsftpd sudo apt-get remove --purge vsftpd 当 Ubuntu Server 未启动 vsftpd 时会出现这样的报错 启动vsftpd sudo service

css-transform对position:fixed影响

在betterScroll尝试使用position:fixed固定首列,然而并不能实现固定。因为 bscroll / iscroll 是基于 transform 属性实现滚动的, 所以 iscroll 会通过实时修改元素的 transform 属性以达到滚动的效果。父元素如果存在 transform 属性,子元素的 position: fixed 属性无效。betterScroll有个 useTr

OpenCV结构分析与形状描述符(10)检测并提取轮廓函数findContours()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 在二值图像中查找轮廓。 该函数使用算法 253从二值图像中检索轮廓。轮廓是有用的工具,可用于形状分析和对象检测与识别。参见 OpenCV 示例目录中的 squares.cpp。 findContours 是 OpenCV 库中的一个重要函数

OpenCV结构分析与形状描述符(9)检测轮廓相对于其凸包的凹陷缺陷函数convexityDefects()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 查找一个轮廓的凸性缺陷。 下图显示了一个手部轮廓的凸性缺陷: convexityDefects 是 OpenCV 库中的一个函数,用于检测轮廓相对于其凸包的凹陷缺陷。这个函数可以帮助识别轮廓中的凹进去的部分,通常被用来分析手部或其他物体的形状

【数字信号处理】一文讲清FFT(快速傅里叶变换)

目录 快速傅里叶变换(Fast Fourier Transform,FFT)FFT的背景快速傅里叶变换(Fast Fourier Transform,FFT)DFT的数学表达实际计算重要性和应用频谱泄露、频谱混叠奈奎斯特采样定理参考链接 快速傅里叶变换(Fast Fourier Transform,FFT) FFT的背景 1、为什么要时域→频域频率?50Hz+频率120Hz

Centos7下,Vsftpd工具,搭建ftp服务器

Centos7安装Vsftpd工具 1.下载与安装 1.1 安装环境 测试系统:Centos7.0 所用软件:vsftpd-3.0.2-21.e17.x86_64 下载地址: http://mirror.centos.org/centos/7/os/x86_64/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm 1.2 开始安装 1.2.1 查询是否系统

C语言通过MFC访问FTP,头文件个,宏和lib问题处理

1、预处理器定义 _LIB _CRT_SECURE_NO_WARNINGS _AFXDLL WIN32_LEAN_AND_MEAN

C语言通过MFC访问FTP

// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。 // #include “stdafx.h” #include <stdio.h> #include <tchar.h> #include <process.h> #include <afxinet.h> #include <wininet.h> #include <windows.h> #includ