Matlab颜色量化

用户名

我目前正在从事与色彩量化相关的项目。该算法暗示为初始步骤k均值算法。直到现在我的代码:

N = 10;
K=7;
I=imread('baboon.bmp');
Idouble = double(I);
mat=zeros(size(I,1)*size(I,2),size(I,3));
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);

mat(:,1)=R(:);
mat(:,2)=G(:);
mat(:,3)=B(:);
[IDX,CENTERS] = kmeans(mat,N);

该算法的下一步是找到最流行的颜色(图像中包含最多像素的颜色)。看起来很简单,但是当我尝试从IDX变量中提取它时,我有点卡住了

雷瑞恩

kmeans返回存储在图像中的质心/代表色,CENTERSIDX为您提供每个像素的成员资格。的每一行CENTERS都是一个质心,并IDX以此告诉您CENTERS在聚类后需要引用图像中的像素的哪一行

如果您想找到“最流行的颜色”,我假设您的意思是最常出现的颜色在这种情况下,mode对您的集群成员向量应用一个操作,然后使用它来索引CENTERS以获取最受欢迎的集群:

idx_popular = mode(IDX);
popular_colour = CENTERS(idx_popular,:);

次音符

kmeans随机算法一样,您的簇质心很可能在每次迭代中都不同-不管它们是一起不同还是相同,但顺序不同,都受该算法的影响。

我建议您kmeans多次运行该算法,以确保您确实获得了最流行的颜色。这可以通过Replicates在运行时指定标志来完成kmeans

num_repeats = 5; %// For example
[IDX,CENTERS] = kmeans(mat, N, 'Replicates', num_repeats);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章