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进行切割: %%%%%%%%%%%%%%%% ...
随机推荐
- 套题T3
秋实大哥与线段树 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- *EditPlus注册码在线生成
http://www.jb51.net/tools/editplus/
- Linux卸载系统自带的httpd的方法
卸载linux自带的httpd服务: 方法一: #rpm -e httpd 结果,出现以下错误 httpd-mmn = 20020628 is needed by (installed) mod_pe ...
- 【C#设计模式——创建型模式】抽象工厂模式
抽象工厂模式比工厂模式具有更高层次的抽象性.当要返回一系列相关类中的某一个,而每个类都能根据需要返回不同的对象时,可以选择这种模式.直接进入示例. 示例描述:完成花园的规划,多种花园种类,每个里面多种 ...
- NDK(19)简单示例:ndk调用java基本方法、数组;使用stl、访问设备
一.ndk调用java类示例 1,调用基本方法 /* * Class: com_example_ndksample_MainActivity * Method: ndkFindJavaClass * ...
- C#获取本机IP以及无线网ip
1 private void GetIP() 2 { 3 string hostName = Dns.GetHostName();//本机名 4 //System.Net.IPAddress ...
- heatmap.2
heatmap.2 {gplots} R Documentation Enhanced Heat Map Description A heat map is a false color image ( ...
- fiddler for mac
Fiddler 是一免费的web调试工具.并且兼容所有浏览器.系统和平台. Fiddler 是基于微软的 .Net 技术开发的,没办法直接在 Mac/Linux 下使用.本文介绍一些替代方案(这些方案 ...
- JDBC 事务控制
一.简介: 前面一遍提到了jdbc事务相关的概念.从中了解到事务应具有ACID特性.所以对于javaweb开发来说,某一个service层的方法,应该是一个事务,应该是具有原子性的.特别是当一个ser ...
- 最大流 Dinic + Sap 模板
不说别的,直接上模板. Dinic+当前弧优化: struct Edge{ int x,y,c,ne; }e[M*]; int be[N],all; int d[N],q[N]; int stack[ ...