应用角谱法生成纯相位全息图的python程序
时间: 2023-09-19 10:12:18 浏览: 349
角谱法是一种生成全息图的方法,其中通过将物体的傅里叶变换和一个参考光束的傅里叶变换相乘来生成全息图。在这种方法中,可以通过使用傅里叶变换和逆傅里叶变换来计算物体的相位和幅度信息。
下面是一个使用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`函数来生成纯相位全息图,并显示结果。
阅读全文