一种基于迭代傅里叶变换算法纯相位全息图的优化

一、原理

可以生成纯相位全息图的迭代算法中,迭代傅立叶变换算法(Iterative Fourier TransformAlgorithm,IFTA)是一种比较具有代表性的算法,该类算法的特点是通过傅立叶变换在两个平面中的反复传递。迭代傅立叶变换算法,或称误差减少算法(Error Reduction Algorithm)在20世纪70年代早期被作为数字全息的一种算法而提出,后来被Gerchberg与Saxton修改并运用在相位提取领域,成为了迭代算法中最著名也可能是被运用最多的方法–Gerchberg-Saxton(GS)算法。该算法中,根据全息图平面与重建图像平面的振幅分布,通过迭代进行正逆向的光波传递以及施加在两个平面上的限制条件(Constraint),进而求得全息图平面中光场的相位信息。该方法在计算纯相位全息图场景中十分适用,可以使用菲涅尔变换或者傅立叶变换来进行光场传播的计算[1]。

在生成纯相位全息图 H p ( x , y ) {{H}_{p}}\left( x,y \right) Hp(x,y)时,重构像的幅值必须正比于理想幅值分布A(x,y),即

F { H p ( x , y ) } = F { e − j ϕ ( x , y ) } = A ( x , y ) e − j θ ( x , y ) F\left\{ {{H}_{p}}\left( x,y \right) \right\}=F\left\{ {{e}^{-j\phi \left( x,y \right)}} \right\}=A\left( x,y \right){{e}^{-j\theta \left( x,y \right)}} F{Hp(x,y)}=F{ejϕ(x,y)}=A(x,y)ejθ(x,y)

式中, ϕ ( x , y ) \phi \left( x,y \right) ϕ(x,y)是全息图的相位; θ ( x , y ) \theta \left( x,y \right) θ(x,y)是重构光场的相位。在设计纯相位CGH时,需要找到相位函数 θ ( x , y ) \theta \left( x,y \right) θ(x,y),使得 H p {{H}_{p}} Hp变成纯相位函数。基于这一思想,IFTA是一种寻找 θ ( x , y ) \theta \left( x,y \right) θ(x,y)的最优解的算法。

图1为IFTA生成全息图的常用流程图。首先,加载初始条纹作为目标重构光场的幅值(模)分布A(x,y)。。如果需要,也可以在输入条纹中加入相位掩模,作为初始光场。初始光场经变换至频谱域,根据约束条件修正频谱。在该问题中,约束条件谱的模必须是均匀的。于是设频谱的模为单位1,相位不变。修改后的频谱逆变换到空间域。然后利用空间域光场的约束条件,从而获得新的光场。在该问题中,空间域的限制条件是给定的模分布A(x,y),因此强制光场的模为A(x,y),保留相位不变。然后,得到的光场被看作下次迭代中的初始光场。重复迭代过程,直至达到所需目标(如一定迭代次数)。

在这里插入图片描述

图 1 迭代傅里叶变换算法流程图

二、实例分析

首先,初始输入图像变换到频谱域,提取出相位谱然后变换回空间域。为评价全息图重构质量,可计算均方根误差(RMSE),其定义为

R M S E = { 1 M N ∑ m , n [ ∣ ψ ( m , n ) ∣ − A ( m , n ) ] 2 } 0.5 RMSE={{\left\{ \frac{1}{MN}\sum\limits_{m,n}{{{\left[ \left| \psi (m,n) \right|-A(m,n) \right]}^{2}}} \right\}}^{0.5}} RMSE={MN1m,n[ψ(m,n)A(m,n)]2}0.5

式中, A ( m , n ) A(m,n) A(m,n)是目标图像; ψ ( m , n ) \psi (m,n) ψ(m,n)是待评价的光场;(m,n)为采样点指标;M、N分别是x轴、y轴的采样数目。

RMSE随迭代次数的变化情况如下动图所示,总的迭代次数是100。随着迭代次数增加,误差逐渐减小。

在这里插入图片描述
经过100次迭代后的重构图像如下图所示:

在这里插入图片描述

图 2 基于迭代傅里叶算法的图像重构

参考文献

[1] 卜浩祯, 焦述铭. 纯相位全息图优化算法[J]. 液晶与显示, 2021, 36(06): 810-826.

资源获取

上述资源可从以下链接处获取:
https://download.csdn.net/download/qq_36584460/85077528


如有任何疑问,可私信博主。

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
角谱法是一种生成全息图的方法,其中通过将物体的傅里叶变换和一个参考光束的傅里叶变换相乘来生成全息图。在这种方法中,可以通过使用傅里叶变换和逆傅里叶变换来计算物体的相位和幅度信息。 下面是一个使用python编写的角谱法生成相位全息图的程序: ``` import numpy as np from scipy import fftpack def hologram_creation_phase_only(obj, ref): # Perform FFT on object and reference beams obj_fft = fftpack.fft2(obj) ref_fft = fftpack.fft2(ref) # Calculate amplitude and phase information from object FFT obj_amp = np.abs(obj_fft) obj_phase = np.angle(obj_fft) # Calculate amplitude and phase information from reference FFT ref_amp = np.abs(ref_fft) ref_phase = np.angle(ref_fft) # Calculate hologram by multiplying object and reference FFTs hologram_fft = obj_amp * np.exp(1j * (obj_phase - ref_phase)) # Perform inverse FFT on hologram FFT to obtain hologram hologram = fftpack.ifft2(hologram_fft) # Return hologram return hologram.real # Define object and reference beams obj = np.random.rand(256, 256) ref = np.ones((256, 256)) # Generate hologram using phase-only hologram creation method hologram = hologram_creation_phase_only(obj, ref) # Display hologram plt.imshow(hologram, cmap='gray') plt.show() ``` 在这个程序中,我们首先导入了numpy和scipy库来进行傅里叶变换和逆傅里叶变换的计算。然后我们定义了一个名为`hologram_creation_phase_only`的函数,用于生成相位全息图。该函数接受两个输入参数:`obj`表示物体光束的复振幅,`ref`表示参考光束的复振幅。我们首先对物体和参考光束进行傅里叶变换,并从物体和参考光束的傅里叶变换中提取出振幅和相位信息。然后,我们通过将物体傅里叶变换相位信息与参考光束傅里叶变换相位信息相减来计算全息图。最后,我们通过逆傅里叶变换全息图从频域转换回空域,并返回相位全息图。 在主程序中,我们首先定义了一个随机物体光束`obj`和一个均匀参考光束`ref`。然后,我们使用`hologram_creation_phase_only`函数来生成相位全息图,并显示结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单光学

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值