kmeans算法的matlab实践
把图像中所有的像素点进行RGB聚类分析,然后输出看结果
img = imread('qq.png');
%取出R矩阵,并将这个R矩阵拉成一列
imgR = img(:,:,1);
imgR = imgR(:);
%取出G矩阵,并将这个G矩阵拉成一列
imgG = img(:,:,2);
imgG = imgG(:);
%取出B矩阵,并将这个B矩阵拉成一列
imgB = img(:,:,3);
imgB = imgB(:);
%把R G B拼起来 每一行代表每个点的RGB值 总计有 W*H行
imgRGB = [imgR imgG imgB];
%对imgRGB进行聚类算法,默认应该是欧拉距离
[classIndex, classRGB] = kmeans(double(imgRGB), 3);
classRGB = int32(classRGB);
%把3个中心点的RGB值作为输出值,使图像只有那么3种颜色
for i=1:size(classIndex,1)
if(classIndex(i) == 1)
imgRGB(i,:) = classRGB(1,:);
end
if(classIndex(i) == 2)
imgRGB(i,:) = classRGB(2,:);
end
if(classIndex(i) == 3)
imgRGB(i,:) = classRGB(3,:);
end
end
%最后把数据转回图像的矩阵,显示出来
[height,width] = size(img);
width = width/3;
for j=1:width
for i=1:height
img(i,j,1) = imgRGB(i+(j-1)*height,1); %把R提取出来赋回去
img(i,j,2) = imgRGB(i+(j-1)*height,2); %把G提取出来赋回去
img(i,j,3) = imgRGB(i+(j-1)*height,3); %把B提取出来赋回去
end
end
imshow(img);
第二张是上面代码的结果
第三张用3个颜色代表了3个类
第四张,设置K为4,也即会分成4类,搞了4种颜色
kmeans算法的matlab实践的更多相关文章
- K-means算法的matlab程序
K-means算法的matlab程序 在“K-means算法的matlab程序(初步)”这篇文章中已经用matlab程序对iris数据库进行简单的实现,下面的程序最终的目的是求准确度. 作者:凯鲁嘎吉 ...
- K-means算法的matlab程序(初步)
K-means算法的matlab程序 在https://www.cnblogs.com/kailugaji/p/9648369.html 文章中已经介绍了K-means算法,现在用matlab程序实现 ...
- k-means算法及matlab实现
K-means算法很简单,它属于无监督学习算法中的聚类算法中的一种方法吧,利用欧式距离进行聚合啦. 解决的问题如图所示哈:有一堆没有标签的训练样本,并且它们可以潜在地分为K类,我们怎么把它们划分呢? ...
- kmeans算法原理以及实践操作(多种k值确定以及如何选取初始点方法)
kmeans一般在数据分析前期使用,选取适当的k,将数据聚类后,然后研究不同聚类下数据的特点. 算法原理: (1) 随机选取k个中心点: (2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为 ...
- 【K-means算法】matlab代码实例学习
1. MATLAB函数Kmeans 使用方法:Idx=Kmeans(X,K)[Idx,C]=Kmeans(X,K) [Idx,C,sumD]=Kmeans(X,K) [Idx,C,sumD,D]=Km ...
- Kmeans算法的应用实例(Matlab版本)
K-means是一种经典的聚类算法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的值,直至得到最 ...
- 关于k-means聚类算法的matlab实现
在数据挖掘中聚类和分类的原理被广泛的应用. 聚类即无监督的学习. 分类即有监督的学习. 通俗一点的讲就是:聚类之前是未知样本的分类.而是根据样本本身的相似性进行划分为相似的类簇.而分类 是已知样本分类 ...
- 机器学习算法与Python实践之(五)k均值聚类(k-means)
机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...
- k-means算法MATLAB和opencv代码
上一篇博客写了k-means聚类算法和改进的k-means算法.这篇博客就贴出相应的MATLAB和C++代码. 下面是MATLAB代码,实现用k-means进行切割: %%%%%%%%%%%%%%%% ...
随机推荐
- Android:Logcat中找不到本应该输出的Log调试信息
1.有没有设置Logcat的filter, 2.如果选中了自定义的filter,Tag是否和程序中想查看的那条输出信息的Tag相同: 3.Level等级是否设置的太高. filter设置 点击loca ...
- PHP开发者常犯的10个MySQL错误
原文出处: kaiyuanba 欢迎分享原创到伯乐头条 数据库是WEB大多数应用开发的基础.如果你是用PHP,那么大多数据库用的是MYSQL也是LAMP架构的重要部分. PHP看起来很简单,一个初 ...
- 写给系统管理员的25个PHP安全实践
PHP是广泛使用的开源服务端脚本语言.通过HTTP或HTTPS协议,Apache Web服务允许用户访问文件或内容.服务端脚本语言的错误配置会导致各种问题.因此,PHP应该小心使用.以下是为系统管理员 ...
- php无法上传大文件完美解决方案
php.ini无法上传大文件完美解决办法 1.打开php.ini(打开方式就不用说了,百度一大堆) 2.查找post_max_size 表单提交最大数值,此项不是限制上传单个文件的大小,而是针对整个表 ...
- SH1B LMR62014XMFE/NOPB
制造商National Semiconductor (TI) RoHS 输出电压20 V 输出电流1.4 A 输入电压2.7 V to 14 V 开关频率1.6 MHz 最大工作温度+ 85 C 安装 ...
- bat拷贝文件
最近在部署服务器的时候,需要用到把一个站点文件拷贝到其他站点.一个一个手动copy太累人了,写了个简单的批处理文件,基本能达到目的,具体怎么做呢: 1.把需要拷贝到各个站点的文件,单独放到一个目录下. ...
- BZOJ 1923 外星千足虫(高斯消元)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1923 题意:有n个数字,m次测试.每个数字为0或者1.每次测试选出一些数字出来把他们加起 ...
- JAVA操作Excel 可配置,动态 生成复杂表头 复杂的中国式报表表头
转载:开源社区http://www.oschina.net/code/snippet_1424099_49530?p=2代码] [Java]代码 该代码实现了Excel复杂表头的生成 基于sql se ...
- Building Xcode iOS projects and creating *.ipa file from the command line
For our development process of iOS applications, we are using Jenkins set up on the Mac Mini Server, ...
- POJ 1166 The Clocks (爆搜 || 高斯消元)
题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...