基于色彩空间的油菜花图像分割

1.基于k均值的hsv彩色空间油菜花图像分割
原图
在这里插入图片描述
k均值处理之后的效果图
在这里插入图片描述
基于k均值hsv彩色空间处理效果图
在这里插入图片描述
效果显然可见。


close all;
 clear all;
 clc;
 I_rgb=imread('1.png');%读取一张RGB彩图,此时也可以的当成数据矩阵
 %[I_rgb,rect]=imcrop(I_rgb); %裁剪图片
 %rectangle('Position',rect,'LineWidth',2,'EdgeColor','r');
 %imwrite(I_rgb,'截图原图1.jpg')  %保存
 imshow(I_rgb); %显示图像
 title('原始图像'); 
 %I_hsv=rgb2hsv(I_rgb)
 %将彩色图像从RGB转化到lab彩色空间
 C = makecform('srgb2lab'); %设置格式makecform创建一个颜色转换结构
 I_lab = applycform(I_rgb,C); 
 
 %进行K-mean聚类将图像分割成三个区域
 ab = double(I_lab(:,:,2:3)); %取出lab空间的a分量和b分量
 nrows = size(ab,1); %得到ab的行的长度
 ncols = size(ab,2); %得到ab的列的长度
 
 %reshape函数重新调整矩阵的行数、列数、维数。返回一个(nrows*ncols)*2的矩阵ab
 %结果ab中元素是按列从右边ab中得到的。如果右边ab中元素个数没有(nrows*ncols)*2个, 则会引发错误。
 %K表示将X划分为几类,为整数
 %Distance距离测度;sqEuclidean欧氏距离;cluster初始聚类阶段随机选取10%的X的子样本;Replicates聚类重复次数,为整数
 ab = reshape(ab,nrows*ncols,2); %改变矩阵的列数和行数,但是数据总个数不变
 nColors=3; %分割区域为3 
 [cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean','Replicates',3);% matlab自身有这个算法kmeans 算法
 pixel_labels = reshape(cluster_idx,nrows,ncols);%改变矩阵的列数和行数 Idx---N*1的向量,存储的是每个点的聚类标号,center---K*P的矩阵,存储的是K个聚类质心位置
 figure();  
 imshow(pixel_labels,[]), title('聚类结果'
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值