基于MATLAB的迂回位相编码计算全息生成与再现系统
项目介绍
本项目是一个基于MATLAB平台开发的计算全息(CGH)仿真系统。系统完整实现了从原始图像到二值全息图的生成,以及通过数值衍射恢复原始图像的再现全过程。该系统采用光学领域经典的Lohmann型迂回位相编码原理,通过控制全息图中矩形孔径的几何尺寸和相对位移,将复杂的复振幅信息编码到二值图像中。本系统展示了波动光学、傅里叶光学与计算机数字图像处理技术的深度结合。
功能特性
- 图像预处理与随机位相加载:支持目标图像的采样与离散化,并通过引入随机位相来均匀化其频谱分布,降低零级像的亮度干扰。
- 复合频谱提取:利用快速傅里叶变换(FFT)算法计算目标场的复频谱,并实现频谱的中心平移与归一化处理处理。
- Lohmann 迂回位相编码:核心编码模块,将频谱的振幅映射为孔径高度,将位相映射为孔径在单元格内的水平位移。
- 高分辨率二值化全息图生成:输出适合物理打印或空间光调制器(SLM)加载的二值黑白全息图。
- 数值衍射再现:模拟相干平面波照射全息图,利用逆向快速傅里叶变换(IFFT)模拟远场衍射过程。
- 定量评估分析:自动定位一级衍射级图像,并通过计算原始图像与再现图像的相关系数,给出系统还原精度的评价。
系统要求
- 软件环境:MATLAB 2018b 及以上版本。
- 必备工具箱:Image Processing Toolbox(用于图像缩放与相关性计算)。
实现逻辑与功能细节
#### 1. 参数初始化与目标场构建
系统首先定义采样点数(默认64x64)和单元格尺寸(默认16x16像素)。在图像生成阶段,系统通过算法在矩阵中心生成一个矩形框及字母“T”的灰度分布。为了防止傅里叶变换后频谱能量过于集中在零频组件,系统生成一个与目标图像尺寸相同的随机位相矩阵,并与目标振幅相乘,构成复振幅物场分布。
#### 2. 复频谱计算
系统通过快速傅里叶变换将空间域的目标场转换到频率域。由于计算全息需要对每个采样点的复振幅进行处理,系统会对变换后的频谱进行移频操作,使其低频分量位于矩阵中心。随后提取每一个频率点的绝对值作为振幅信息,并提取其辐角作为位相信息。振幅被归一化到[0, 1]区间,位相被映射到[-0.5, 0.5]区间。
#### 3. Lohmann 编码核心算法
编码过程将总像素划分为NxN个单元格。对于每一个单元格:
- 振幅编码:系统根据归一化振幅的大小计算矩形孔径的高度。振幅越大,孔径高度越高,代表透过的光强越高。
- 位相编码(迂回位相):根据归一化位相的大小计算矩形孔径相对单元格中心位置的水平偏移量。这是本系统的核心原理,即通过物理位置产生的路程差来等效模拟光波的位相变化。
- 几何限制:通过缩放因子控制孔径尺寸,确保位移后的孔径不会超出其所属的单元格边界。
#### 4. 数值再现过程
系统通过对生成的二值全息图进行逆向傅里叶变换来模拟光学再现。在全场强度分布中,可以观察到中央的零级项以及分布在两侧的一级项(再现象)。由于使用了迂回位相编码,原始目标图像会出现在一级衍射项的特定位置。
#### 5. 图像提取与相关性评估
系统具备后处理功能,能够自动检测再现强度图中的最大值点(通常为一级项中心),并以该点为中心截取与原始图像尺寸一致的区域。截取出的图像经过重采样和归一化后,与原始目标图像进行2D相关系数(correlation coefficient)计算。此外,系统内置了可视化模块,同屏展示原始图像、全息图全貌、局部孔径细节、再现全场分布以及最终提取结果。
关键实现点分析
- DETOUR PHASE(迂回位相):利用 $exp(i cdot 2pi cdot Delta x/L)$ 的数学性质,将相位信息的编码转化为空间位移 $Delta x$。
- 二值化处理:生成的全息图仅包含0和1(黑和白),极大降低了对显示设备灰度等级的要求。
- 全场分布增强:在再现显示时,系统采用了增强对比度的策略,使得较弱的高级衍射项也能被清晰观察到。
- 自动化结果报告:系统不仅生成图像,还通过控制台和图形界面实时反馈相关度数据。