基于四叉树分解与相邻合并的图像区域分割系统
项目介绍
本项目是一个在MATLAB环境下实现的图像分割工具,采用经典的“分裂-合并”(Split-and-Merge)算法。该系统通过递归地将图像划分为同质区域(四叉树分解),随后根据相邻区域间的统计相似性进行合并,从而实现对图像中不同目标的有效分割。
功能特性
- 交互式图像读取:支持用户通过图形界面选择本地图像,并针对非2的幂次尺寸图像进行自动平衡缩放,以满足四叉树算法的数学要求。
- 自动化图像预处理:内置灰度化和归一化处理流程,确保算法在多种输入环境下具有鲁棒性。
- 四叉树分裂算法:根据灰度同质性准则(像素最大值与最小值的差值)进行区域划分,支持设置最小块尺寸以防止过度分割。
- 区域相邻合并机制:基于并查集(Union-Find)数据结构实现,通过遍历相邻像素标签,对满足灰度差值阈值的相邻区域进行逻辑合并。
- 多视图结果展示:同步显示原始图像、分裂结构图、伪彩色分割结果以及分割效果叠加图。
- 数据统计报表:自动计算并输出每个分割区域的编号、像素面积和平均灰度值。
使用方法
- 在MATLAB中运行主程序。
- 在弹出的文件选择框中选择一张图像(支持jpg、png、bmp格式);若取消选择,系统将自动加载默认图像进行演示。
- 程序会自动执行分裂与合并逻辑,并弹出可视化窗口。
- 在MATLAB控制台查看详细的区域统计报表。
- 如需调整分割精度,可根据需求修改程序开头的分裂阈值、合并阈值和最小块尺寸参数。
系统要求
- MATLAB R2016b 或更高版本。
- 图像处理工具箱 (Image Processing Toolbox)。
实现逻辑说明
系统的工作流程严格遵循以下五个逻辑阶段:
- 图像预处理阶段:
读取图像后,系统首先将其转换为双精度灰度图。由于四叉树分解要求图像宽度和高度必须是2的幂次方,程序计算最接近当前尺寸的幂次方值,并利用插值算法对图像进行尺寸调整。
- 四叉树分裂阶段:
利用内置的分解函数,系统根据设定的分裂阈值对图像进行递归检查。如果一个块内的最大灰度值与最小灰度值之差超过阈值且块尺寸大于最小设定值,则该块被分裂为四个子块。
- 区域属性初始化:
分裂完成后,系统为每一个叶子节点块分配唯一的ID,并记录其左上角坐标、块尺寸、像素总数以及平均灰度。这些信息被存储在专门定义的结构体数组中。
- 区域合并阶段:
这是算法的核心部分。程序通过全图扫描查找空间上相邻的不同区域标识。对于相邻的两个区域,计算它们平均灰度水平之差。如果差异小于设定的合并阈值,则利用并查集算法将这两个区域的根节点进行合并。并查集采用了路径压缩技术,以优化大量区域合并时的搜索效率。
- 结果生成与统计:
合并完成后,系统重新遍历像素标签,将属于同一逻辑集合的像素重映射为连续的标签。随后计算每个最终区域的几何与统计属性,生成直观的伪彩色图像和详细的文本报表。
关键实现细节与算法分析
- 空间邻接性判断:
在合并阶段,程序通过扫描水平方向(i, j 与 i, j+1)和垂直方向(i, j 与 i+1, j)的像素对。这种方式确保了所有四邻域内的潜在合并机会都能被捕捉。
- 并查集(Union-Find)应用:
为了高效处理数千个微小区域的合并,程序实现了带有路径压缩的根节点查找函数。这使得判断两个不规则形状的区域是否属于同一连通体的时间复杂度近似为常数。
- 同质性准则:
分裂准则基于块内极差(Range),而合并准则基于区域均值(Mean)。这种组合既能保证初始分裂对边缘的敏感度,又能保证合并阶段对整体色调一致性的把握。
- 叠加可视化技术:
为了便于观察分割边界与原图的对应关系,系统采用了Alpha混合技术,将伪彩色分割图以50%的透明度覆盖在原始图像上方,提供了极佳的视觉反馈。