基于蒙特卡罗算法的光子成像检测系统
项目介绍
本项目是一款基于蒙特卡罗(Monte Carlo)方法的精密光学仿真系统。它通过模拟海量单个光子在散射介质中的随机行走过程,统计并还原光子在探测器靶面上的能量分布。该系统能够精确考量物质的吸收特性、散射特性以及各向异性因子,广泛应用于生物医学影像模拟、大气光学研究及光电传感器性能评估,为复杂介质中的光传输规律提供定量分析手段。
功能特性
- 随机物理建模:完整模拟光子从发射、自由飞行、多次散射到最终探测或失能的全生命周期。
- 高度定制化物理参数:支持自定义吸收系数、散射系数(Henyey-Greenstein模型)、介质厚度等物理变量。
- 先进的能量权重机制:引入光子权重衰减与轮盘赌(Roulette)策略,在保证计算精度的前提下优化仿真效率。
- 多维度性能分析:自动计算点扩散函数(PSF)、调制传递函数(MTF)、信噪比(SNR)及检测效率等关键指标。
- 直观的可视化界面:生成高质量的能量分布热图、三维散射轨迹图、MTF曲线及能量剖面报告。
使用方法
- 启动 MATLAB 编程环境。
- 确保仿真程序所在路径已添加至 MATLAB 工作路径。
- 在命令行窗口直接调用主仿真入口函数。
- 仿真结束后,系统将自动弹出包含四个子图的分析窗口,并在控制台输出包含总光子数、有效权重、系统SNR等核心数据的简报。
系统要求
- MATLAB R2016b 或更高版本。
- 基本计算内存建议 8GB 以上(用于支持海量光子迭代)。
核心实现逻辑与算法细节
#### 1. 光子初始化与步长抽样
程序模拟一个位于坐标原点的点光源,初始射向沿 Z 轴正方向。光子的自由飞行步长采用 Beer-Lambert 定律进行抽样,通过负对数公式 $s = -ln(rand()) / mu_t$ 确定两次碰撞之间的物理距离。
#### 2. 散射与方向更新逻辑
- 散射相位函数:采用经典的 Henyey-Greenstein 散射模型。根据各向异性因子 $g$ 动态抽样散射角 $theta$。当 $g=0$ 时为各向同性散射;当 $g>0$ 时偏向于前向散射。
- 三维旋转转换:利用球面坐标系下的方向余弦更新算法,将局部散射坐标系下的运动方向转换至全局笛卡尔坐标系。
#### 3. 能量交互与边界处理
- 吸收模拟:每一步碰撞后,根据吸收系数与总衰减系数的比例降低光子权重值 $w$,而不是直接销毁光子。
- 边界判定:
*
穿透:当光子 Z 坐标超过介质厚度 $d$ 时,判定为到达探测器平面,记录其位置与剩余权重。
*
反射:当 Z 坐标小于 0 时,判定为光子反射溢出。
- 轮盘赌算法:针对权重低于阈值(0.001)的光子,通过概率统计方法决定其“生死”,有效避免了低权重光子对计算资源的无效占用。
#### 4. 探测器统计分析
- 网格映射:将连续的三维坐标转换为离散的探测器像素坐标。
- 量子效率模拟:应用探测器量子效率(QE)系数,修正最终记录的能量权重。
#### 5. 后处理指标计算
- MTF(调制传递函数):对探测器中心行的线扩散函数(LSF)进行快速傅里叶变换(FFT),获取系统在空间频率域的对比度传递特性。
- SNR(信噪比):基于探测器有效区域的信号均值与噪声标准差计算峰值信噪比。
- 检测效率:统计所有到达探测器的光子权重总和与初始总能量的比值。
可视化展示内容
- 空间分布热图:展示探测器表面二维光子密度的物理分布。
- MTF曲线图:定量呈现成像系统对不同空间频率细节的分辨能力。
- 三维轨迹样本:随机抽取少量光子样本,绘制其在介质内部复杂的散射路径。
- 能量剖视图与报告:展示中心线上的能量分布曲线,并同屏列出关键仿真参数。