github数据集: 智能算法的课件和参考资料以及实验代码
我们可以用k-means算法将灰度图分成N个梯度
我们知道,一般的彩色图像指的是在RGB颜色空间下的图像,这样的图像三个通道分别是R(red)G(green)B(blue)。而灰度图指的是单通道的,将三通道的图像转为单通道常用方法有YUV法和平均法。
如何将一幅彩色图像转换为灰度图呢?根据人眼对红绿蓝三色的敏感程度,可以使用以下方式进行转换:
Gray = R*0.299+G*0.587+B*0.114
这也是最常用的一种转换,另外还有一种常用的转换叫平均值法,即取去红绿蓝三色的平均值为灰度:
Gray=(R+G+B)/3;
下面使用K-means算法将lenna256.bmp图像聚类成N类来处理:
close all
clear all
clc
I=imread('lenna256.bmp'); % 从指定的文件名(这里是相对目录,即当前程序所在目录)读取图像
I=im2double(I); % 把灰度图像的数据类型转换成双精度浮点数类型
J=zeros(size(I)); % 256*256 8位的灰度图
N=4; % 聚类成N类
[m,n]=size(I); % m=256,n=256
center=zeros(1,N);
% 下面初始化簇中心,有N个簇中心
for i&