MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 基于卷积法的数字全息记录与再现模拟

基于卷积法的数字全息记录与再现模拟

资 源 简 介

本项目利用MATLAB软件环境,基于标量衍射理论中的菲涅耳衍射近似,通过卷积运算方法实现了数字全息图的计算机生成与数字再现的全过程模拟。主要功能涵盖以下几个方面:首先是全息记录过程的模拟,系统读取原始图像作为物体的振幅分布(可选择添加虚拟相位信息),定义关键物理参数(如激光波长、衍射传播距离、全息面像素尺寸、采样分辨率等),利用自由空间脉冲响应函数(Impulse Response Function)与物光场进行卷积运算(具体通过频域的快速傅里叶变换FFT和逆变换IFFT实现),精确计算光波传播至全息平面的复振幅分布,并引入参考光波(如平面波或球面波)与其发生干涉叠加,计算光强分布从而生成模拟的数字全息图。其次是全息再现过程的模拟,系统读取生成的数字全息图,再次应用卷积法算法,模拟参考光照射全息图后的衍射传播过程,在指定的重建距离处恢复物体的复振幅信息(包括振幅和相位)。本项目重点实现了卷积法的核心算法,相比于菲涅耳近似的单次FFT算法,卷积法能够保证重建图像的像素分辨率与记录平面一致,且像元大小不随重建距离改变,特别适用于近距和中距的菲涅耳衍射模拟。此外,代码中包含了防止圆周卷积混叠效应的零补(Zero-padding)预处理功能,以及结果的可视化显示模块。

详 情 说 明

基于卷积法的数字全息记录与再现模拟系统

项目简介

本项目是一个基于MATLAB环境开发的数字全息仿真系统。它利用标量衍射理论中的菲涅耳(Fresnel)近似,通过卷积运算方法(Convolution Method)实现了数字全息图的计算机生成(CGH)与数字数值再现的完整物理过程。

与基于单次FFT的菲涅耳变换算法(S-FFT)不同,本项目采用的卷积算法(基于角谱理论的菲涅耳传递函数形式)具有显著优势:它能够确保重建图像的像素分辨率(像元尺寸)与记录平面完全一致,不随衍射距离的变化而缩放,特别适用于需要精确尺寸匹配的近距和中距衍射模拟。

主要功能特性

  • 全流程模拟:涵盖了虚拟物光场生成、自由空间衍射传播、全息干涉记录、CCD量化效应以及全息数值再现的闭环模拟。
  • 物光场合成:支持生成具有复杂振幅分布(Modified Shepp-Logan幻影)和虚拟球面相位的复振幅物体。
  • 离轴全息记录:模拟参考光与物光的离轴干涉,引入倾斜平面波作为参考光,通过载频将物光频谱与零级项分离。
  • 高精度衍射计算:核心算法采用基于FFT/IFFT的卷积法,并引入了零补(Zero-padding)技术,有效消除了由离散傅里叶变换引起的圆周卷积混叠效应。
  • 共轭再现:模拟利用共轭参考光照明全息图,消除离轴载频相位,恢复物体的原始光场分布。
  • 可视化分析:提供从原始物体、全息图及其频谱,到最终再现振幅与相位的多维度可视化展示。

系统环境要求

  • MATLAB R2016a 或更高版本
  • Image Processing Toolbox(用于生成Shepp-Logan幻影 phantom 函数)

使用方法

直接在MATLAB环境中运行主脚本(main.m)即可启动模拟。程序将自动执行所有计算步骤,并弹出三个图形窗口显示各阶段的模拟结果:

  1. 原始物体信息:显示合成物体的振幅和相位图。
  2. 数字全息图及频谱:显示模拟记录的离轴全息图(模拟CCD采集效果)及其对数频谱。
  3. 数值再现结果:显示经过数值衍射传播后重建的物体振幅和相位。

系统详细实现逻辑

本项目的主程序严格按照光学物理过程编写,主要分为以下五个阶段:

1. 系统参数配置

