基于盒维数的分形分析与点对距离频率统计系统
项目简介
本项目是一个基于MATLAB环境开发的形态学分析工具,旨在量化分析复杂几何图形或二值图像的空间特征。系统集成了两个核心分析维度:用于表征宏观复杂度的
盒维数(Box-counting Dimension)计算,以及用于揭示微观空间分布规律的
点对距离频率统计。
尽管代码中预置了Sierpinski地毯分形生成功能作为演示,但该框架设计灵活,可扩展应用于材料孔隙分析、纹理特征提取及地理空间点集分布研究。
主要功能特性
1. 分形维数定量分析
采用经典的盒计数算法(Box-counting algorithm),通过多尺度网格覆盖计算,量化图像的自相似特征。系统自动执行线性回归分析,计算分形维数(Slope)及拟合优度(R-square)。
2. 点对距离频率统计
提取图像中的前景特征点,计算样本点对间的欧氏距离。该模块包含智能降采样机制,在大规模数据下平衡计算精度与性能,并统计距离的均值、标准差及极值。
3. 数据可视化仪表盘
系统生成包含四个子图的综合可视化窗口:
- 原始二值图像显示
- 双对数坐标下的分形维数拟合曲线
- 特征点空间分布散点图
- 距离频率分布直方图(含平滑拟合曲线)
4. 自动化结果导出
分析结果(包括整体统计指标和详细的盒计数过程数据)将自动导出至Excel文件,便于后续科研记录与处理。
系统要求与环境
- MATLAB R2016b 或更高版本
- 不需要额外的工具箱(代码内部实现了自定义的距离计算和概率密度模拟函数,摆脱了对 Statistics and Machine Learning Toolbox 的依赖)
使用方法
- 确保MATLAB当前工作路径包含项目文件。
- 直接运行主函数。
- 程序将自动生成合成图像、执行计算、弹出结果窗口,并在当前目录下生成
fractal_analysis_results.xlsx 文件。
代码实现细节与算法逻辑
本项目采用单文件架构,主程序内部集成了数据生成、核心计算、辅助统计及可视化逻辑。以下是各模块的具体实现机制:
数据获取与预处理
程序启动后首先初始化环境,随后调用内部函数生成一个递归深度为4的
Sierpinski地毯 图像(尺寸512x512)作为测试数据。生成的图像被强制转换为逻辑矩阵(Logical Matrix),确保后续二值化操作的准确性。
*注:代码主要逻辑中保留了读取外部图像(imread)的接口注释,实际运行时默认使用合成数据。*
核心算法:盒维数计算
代码通过改变网格盒子的大小($r$),统计覆盖前景像素所需的非空盒子数量($N$)。
- 尺度序列:定义盒子尺寸从2像素开始,以2的幂次递增,直到图像尺寸的一半。
- 网格扫描:利用自定义的
countNonEmptyBoxes 函数,通过块处理(Block Processing)逻辑遍历图像,判断每个网格区域是否存在前景像素。 - 双对数拟合:将尺度倒数($1/r$)与盒子数量($N$)取自然对数。使用
polyfit 进行线性回归,其斜率即为分形维数 $D$。同时计算 $R^2$ 系数以评估拟合的线性度。
核心算法:点对距离统计
该模块分析前景像素在空间上的聚集与离散程度:
- 坐标提取:定位二值图像中所有值为1的像素坐标。
- 随机降采样:为了防止计算量爆炸($O(N^2)$ 复杂度),当特征点数量超过4000个时,代码使用
randperm 随机抽取4000个样本点进行计算。 - 距离矩阵计算:采用自定义函数
customPdist,通过矩阵向量化操作(利用 $(x-y)^2 = x^2 + y^2 - 2xy$ 公式)快速计算点对间的欧氏距离,替代了MATLAB工具箱中的 pdist 函数。 - 分布模拟:代码实现了一个简化的核密度估计逻辑
ksdensity_sim,通过对直方图计数进行移动平均平滑,生成近似的概率密度曲线。
结果导出模块
利用
table 数据结构汇总两类数据:
- Summary Sheet:包含分形维数、拟合优度、平均距离、距离标准差等宏观指标。
- BoxCountingData Sheet:记录不同盒子尺寸下的具体计数值及对数变换后的数据。
程序包含错误捕获机制(try-catch),若系统未安装Excel或写入受限,能够降级在命令行输出关键结果。
关键辅助函数说明
- countNonEmptyBoxes:实现了具体的网格切割与非空判断逻辑,采用显式循环处理图像块。
- customPdist:全矩阵法计算欧氏距离,提取下三角矩阵(不含对角线)作为有效距离数据,优化了内存使用。
- generateSierpinskiCarpet:递归法构建分形几何图形,包含基础模板定义与子块拼接逻辑。