计算机视觉基础知识(九)--图像聚类算法

1.分类与聚类 

分类

  • 从特定的数据中挖掘模式,给出判断的过程

分类学习的主要过程

  1. 训练数据集存在一个类标记号;
  2. 判断其是正向数据集,还是负向数据集;
  3. 对数据集进行学习训练,并构建一个训练模型;
  4. 通过该模型对数据集进行预测,并计算结果的性能;

聚类概述

  • 目的是把数据分开;
  • 事先不知到如何去分;完全由算法来判断数据之间的相似性;
  • 相似的数据放到一起;
  • 在聚类的结论出来之前,完全不知到每一类的特点;
  • 对聚类的结果需要由人的经验来分析,各类的特点;
  • 聚类的思想是“物以类聚”;
  • 分类是通过标签来训练得到一个模型;
  • 再对新数据进行预测;
  • 分类训练的数据具有标签;

 聚类

  • 广义上,聚类是将数据中在某些方面的相似的数据成员集中在一起;
  • 一个聚类是一些数据实例的集合;
  • 处于相同聚类中的数据元素彼此相似;
  • 处于不同聚类中的元素彼此不同;
  • 聚类中没有表示类别的分类或分组信息;
  • 这些数据都没有标签;
  • 聚类通常被归为无监督学习(Unsupervised Learning);

聚类算法分类

  1. 原型聚类:K均值聚类算法
  2. 层次聚类
  3. 密度聚类

2.K-means聚类

  • 最常用的聚类算法;
  • 起源于信号处理;
  • 目标是将数据点划分为k个类簇;
  • 是一种原型聚类算法;

K-means算法优点

  • 简单,便于理解;
  • 运算速度快;

K-means算法缺点:

  • 要在聚类之前指定聚集的类簇数量;

K-means聚类算法的流程

  1. 确定k值,即将数据集聚成k个类簇或者小组;
  2. 从数据集中随机选择k个数据点作为质心(centroid)或数据中心;
  3. 分别计算每个数据点到每个质心的距离,将每个点划分到最近质心的小组;
  4. 当每个质心都聚集了一些点后,重新定义算法选择新的质心;
  5. 对每个簇,计算均值,即可得到k个新的质点;
  6. 迭代执行第3步到第5步,直到迭代终止条件满足为止(聚类结果不在变化);

k-means聚类与图像处理

  • 图像处理中,通过k-means可以实现:
  • 图像分割:
  • 通过k-means可以将像素点聚类成k个簇;
  • 使用每个簇内的质心点来替换簇内所有像素点;
  • 在不改变分辨率的情况下,量化压缩图像颜色;
  • 实现图像颜色层级分割;
  • 图像聚类;
  • 图像识别;

k-means聚类与图像处理优点:

  1. 是解决聚类问题的一种经典算法,简单、快速;
  2. 对大数据集,该算法效率较高;
  3. 结果簇密集时,效果较好;

k-means聚类与图像处理缺点:

  1. 必须事先给出k(要生成的簇的数目);
  2. 对噪声和孤立点数据敏感;

3.层次聚类

  • 一种直观的算法
  • 一层一层的进行聚类;

层次法(Hierachical methods)

  • 先计算样本之间的距离;
  • 每次将距离最近的点合并到同一个类;
  • 计算类与类之间的距离;
  • 将距离最近的类合并为一个大类;
  • 不停的合并,直到合成了一个类;

类间距离的计算方法

  • 最短距离法
  • 最长距离法
  • 中间距离法
  • 类平均法;

层次聚类算法的分类:

根据层次分解的顺序分为:

  • 自下底向上:凝聚的层次聚类算法(agglomerative or bottom-up)
  • 自上向下:分裂的层次聚类算法(divisive or top-down)

凝聚层次聚类的步骤

策略

  • 先将每个对象作为一个簇;
  • 合并这些原子簇为越来越大的簇;
  • 直到所有对象都在一个簇中;
  • 或者某个终结条件被满足;

概述

  • 绝大多数层次聚类属于凝聚型层次聚类;
  • 只在簇间相似性的定义上不同;

采用最小距离的凝聚层次聚类的算法流程:

  1. 将每个对象作为一类,计算两两之间的最小距离;
  2. 将距离最小的两个类合并成一个新类;
  3. 重新计算新类与所有类之间的距离;
  4. 重复2和3,直到所有的类最后合并成一类;

凝聚型层次聚类算法的特点

  • 没有类似k-means的全局目标函数;
  • 没有局部极小问题
  • 或者没有很难选择初始点的问题;
  • 合并的操作是单向的,一旦合并不能撤销;
  • 计算存储的代价昂贵;

层次聚类的优缺点

优点

  1. 距离和规则的相似度容易定义,限制少
  2. 不需要预先制定聚类数量;
  3. 可以发现类的层次关系;

缺点:

  1. 计算复杂度太高;
  2. 算法可能聚类成链状;

K-means 与层次聚类

  • 每一中聚类都有其特定的数据结构
  • 服从高斯分布的数据用k-means进行聚类效果较好;
  • 类别之间存在层结构的数据,层次聚类效果较好;

4.密度聚类 DBSCAN

两个参数

  • \xi

  • minPts(形成高密度区域所需要的最少点数)