程序首先定义了模拟所需的物理常量和空间参数:
  • 设定激光波长为 532nm(绿光)。
  • 定义采样分辨率为 512x512 像素,像元尺寸为 10μm。
  • 设定记录距离(物体到全息面)和再现距离均为 0.3m。
  • 构建中心化的二维空间坐标网格。

2. 物光场构建 (Object Field Generation)

  • 振幅:调用MATLAB内置的 phantom 函数生成 Modified Shepp-Logan 图像作为物体振幅,模拟具有丰富内部结构的物体。
  • 相位:通过公式生成一个虚拟的球面相位因子(类似透镜效果),模拟物体表面的三维起伏或透射相位变化,构建出复振幅物光场 $U_{obj}$。

3. 全息记录模拟 (Recording)

  • 物光传播:调用核心函数 fresnel_convolution_propagation,将初始物光场向前传播 $z_{record}$ 距离,计算到达全息平面的复振幅分布。
  • 参考光生成:构建一个带有微小倾斜角(x和y方向约0.5度)的平面波作为参考光,引入空间载频以实现离轴全息。
  • 干涉计算:依据干涉定律计算全息面光强分布 $I = |O + R|^2$。
  • 量化模拟:将计算出的浮点型光强数据归一化,并转换为 8位无符号整数(uint8),模拟CCD/CMOS相机的数字化采样过程。

4. 全息再现模拟 (Reconstruction)

  • 照明光场:生成参考光的复共轭波($R^*$)作为照明光,照射数字全息图。此操作的作用是消除记录时引入的倾斜相位因子(解调载频)。
  • 直流滤波:通过简单的减去均值操作,削弱零级衍射光(直流项)对重建图像对比度的影响。
  • 逆向/正向传播:将照明后的光场再次传入卷积传播函数,传播 $z_{recon}$ 距离,计算再现像平面的复振幅。
  • 信息提取:从复数结果中提取模(振幅)和辐角(相位)作为最终重建结果。

5. 结果可视化

利用 imshowimagesc 等函数,结合灰度与伪彩色(jet)映射,直观展示全息记录与再现的物理效果。特别是通过频谱图可以观察到离轴全息导致的频谱分离现象。

核心算法分析:菲涅耳卷积传播

代码中的 fresnel_convolution_propagation 函数是本项目的核心算子,其实现细节如下:

算法原理

基于线性系统理论,自由空间光传播可视为输入光场与自由空间脉冲响应函数 $H(f_x, f_y)$ 的卷积: $$ U_{out} = mathcal{F}^{-1} { mathcal{F}{U_{in}} cdot H(f_x, f_y) } $$ 其中,菲涅耳近似下的传递函数形式为: $$ H = e^{jkz} cdot e^{-jpilambda z (f_x^2 + f_y^2)} $$

关键实现细节

  1. 零补预处理 (Zero-padding)
* 为了防止离散傅里叶变换(DFT)隐含的周期性导致圆周卷积混叠,函数首先将输入矩阵的尺寸扩充为原来的2倍(从 $N times N$ 扩充为 $2N times 2N$)。 * 原始光场被放置在扩充矩阵的中心,周围填充零值。
  1. 频域坐标构建
* 根据扩充后的网格尺寸计算对应的频率分辨率 ($df = 1/L_{pad}$),生成对应的频域坐标网格。
  1. 传递函数计算
* 在频域直接生成菲涅耳传递函数 $H$。
  1. 频域滤波
* 使用 fft2 将扩充后的光场变换到频域。 * 利用 fftshiftifftshift 确保频谱的零频分量移动到矩阵中心,以便与中心化的传递函数 $H$ 正确对齐相乘。 * 执行点乘操作:$F_{out} = F_{U} cdot H$。
  1. 逆变换与裁剪
* 使用 ifft2 将结果变换回空域。 * 截取扩充矩阵中心的 $N times N$ 区域作为最终输出,去除用于防止混叠的边缘部分。

此算法保证了输出全息图或再现像的像素物理尺寸($dx, dy$)与输入面完全一致,这是相比于单次FFT算法最大的优势。