一、FCM

模糊聚类是目前知识发现以及模式识别等诸多领域中的重要研究分支之一。

模糊C–均值聚类(FCM)是目前比较流行的一种聚类方法。该方法使用了在欧几里得空间确定数据点的几何贴近度的概念,它将这些数据分配到不同的聚类,然后确定这些聚类之间的距离。

FCM算法是一种基于划分的聚类算法,它的思想就是使得被划分到同一簇的对象之间相似度最大,而不同簇之间的相似度最小。

模糊C均值算法是普通C均值算法的改进,普通C均值算法对于数据的划分是硬性的,而FCM则是一种柔性的模糊划分。

情景:
假设现在有一群人,要将他们自动分成大人和小孩两类,以身高作为分类标准。

(若身高大于160cm为大人,小于160cm为小孩)

现有一人身高为100cm,那么根据上述标准,不难判断,他会被划分到小孩一组。但是如果他的身高为159cm,该如何划分呢?

IDEA1:无论如何159cm总是小于160cm,应该被分到小孩组。
IDEA2:159cm很接近160cm,更偏离小孩组,应该被分到大人组。

以上两种说法体现了普通C均值算法(HCM)和模糊C均值算法(FCM)的差异:
普通C均值算法在分类时有一个硬性标准,根据该标准划分,分类结果非此即彼。(IDEA1)
模糊C均值算法更看重隶属度,即更接近于哪一方,隶属度越高,其相似度越高。(IDEA2)

由以上叙述不难判断,用模糊C均值算法来进行组类划分会使结果更加准确!

二、K-Means

与FCM类似,K-Means算法是一种无监督的学习算法,是划分聚类算法的代表算法。采用欧式距离来衡量数据对象之间的相似度,相似度与数据对象间的距离成反比,相似度越大,距离越小。

K-Means算法是一个不断迭代的过程,其核心思想是:

(1)从包含个数据点的数据集中随机选择个数据点作为聚类中心

(2)对于数据集中的数据点,计算与个中心点的距离,使用的距离度量方法是欧氏距离,即直线距离。将数据点与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一簇;

(3)计算每一簇中数据点的平均值,如果数据集为一幅图像,那么每一簇中数据点的平均值就是每一簇中像素点数值和的平均值,将该簇所关联的中心点移到平均值的位置

(4)进行下一次迭代,直至中心点不再变化或达到最大迭代次数停止迭代。

K-Means算法的流程图如下图所示:

FCM和K-Means比较:

FCM是一种基于模糊集合为基础的聚类方法,它是以隶属度来确定每个数据点从属于某个中心。Kmeans这类算法称为硬聚类,而FCM则称为软聚类,是传统硬聚类的一种改进。

为什么叫软跟硬,因为FCM在聚类的时候,会计算每个样本点到中心的隶属度这个隶属度是一个0~100%的数值,而硬聚类则只有0%和100%。

FCM通过这个隶属度可以使我们更加直观的了解一个数据点到中心的可信度

三、Threshold

函数threshold是对单通道的灰度图像进行阙值处理的,剔除图像像素值高于一定值或者低于一定值的像素点。

Threshold,译为阈值 。什么叫阈值呢?通俗点说,就是分界线。就像我们平时考试的时候,会以60分作为一个阈值,超过60分的,会认为是及格,低于60分的就是不及格。这个60分就是阈值,分界值。用这个函数,我们可以令图像灰度大于阈值的,为一个值,低于阈值的,为另一个值。这就可以实现图像的二值化。

如果你细想上面那句话,会发现提到了灰度。因为在使用Threshold的时候,需要使用灰度图像。如果是RGB图像,3个通道上都有值,这个时候,的确不符合Threshold的设计初衷。


double threshold( InputArray src, OutputArray dst,double thresh, double maxval, int type );

第一个参数为输入的图像,Mat类型的即可。

第二个参数为输出图像,且和输入图像有同等大小和类型。

第三个参数为设定阙值的具体值。

第四个参数maxval是第五个参数类型为CV_THRESH_BINARY和CV_THRESH_BINARY_INV时的最大值。

第五个参数是确定生成阙值图像的方法,有以下几种:

1、CV_THRESH_BINARY:dst(x,y)={ maxval(第四个参数值)if(src(x,y)>thresh) ,否则为0}

2、CV_THRESH_BINARY_INV:  dst(x,y)={ 0 if(src(x,y)>thresh) ,否则为maxval}

3、CV_THRESH_TRUNC :            dst(x,y)={ thresh if(src(x,y)>thresh) ,否则为src(x,y)}

4、CV_THRESH_TOZERO:           dst(x,y)={ src(x,y) if(src(x,y)>thresh) ,否则为0}