算法的策略

  • 由一个任意未被访问的点开始;
  • 探索这个点的 \xi 邻域;
  • 如果该 \xi 邻域内有足够多的点;
  • 建立一个新的聚类;
  • 否则,该点被标为杂音;
  • 该杂音点之后可能被发现在其他的 \xi 邻域内;
  • 而该 \xi 邻域可能有足够多的点;
  • 那么该点取消杂音标签,加入该聚类;

优缺点

优点

  • 对噪声不敏感

缺点

  • 聚类的结果与参数关系较大;

5.谱聚类

  1. 根据数据构造一个图结构(graph);
  2. graph的每一个节点对应一个数据点;
  3. 将相似的点连接起来;
  4. 边的权重用于表示数据之间的相似度;
  5. 把该graph用邻接矩阵的形式表示出来,记为w;
  6. 把w的每一列元素加起来得到N个数;
  7. 把他们放在对角线上(其他地方都是零);
  8. 组成一个N*N的矩阵,记为D,并令L=D-W;
  9. 求出L的前k个特征值,以及对应的特征向量;
  10. 把这k个特征(列)向量排列在一起,组成一个N*K的矩阵;
  11. 将其中的每一行看做k维空间中的一个向量;
  12. 使用K-means算法进行聚类;
  13. 聚类的结果中每一行所属的类别就是原graph中的节点(也就是最初的N个数据点)分别所属的类别。

谱聚类的过程

  1. 构图,将采样点数据构造成一张网图;
  2. 切图,将网图按切边规则,切分成不同的图;
  3. 不同的子图就是聚类的结果;

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在MATLAB中,要对一张彩色图像进行层次聚类,首先需要将图像加载到MATLAB中。可以使用imread函数将图像加载为一个三维矩阵,其中每个元素表示图像的像素值。 接下来,可以使用将图像从RGB颜色空间转换为Lab颜色空间。可以使用rgb2lab函数来实现这一点。在Lab颜色空间中,颜色信息和亮度信息分开表示,这有利于后续的聚类。 然后,我们可以使用kmeans函数来对Lab颜色空间中的像素进行聚类。kmeans函数需要指定聚类的数目,这决定了最终的聚类结果的多少。可以尝试不同的聚类数目,以得到最佳的聚类结果。 聚类之后,可以将每个像素分配到一个聚类中心。这样,每个像素都有一个簇标签,表示它所属的聚类。 最后,可以根据聚类的结果将像素重新映射到RGB颜色空间,以得到彩色图像。可以使用lab2rgb函数来实现这一点。该函数将Lab颜色空间中的像素值转换为RGB颜色空间中的像素值。 综上所述,要在MATLAB中对一张彩色图像进行层次聚类,可以按照上述步骤进行操作。这样就可以得到图像的层次聚类结果,并将像素重新映射为彩色图像。 ### 回答2: Matlab是一种强大的编程语言和环境,可以用来进行图像处理和数据分析。在Matlab中,可以使用层次聚类算法对一张彩色图像进行聚类分析。 层次聚类是一种自底向上的聚类方法,它将相似的数据点逐步合并为更大的簇。对于彩色图像,可以使用RGB或者HSV三个通道的像素值来描述每个像素的颜色。首先,需要将图像转换为合适的颜色空间。例如,可以将图像从RGB颜色空间转换为HSV颜色空间,其中H表示色调,S表示饱和度,V表示亮度。 然后,可以使用层次聚类算法对转换后的图像进行聚类。在Matlab中,可以使用自带的函数`clusterdata`来实现层次聚类。该函数可以根据要求选择不同的距离度量和聚类方法,并返回聚类结果。 在层次聚类完成后,可以通过可视化来展示聚类结果。可以绘制不同聚类簇的颜色编码图像,或者将图像中的每个像素标记为所属簇的索引值。 总结来说,使用Matlab对一张彩色图像进行层次聚类的过程可以分为以下几个步骤:图像颜色空间的转换、选择合适的距离度量和聚类方法、调用`clusterdata`函数进行聚类、可视化聚类结果。这样可以帮助我们更好地理解图像中的颜色分布和聚类特点。 ### 回答3: MATLAB可以通过使用Image Processing Toolbox中的功能对一张彩色图像进行层次聚类处理。 首先,我们需要将彩色图像加载到MATLAB中。这可以通过使用imread函数来实现,该函数可以将图像文件读取为矩阵形式。 接下来,我们可以使用rgb2lab函数将RGB颜色空间转换为Lab颜色空间。由于Lab颜色空间与人眼感知更加相关,因此在聚类过程中使用Lab颜色空间可以提供更好的结果。 然后,我们可以使用kmeans函数执行聚类。kmeans函数是一种常用的聚类算法,它可以将数据点分为指定数量的簇。我们可以设置簇的数量为我们想要的层次聚类的数量。 在执行聚类之后,我们可以使用reshape函数将聚类结果重新构造为图像的形状。然后,我们可以使用label2rgb函数将标签映射为颜色,以生成可视化的聚类结果。 最后,我们可以使用imshow函数显示聚类结果。 综上所述,通过适当地使用MATLAB中的函数和工具箱,我们可以对一张彩色图像进行层次聚类处理,并以可视化的方式展示聚类结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值