基于matlab的彩色图像分割,基于Matlab的彩色图像分割

3 Matlab编程实现

3.1 Matlab编程过程

用Matlab来分割彩色图像的过程如下:

1)获取图像的RGB颜色信息。通过与用户的交互操作来提示用户输入待处理的彩色图像文件路径;

2)RGB彩色空间到lab彩色空间的转换。通过函数makecform()和applycform()来实现; 3)对ab分量进行Kmean聚类。调用函数kmeans()来实现;

4)显示分割后的各个区域。用三副图像分别来显示各个分割目标,背景用黑色表示。3.2 Matlab程序源码

%文件读取

clear;

clc;

file_name = input('请输入图像文件路径:','s');

I_rgb = imread(file_name); %读取文件数据

figure();

imshow(I_rgb); %显示原图

title('原始图像');

%将彩色图像从RGB转化到lab彩色空间

C = makecform('srgb2lab'); %设置转换格式

I_lab = applycform(I_rgb, C);

%进行K-mean聚类将图像分割成3个区域

ab = double(I_lab(:,:,2:3)); %取出lab空间的a分量和b分量

nrows = size(ab,1);

ncols = size(ab,2);

ab = reshape(ab,nrows*ncols,2);

nColors = 3; %分割的区域个数为3

[cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean','Replicates',3); %重复聚类3次

pixel_labels = reshape(cluster_idx,nrows,ncols);

figure();

imshow(pixel_labels,[]), title('聚类结果');

%显示分割后的各个区域

segmented_images = cell(1,3);

rgb_label = repmat(pixel_labels,[1 1 3]);

for k = 1:nColors

你可能感兴趣的:(基于matlab的彩色图像分割)