图像差分盒维数(DBC)计算系统
项目介绍
本项目是一个基于MATLAB开发的图像分形特征分析工具,专门用于计算数字图像的差分盒维数(Differential Box-Counting, DBC)。该系统将图像的灰度分布视为三维空间中的地形曲面,通过改变观察尺度(网格尺寸)并统计覆盖该曲面所需的“盒子”数量,利用分形几何理论量化图像表面的复杂程度、粗糙度以及空间自相似性。该工具可广泛应用于纹理识别、医学影像分析、材料表面评估等科研领域。
功能特性
- 灵活的图像输入:支持用户交互式选择本地图像文件(jpg, png, bmp, tif),同时内置了基于随机噪声与分型滤波生成的合成纹理演示功能,确保在无外部输入时程序仍可运行。
- 自动化预处理:自动进行灰度化处理,并将图像裁剪为2的整数次幂正方形尺寸(如256x256),以优化分块计算效率。
- 多尺度分析:预设了从2到64像素的多个尺度序列,支持对待处理图像进行深度的多维度空间采样。
- 高精度拟合:采用最小二乘法进行线性回归,提取对数坐标系下的斜率作为分形维数指标。
- 可靠性评估:计算回归系数R²以衡量线性收敛度,并计算局部斜率分布,用以验证图像在不同尺度下的自相似性稳定性。
- 直观的可视化:同步展示原始(处理后)图像与双对数拟合曲线,并以表格形式打印详细的数据记录。
使用方法
- 启动MATLAB软件。
- 运行主程序脚本。
- 在弹出的文件选择框中选择一张灰度或彩色图像;若点击取消,系统将自动生成一张模拟分形图像。
- 程序将自动执行计算并在命令行窗口输出各项统计指标(分形维数、相关系数、计算表格)。
- 在弹出的图形窗口中观察拟合趋势和计算结果。
系统要求
- MATLAB R2016b 或更高版本。
- 安装有 Image Processing Toolbox(图像处理工具箱)。
实现逻辑与算法细节
#### 1. 空间模型构建
程序将二维图像 $I(x, y)$ 映射为三维空间点集 $(x, y, z)$,其中 $z$ 代表对应的灰度值。对于一个 $M times M$ 分辨率且灰度级为 $G=256$ 的图像,整个计算空间被视为一个 $M times M times G$ 的立方体。
#### 2. 网格划分与尺度定义
系统定义了一组步长序列 $s$(如2, 4, 8...),将图像平面划分为 $(M/s) times (M/s)$ 个大小为 $s times s$ 的网格。在每一个网格中,盒子的单位高度 $h$ 计算公式为:
$h = frac{G cdot s}{M}$
这确保了在垂直方向上盒子的缩放比例与水平方向保持一致。
#### 3. 差分盒计数(DBC)核心逻辑
对于每一个网格块 $(i, j)$,程序通过以下步骤计算覆盖该区域所需的盒子数:
- 提取当前网格块内的最大灰度值 $g_{max}$ 和最小灰度值 $g_{min}$。
- 计算最大值落在第几个盒子层级:$l = lceil g_{max} / h rceil$。
- 计算最小值落在第几个盒子层级:$m = lceil g_{min} / h rceil$。
- 计算该网格所需的盒子总数:$n(i, j) = l - m + 1$。
- 累加所有网格的盒子数得到总数 $N_r$。
特别地,针对全黑(灰度值为0)的区域,程序做了鲁棒性处理,确保 $n(i, j)$ 至少为1。
#### 4. 分形维数提取
根据分形理论,$N_r$ 与尺度 $r$ ($r = s/M$) 满足幂律关系 $N_r propto (1/r)^D$。程序通过对数据进行对数变换:
$log(N_r) = D cdot log(M/s) + C$
利用 polyfit 函数对 $log(M/s)$ 和 $log(N_r)$ 进行一元线性拟合,拟合直线的斜率即为最终的分形维数 $D$。
#### 5. 统计输出与验证
- 拟合优度:通过残差平方和计算 $R^2$,值越接近1表示图像的分形特征越明显,计算结果越可靠。
- 局部斜率:计算相邻尺度间的斜率变化,用于分析图像在特定尺度范围内是否存在多重分形特征或结构突变。