Meanshift,聚类算法

Meanshift,聚类算法记得刚读研究生的时候,学习的第一个算法就是meanshift算法,所以一直记忆犹新,今天和大家分享一下Meanshift算法,如有错误,请在线交流.MeanShift算法,一般是指一个迭代的步骤,即

大家好,又见面了,我是你们的朋友全栈君。

记得刚读研究生的时候,学习的第一个算法就是meanshift算法,所以一直记忆犹新,今天和大家分享一下Meanshift算法,如有错误,请在线交流。

Mean Shift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束.

 1. Meanshift推导

给定d维空间Rd的n个样本点 ,i=1,…,n,在空间中任选一点x,那么Mean Shift向量的基本形式定义为:                             

<span role="heading" aria-level="2">Meanshift,聚类算法

 Sk是一个半径为h的高维球区域,满足以下关系的y点的集合,

<span role="heading" aria-level="2">Meanshift,聚类算法

k表示在这n个样本点xi中,有k个点落入Sk区域中.

以上是官方的说法,即书上的定义,我的理解就是,在d维空间中,任选一个点,然后以这个点为圆心,h为半径做一个高维球,因为有d维,d可能大于2,所以是高维球。落在这个球内的所有点和圆心都会产生一个向量,向量是以圆心为起点落在球内的点位终点。然后把这些向量都相加。相加的结果就是Meanshift向量。

如图所以。其中黄色箭头就是Mh(meanshift向量)。

<span role="heading" aria-level="2">Meanshift,聚类算法

再以meanshift向量的终点为圆心,再做一个高维的球。如下图所以,重复以上步骤,就可得到一个meanshift向量。如此重复下去,meanshift算法可以收敛到概率密度最大得地方。也就是最稠密的地方。

<span role="heading" aria-level="2">Meanshift,聚类算法

最终的结果如下:

<span role="heading" aria-level="2">Meanshift,聚类算法

Meanshift推导:

 把基本的meanshift向量加入核函数,核函数的性质在这篇博客介绍:http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495788.html

那么,meanshift算法变形为<span role="heading" aria-level="2">Meanshift,聚类算法

                                                         (1)

解释一下K()核函数,h为半径,Ck,d/nh为单位密度,要使得上式f得到最大,最容易想到的就是对上式进行求导,的确meanshift就是对上式进行求导.<span role="heading" aria-level="2">Meanshift,聚类算法

(2)             

令:

<span role="heading" aria-level="2">Meanshift,聚类算法

K(x)叫做g(x)的影子核,名字听上去听深奥的,也就是求导的负方向,那么上式可以表示

<span role="heading" aria-level="2">Meanshift,聚类算法

对于上式,如果才用高斯核,那么,第一项就等于fh,k<span role="heading" aria-level="2">Meanshift,聚类算法

第二项就相当于一个meanshift向量的式子:

<span role="heading" aria-level="2">Meanshift,聚类算法

 那么(2)就可以表示为<span role="heading" aria-level="2">Meanshift,聚类算法

下图分析<span role="heading" aria-level="2">Meanshift,聚类算法的构成,如图所以,可以很清晰的表达其构成。

<span role="heading" aria-level="2">Meanshift,聚类算法

要使得<span role="heading" aria-level="2">Meanshift,聚类算法=0,当且仅当<span role="heading" aria-level="2">Meanshift,聚类算法=0,可以得出新的圆心坐标:<span role="heading" aria-level="2">Meanshift,聚类算法

                          (3) 

 

上面介绍了meanshift的流程,但是比较散,下面具体给出它的算法流程。

  1. 选择空间中x为圆心,以h为半径为半径,做一个高维球,落在所有球内的所有点xi
  2. 计算<span role="heading" aria-level="2">Meanshift,聚类算法,如果<span role="heading" aria-level="2">Meanshift,聚类算法<ε(人工设定),推出程序。如果<span role="heading" aria-level="2">Meanshift,聚类算法>ε, 则利用(3)计算x,返回1.

 

2.meanshift在图像上的聚类:

真正大牛的人就能创造算法,例如像meanshift,em这个样的算法,这样的创新才能推动整个学科的发展。还有的人就是把算法运用的实际的运用中,推动整个工业进步,也就是技术的进步。下面介绍meashift算法怎样运用到图像上的聚类核跟踪。

