基于Matlab全息干涉图模拟仿真与傅里叶变换相位重构
一、全息干涉图的生成
在最简单的情况下,干涉图(全息图)是由畸变光束(物光)与平面波(参考光)混合产生的。
首先,模拟一束畸变光束(物光),其相位如下图所示:
模拟生成平面参考光,其相位如下图所示:
参考光与物光叠加之后获取的全息图如下所示:
二、相位重构
为了全息干涉图中获得重构相位,本文使用傅里叶域中的平移与滤波处理来重构波前相位。
上述全息干涉图可表述为:
g ( x , y ) = c ( x , y ) exp ( 2 π i f 0 x ) + c ∗ ( x , y ) exp ( − 2 π i f 0 x ) g\left( x,y \right)=c\left( x,y \right)\exp (2\pi i{{f}_{0}}x)+{{c}^{*}}\left( x,y \right)\exp (-2\pi i{{f}_{0}}x) g(x,y)=c(x,y)exp(2πif0x)+c∗(x,y)exp(−2πif0x) (1)
其中,
c ( x , y ) = 1 2 exp ( i ψ ( x , y ) ) c\left( x,y \right)=\frac{1}{2}\exp \left( i\psi (x,y) \right) c(x,y)=21exp(iψ(x,y)) (2)
ψ ( x , y ) \psi (x,y) ψ(x,y)包含了物体信息, f 0 x {{f}_{0}}x f0x描述了波前倾斜。上式进行傅里叶变换后,可得:
G ( f , y ) = A ( f , y ) + C ( f + f 0 , y ) + C ∗ ( f − f 0 , y ) G\left( f,y \right)=A\left( f,y \right)+C(f+{{f}_{0}},y)+{{C}^{*}}(f-{{f}_{0}},y) G(f,y)=A(f,y)+C(f+f0,y)+C∗(f−f0,y) (3)
其中大写字母A和C表示傅里叶谱,f表示空间频率。我们可以从两个旁瓣谱 C ( f + f 0 , y ) C(f+{{f}_{0}},y) C(f+f0,y)或 C ∗ ( f − f 0 , y ) {{C}^{*}}(f-{{f}_{0}},y) C∗(f−f0,y)中选取一个,并将其转换为零空间频率的原点。接着,我们可以对转换后的光谱进行傅里叶逆变换,得到表达式(1)中定义的c(x,y)。计算表达式(2)的复对数,可得到相位 ψ ( x , y ) \psi (x,y) ψ(x,y):
i ψ ( x , y ) = log [ c ( x , y ) ] i\psi (x,y)=\log \left[ c\left( x,y \right) \right] iψ(x,y)=log[c(x,y)] (4)
相位 ψ ( x , y ) \psi (x,y) ψ(x,y)不确定为因子2π,其主值位于-π-π范围内。为了获得连续相位图,对重建的相位图采用了一种特殊的解包裹算法,去除振幅接近2π的不连续性。算法实现包括以下步骤:
1) 对仅含物光场的全息图进行傅里叶变换,此时频谱由一个中央瓣和两个包含相位信息的副瓣组成。
2)取出其中一个旁边并放入原点。(滤波处理)
3)逆傅里叶变换
4)求出重构相位
重构相位如下图所示
三、资源获取
上述仿真程序可从以下链接处获取:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理