全参数化数字散斑图像生成模拟系统
项目简介
本项目是一个基于 MATLAB 开发的通用数字散斑图案(Digital Speckle Pattern)生成平台。该系统旨在为数字图像相关(DIC)及颗粒图像测速(PIV)等光学测量技术提供标准化的测试数据。通过计算机模拟生成具有特定统计特性的数字散斑图像,系统能够解决实际实验中标准图样获取困难的问题,为评估亚像素位移算法精度、分析散斑尺寸密度影响以及模拟变形前的参考图像提供可靠的数字化工具。
功能特性
- 高精度数学模型:基于二维高斯函数建立散斑强度模型,能够精确模拟光强随空间位置的非线性衰减。
- 参数化配置:支持对图像尺寸、散斑数量、平均半径、半径标准差、峰值亮度、噪声水平及位深等关键参数进行精细控制。
- 物理级模拟:
*
随机分布:利用蒙特卡洛方法在指定区域内随机生成散斑中心坐标。
*
光强叠加:采用光强累加原理处理散斑重叠区域,防止非物理的亮度截断,符合真实光学成像规律。
*
噪声注入:支持添加加性高斯白噪声,模拟传感器热噪声及环境干扰。
- 性能优化:通过局部感兴趣区域(ROI)计算策略(仅计算散斑中心 3 倍半径范围内的光强),显著减少无效计算,提升生成速度。
- 数据量化与输出:
* 支持自适应动态范围拉伸,充分利用位深空间。
* 支持 8 位(uint8)或 16 位(uint16)灰度图像输出。
* 自动保存生成的图像文件及原始光强数据(MAT文件)。
- 全方位可视化分析:提供包含完整图像、局部放大细节、灰度直方图及局部 3D 光强分布的综合交互式图表。
- 内建统计评估:自动计算散斑占空比(覆盖率)及平均灰度梯度,用于评价生成图像的质量。
系统要求
- MATLAB R2016b 或更高版本。
- 无需特殊工具箱,主要依赖 MATLAB 基础数学及图像处理函数(如
imshow, imwrite, gradient)。
使用方法
- 打开 MATLAB 环境,定位到项目所在目录。
- 打开主脚本文件。
- 在脚本顶部的“系统参数设置”区域,根据需求修改以下参数:
*
width,
height: 图像分辨率。
*
speckleCount: 期望生成的散斑颗粒总数。
*
radiusMean,
radiusStd: 散斑半径的平均值和标准差(正态分布)。
*
noiseLevel: 噪声强度系数。
*
bitDepth: 输出图像位深(8 或 16)。
*
randomSeed: 随机种子(用于复现结果)。
- 运行脚本。
- 系统将在控制台输出生成进度、耗时及统计信息,弹出可视化窗口,并在当前目录下保存生成的图像文件与数据文件。
核心算法与实现逻辑
系统的核心实现流程主要包含以下四个阶段,完全对应脚本中的逻辑结构:
1. 参数初始化与环境配置
系统首先清理工作区,并初始化结构体参数。为了保证模拟实验的可重复性,系统会根据设定的种子值(Seed)初始化随机数生成器。
2. 散斑场生成算法(核心)
这是系统最关键的计算部分,逻辑如下:
- 坐标与半径采样:使用
rand 函数在图像范围内 [1, width] 和 [1, height] 生成均匀分布的散斑中心坐标;同时使用 randn 生成符合正态分布的散斑半径,并强制设定最小物理半径(0.5像素)以防止数学奇异性。 - 局部渲染优化:系统并未对每个散斑进行全图计算,而是根据高斯函数的 3σ 准则,仅在每个散斑中心周围
3 * Radius 的矩形包围盒(ROI)内计算光强。这极大地降低了计算复杂度。 - 亚像素高斯建模:在局部网格内,利用公式 $I = I_{peak} cdot exp(-d^2/r^2)$ 计算光强分布,其中 $d^2$ 为网格点到亚像素中心的欧氏距离平方。
- 强度叠加:将计算出的局部高斯光强累加到全局浮点型光强矩阵中,模拟多光源相干或非相干叠加的物理效果。
3. 信号处理流程
- 噪声注入:在累加后的光强矩阵上叠加高斯白噪声。
- 截断与钳位:将所有光强值限制在非负区间,去除因噪声可能产生的负值。
- 动态范围量化:系统计算当前光强矩阵的最大值,计算缩放因子,将浮点型数据线性拉伸并映射到
0-255 (8-bit) 或 0-65535 (16-bit) 的整数空间,模拟 CCD/CMOS 传感器的曝光和量化过程。
4. 统计分析与可视化
- 覆盖率计算:通过阈值分割(最大灰度的10%)计算二值化图像,统计高亮像素占比,即散斑占空比。
- 梯度分析:利用
gradient 函数计算图像梯度的模长并求均值,该指标反映了图像的纹理丰富程度,对 DIC 匹配精度至关重要。 - 多维展示:
*
主视图:显示最终生成的散斑图。
*
局部放大:自动截取图像中心 200x200 区域进行放大展示,便于观察散斑颗粒细节。
*
直方图:统计全图灰度分布,辅助判断曝光是否合理。
*
3D Mesh:选取极小区域(40x40)绘制三维光强曲面,直观展示高斯分布形态。
输出文件说明
- 图像文件 (
digital_speckle_simulation.png):最终生成的合成散斑图像。 - 数据文件 (
speckle_data.mat):包含以下原始变量,方便后续科研分析:
*
imgData: 量化后的图像数据。
*
intensityMap: 未量化的原始浮点光强矩阵。
*
centerX,
centerY: 所有生成的散斑中心真实坐标。
*
radii: 所有散斑的半径值。