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

使用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.csdn.net/loveliuzz/article/details/78783773


opencv中关于Kmeans的API:

double

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值