使用K-means聚类方法分割图像

本文介绍了如何使用C++和OpenCV的K-means算法进行图像聚类分割。K-means是一种基于距离的聚类算法,对初始聚类中心敏感。通过K-means++改进算法选择聚类中心,确保它们之间距离最大化。OpenCV的kmeans函数提供聚类操作,参数包括数据、类别数、终止条件等。通过将像素点值作为聚类元素,可以将图像分割成多个类别。

使用C++、opencv中的Kmeans进行图像分割

K-means算法的原理

K-means算法是基于距离相似性的聚类算法,通过比较样本之间的相似性,将形式的样本划分到同一个类别中,K-Means算法的基本过程为:

  • 初始化常数 ,随机初始化k个聚类中心。
  • 重复计算以下过程,直到聚类中心不再改变:

               计算每个样本与每个聚类中心之间的相似度,将样本划分到最相似的类别中;

               计算划分到每个类别中的所有样本特征的均值,并将该均值作为每个类新的聚类中心;

  • 输出最终的聚类中心以及每个样本所属的类别。

        在K-Means算法中,需要随机初始化k个聚类中心,而K-Means算法对初始聚类中心的选取较为敏感,若选择的聚类中心不好,则得到的聚类结果会非常差,因此,对K-Means算法提出了很多的改进的方法,如K-Means++算法,在K-Means++算法中,希望初始化的k个聚类中心之间的距离尽可能的大,其具体过程为:

  • 在数据集中随机选择一个样本点作为第一个初始化的聚类中心
  • 选择出其余的聚类中心: 

                    计算样本中的每一个样本点与已经初始化的聚类中心之间的距离,并选择其中最短的距离
                    以概率选择距离最大的样本作为新的聚类中心,重复上述过程,直到 个聚类中心都被确定 

  • 对k个初始化的聚类中心,利用K-Means算法计算最终的聚类中心。

更多关于 K-Means算法的原理可查看:https://www.cnblogs.com/pinard/p/6164214.html

https://blog.youkuaiyun.com/loveliuzz/article/deta

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值