基于Lab颜色空间与K-means算法的图像自动化分割系统
项目介绍
本项目实现了一个高效的彩色图像自动化分割系统。其核心逻辑结合了生理视觉特征(CIE Lab颜色空间)与非监督机器学习算法(K-means聚类),能够将图像根据颜色信息的相似性自动划分为不同的语义区域。该系统旨在通过极简的代码结构提供强大的分割能力,广泛适用于科研数据分析、医学影像处理与工业检测任务。
功能特性
- 光照无关性:通过将图像转换至Lab颜色空间并仅提取颜色通道,有效消除了光照不均、阴影和亮度变化对分割结果的干扰。
- 纯代码驱动:核心K-means聚类算法完全采用MATLAB原生数学逻辑实现,不依赖Image Processing Toolbox或其他外部付费工具箱函数(如
kmeans),具有极强的移植性。 - 结果可复现:通过固定随机种子,确保了在相同参数设置下每次运行生成的聚类中心和分割结果完全一致。
- 全方位可视化:系统一次性输出原始图、彩色标签热力图、a-b特征空间分布图以及各独立类别的分割效果图,便于用户直观评估算法性能。
- 自动容错机制:内置异常处理逻辑,若指定的外部图像文件不存在,系统将自动构造一个三色测试图像,确保演示流程永不中断。
使用方法
- 准备环境:打开MATLAB软件。
- 配置参数:在代码顶层修改参数变量,例如设置聚类簇数(默认为3)。
- 运行程序:点击“运行”按钮或在命令行输入主函数名。
- 交互观察:程序会自动弹出可视化窗口,用户可以通过观察“特征空间聚类分布”图来理解颜色是如何在a、b维度上被区分的。
系统要求
- 软件环境:MATLAB R2014b 及以上版本(需支持
rgb2lab 函数)。 - 硬件要求:标准桌面或笔记本电脑,内存 4GB 以上。
- 依赖项:无需任何外部依赖库或第三方插件。
实现逻辑与步骤
系统逻辑严谨,主要分为以下五个核心环节:
- 数据加载与预处理:程序优先读取指定路径的图片,并具备自动容错能力。读取后的RGB图像被视为后续处理的基准。
- 颜色空间转换:利用
rgb2lab 将图像从设备相关的RGB空间转入感知均匀的Lab空间。提取代表红-绿信息的 $a$ 通道和代表黄-蓝信息的 $b$ 通道,并将二维图像矩阵重塑为 $N times 2$ 的特征矩阵。 - K-means 迭代硬分类:
*
随机初始化:从数据点中随机抽取 $k$ 个坐标作为初始质心。
*
距离度量:计算每个像素点到 $k$ 个质心的欧氏距离(平方和)。
*
标签分配:将每个像素归类到距离最近的质心所属类别。
*
均值更新:计算每个簇内所有像素的平均空间位置,并将其设为新的质心坐标。
*
收敛判定:当类别标签不再发生变化或达到 100 次迭代上限时,退出循环。
- 图像掩模合成:遍历每一个类别标签,生成对应的逻辑掩模(Mask)。利用矩阵索引技术,将原图中不属于当前类别的像素全部置为 0(黑色背景),从而分离出目标颜色区域。
- 多维结果展示:利用
subplot 架构,将原始图像、标签分布、散点特征(抽样2000点以保证性能)以及各分割结果并行显示。
关键细节分析
- 特征选择:代码中通过
lab_img(:, :, 2:3) 剔除了 $L$ 通道(亮度),这是实现该系统能够“穿透照度”识别物体本质颜色的技术关键。 - 矩阵化优化:在计算欧氏距离时,使用了大规模矩阵减法与和运算,充分发挥了MATLAB处理多维数组的性能优势,避免了多重嵌套循环。
- 可视化增强:特征分布散点图不仅展示了数据点的分布,还通过红色叉号('rx')标出了最终收敛的聚类中心位置,清晰揭示了算法的分类依据。