一般一个图像就是个矩阵,像素点均匀的分布在图像上,就没有点的稠密性。所以怎样来定义点的概率密度,这才是最关键的。

如果我们就算点x的概率密度,采用的方法如下:以x为圆心,以h为半径。落在球内的点位xi   定义二个模式规则。

(1)x像素点的颜色与xi像素点颜色越相近,我们定义概率密度越高。

(2)离x的位置越近的像素点xi,定义概率密度越高。

所以定义总的概率密度,是二个规则概率密度乘积的结果,可以(4)表示

<span role="heading" aria-level="2">Meanshift,聚类算法

(4)

其中:<span role="heading" aria-level="2">Meanshift,聚类算法代表空间位置的信息,离远点越近,其值就越大,<span role="heading" aria-level="2">Meanshift,聚类算法表示颜色信息,颜色越相似,其值越大。如图左上角图片,按照(4)计算的概率密度如图右上。利用meanshift对其聚类,可得到左下角的图。

<span role="heading" aria-level="2">Meanshift,聚类算法

<span role="heading" aria-level="2">Meanshift,聚类算法

<span role="heading" aria-level="2">Meanshift,聚类算法

 

<span role="heading" aria-level="2">Meanshift,聚类算法

 


如有问题,可在线讨论。作者:BIGBIGBOAT/Liqizhou

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154372.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • php代码执行函数_php代码如何运行

    php代码执行函数_php代码如何运行**php代码执行函数解析**​一、代码执行漏洞原理:用户输入的数据被当做后端代码进行执行<?php@eval($_REQUEST[8])?>//其实一句话木马的本质就是一个代码执行漏洞。用户输入的数据被当做代码进行执行。这里提一下RCE(remotecommand/codeexecute)远程命令或者代码执行。现在只要渗透的最终情况可以实现执行命令或者是代码都属于RCE,例如代码执行、文件包含、反序列化、命令执行,甚至是写文件Getshell都可以属于RCE在PHP存在诸多

  • Python Django 搭建文件下载服务器[通俗易懂]

    本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末PythonDjango搭建文件下载服务器环境win10Python:3.6.7Django:2.2.7运行效果1、创建Django项目#创建Download项目django-adminstartprojectDownload#创建down_appapppythonmanage.pystartappdown_app2、修改配置文件:settings.pyDownload/D

  • 免备案CDN推荐+教程

    免备案CDN推荐+教程文章目录前言一、CDN1.注册2.配置二、域名解析三、Nginx配置修改前言最近在搭建个人博客,到备案的时候发现困难重重(很麻烦),然后就想着用点其他法子。于是乎网上搜到了这个免备案CDN,花了一会部署完成后,感觉还不错就记录下来。附上我的博客链接:chasezc,功能还不是很完善,还在继续补充。一、CDN在网上查到的这个叫Nodecache,主要提供CDN、DNS、SSL证书等业务,亚太节点有我们喜欢的香港线路,速度很不错。1.注册首先我们去官网上注册:https://www.node

  • 《剑指offer》–二维数组中的查找、从头到尾打印链表、重建二叉树、旋转数组的最小数字

    《剑指offer》–二维数组中的查找、从头到尾打印链表、重建二叉树、旋转数组的最小数字

  • Cadence IC设计环境搭建( IC617+MMSIM151+Calibre2015)

    Cadence IC设计环境搭建( IC617+MMSIM151+Calibre2015)做IC版图设计,必不可少的环境搭建,是在Linux上进行开发,此类的安装教程网上比较少,自己也是跌跌撞撞,最终耗了一天的时间才装好呵呵呵~,期间主要参考了下面两篇文章。1.知乎文章2.简书文章3.安装需要的文件:链接:https://pan.baidu.com/s/14acWcuHvXGRkqf_8zkveDQ提取码:uahd以下为我的使用画面…

  • CTS测试方法「建议收藏」

    ①执行完整的CTS测试计划:runcts–planCTS②单独测试某一个Module:runcts–module/-m+modulename③单独测试某一Test下的方法:runcts–module/-m+modulename–test/-t+testname#methodname④F…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号