kmeans聚类

番茄果实在成熟的时候有红色和青色的果实,将番茄植株图像通过kmeans聚类分割,分割出红色果实、青色果实和叶片、背景。

%彩色图像分割

clear;

clc;

set(0,'defaultfigurecolor','w') %图片背景显示白色

I_rgb = imread('自己的图片位置'); %读取文件数据

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次,聚类参数设置为'distance'距离,'sqEuclidean'欧式距离(默认时,采用此距离方式)

%'Replicates'聚类重复次数

pixel_labels = reshape(cluster_idx,nrows,ncols);

figure();

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

%显示分割后的各个区域

segmented_images = cell(1,3);%cell中的4表示4个区域

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

for k = 1:nColors

color = I_rgb;

color(rgb_label ~= k) = 0;

segmented_images{k} = color;

end

figure(),imshow(segmented_images{1});

% title('区域1');

figure(),imshow(segmented_images{2});

% title('区域2');

figure(),I=imshow(segmented_images{3});

imwrite(segmented_images{2},'./1.png');

% title('区域3');

% %当盆与植株颜色过于接近时需要分为4个区域

% figure(),imshow(segmented_images{4}), title('分割结果——区域4');

% subplot(221),imshow(segmented_images{1}), title('区域1');

% subplot(222),imshow(segmented_images{2}), title('区域2');

% subplot(223),imshow(segmented_images{3}), title('区域3');

% %当盆与植株颜色过于接近时需要分为4个区域

% subplot(224),imshow(segmented_images{4}), title('区域4');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值