5、CV_THRESH_TOZERO_INV:   dst(x,y)={ 0 if(src(x,y)>thresh) ,否则为src(x,y) }

FCM和Threshold相关推荐

  1. 基于模糊C均值聚类(FCM)的图像分割原理+python代码详解

    一.模糊 "模糊":一个元素可以不同程度的属于某几个子集,也就是说元素对于集合的隶属度可以在[0,1]上取连续值. 二.步骤 2.1步骤 翻译一下: S1:初始化参数:加权指数m, ...

  2. Java并发编程的艺术_Conc

    Java并发编程的艺术 1 并发编程的挑战 1.1 上下文切换 即使是单核处理器也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制.时间片是CPU分配给各个线程的时间,因为时间片 ...

  3. matlab实现FCM算法

    % author:wangjunzuo % date:2019/5/21 % fuction:fcm algrithmnload data load label maxgen = 100; %???? ...

  4. fcm算法的MATLAB实现,FCM算法的matlab程序(初步)

    FCM算法的matlab程序 1.采用iris数据库 iris_data.txt 5.1 3.5 1.4 0.2 4.9 3 1.4 0.2 4.7 3.2 1.3 0.2 4.6 3.1 1.5 0 ...

  5. cv2.threshold() 阈值:使用Python,OpenCV进行简单的图像分割

    图像分割有多种形式. 聚类.压缩.边缘检测.区域增长.图分区.分水岭等等:(Clustering. Compression. Edge detection. Region-growing. Graph ...

  6. python opencv local_threshold_Python-OpenCV中的cv2.threshold

    主要记录Python-OpenCV中的cv2,threshold()方法:官方文档 cv2.threshold() def threshold(src, thresh, maxval, type, d ...

  7. fcm和firebase_我如何最终使Netlify Functions,Firebase和GraphQL一起工作

    fcm和firebase In a previous post I confessed defeat in attempting to get an AWS Lambda GraphQL server ...

  8. threshold 二值化的实现

    #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" in ...

  9. 服务器收到消息怎么推送给app_「刹那问答24」浅谈FCM推送

    今天和大家聊一下FCM推送,它是GCM的升级版,也是安卓的官方推送,就比如腾讯旗下的几个社交软件,考虑到让用户及时收到消息,而能够让后台常驻,但这不经意间会让耗电量增加,但是有了FCM,根据它的运行机 ...

  10. com.android.phone已停止 vivo,oppo,vivo应用程序终止通知不在android fcm中出...

    Infinix Note 5 (Android One- Oreo) and Oppo F9(Oreo) are not getting push notification if app is kil ...

最新文章

  1. python中的input函数怎么用_python input()函数怎么用,_Python_ 少侠科技
  2. 五大关键物联网应用助力优化数据中心基础设施管理
  3. 区域数据导入功能(POI使用方式)
  4. 如何才能优雅地书写JS代码
  5. Android小項目之---吃飯選哪?--》選擇對話框(附源碼)
  6. 上班上累了,辞职做全职网红!马斯克语出惊人...
  7. Eclipse中错误为 Access restriction 的解决方案
  8. matlab 三维显示原图像_图像分割基础
  9. mybatis SqlMapConfig.xml properties
  10. 第七届 蓝桥杯 省赛 第七题 剪邮票
  11. JavaWeb:生成简单随机图片验证码返回给客户端
  12. std::map,不同的插入方式,会导致崩溃
  13. H5网站模板——前台和后台
  14. 曼昆微观经济学第8版笔记和课后习题答案
  15. 通达信软件里php文件在哪,通达信股票交易软件使用秘籍
  16. AI教程之Meta 的新 AI 将文本转换为视频
  17. 高维曲面: 方向导数, 梯度, 切平面, 法向量
  18. TOYOTA MOTOR CORPORATION Programming Contest 2022(AtCoder Beginner Contest 270) AB题解
  19. 谷歌浏览器翻译插件的安装与使用
  20. #优质代码# Map按Value降序排序,Value相同时按Key排序

热门文章

  1. U盘中病毒,文件夹变成exe文件
  2. 2016二级java题型分数_2016年英语六级考试题型、试卷结构及分值比例
  3. Bugku CTF 每日一题 旋转跳跃 BUUCTF 九连环
  4. 汶川地震亲历者:唯有经历过惊惶失策,才不至于“花容失色
  5. 入门篇——解析Python机器学习中三类无监督学习算法和两个应用实例
  6. ajax请求csv文件,使用Ajax读取csv /文本文件
  7. 三维分布图 matlab,怎样用matlab画三维三点分布图
  8. [OpenAirInterface实战-19] :OAI 软件无线电USRP UHD硬件驱动程序的使用与网络架构
  9. Java基础_week6
  10. 《kiss the rain》与追求完美的矛盾个体