图解Mean-Shift聚类算法

前期回顾

K-Means聚类算法 — 算法原理、质心计算、距离度量、聚类效果评价及优缺点

   与K-Means算法不一样的是,Mean Shift 算法可以自动决定类别的数目。与K-Means算法一样的是,两者都用集合内数据点的均值进行中心点的移动。


声明

以下部分内容来源于:meanshift算法


Mean Shift算法原理

   meanshift 算法其实通过名字就可以看到该算法的核心,mean(均值),shift(偏移),简单的说,也就是有一个点 xx,它的周围有很多个点xix_i 我们计算点xx移动到每个点 xix_i,所需要的偏移量之和,求平均,就得到平均偏移量,(该偏移量的方向是周围点分布密集的方向)该偏移量是包含大小和方向的。然后点xx就往平均偏移量方向移动,再以此为新的起点不断迭代直到满足一定条件结束。

图解如下:
图解Mean-Shift聚类算法
   中心点 xx 周围的小红点就是 xix_i,黄色的箭头就是我们求解得到的平均偏移向量。那个“圆圈”就是我们的限制条件,或者说在图像处理中,就是我们搜索迭代时的窗口大小。不过在opencv中,我们一般用的是矩形窗口,而且是图像,2维的。这里其实不是圆,而是一个高维的球。

步骤:

  1. 首先设定起始点xx,我们说了,是球,所以有半径hh, 所有在球内的点就是 xix_i , 黑色箭头就是我们计算出来的向量 , 将所有的向量 进行求和计算平均就得到我们的meanshift 向量,也就是图中黄色的向量。

  2. 以meanshift向量的重点为圆心,再做一个高维的球,如下图所示,重复上面的步骤,最终就可以收敛到点的分布中密度最大的地方
    图解Mean-Shift聚类算法
    最终结果如下:
    图解Mean-Shift聚类算法