图解Mean-Shift聚类算法
前期回顾
K-Means聚类算法 — 算法原理、质心计算、距离度量、聚类效果评价及优缺点
与K-Means算法不一样的是,Mean Shift 算法可以自动决定类别的数目。与K-Means算法一样的是,两者都用集合内数据点的均值进行中心点的移动。
声明
以下部分内容来源于:meanshift算法
Mean Shift算法原理
meanshift 算法其实通过名字就可以看到该算法的核心,mean(均值),shift(偏移),简单的说,也就是有一个点 ,它的周围有很多个点 我们计算点移动到每个点 ,所需要的偏移量之和,求平均,就得到平均偏移量,(该偏移量的方向是周围点分布密集的方向)该偏移量是包含大小和方向的。然后点就往平均偏移量方向移动,再以此为新的起点不断迭代直到满足一定条件结束。
图解如下:
中心点 周围的小红点就是 ,黄色的箭头就是我们求解得到的平均偏移向量。那个“圆圈”就是我们的限制条件,或者说在图像处理中,就是我们搜索迭代时的窗口大小。不过在opencv中,我们一般用的是矩形窗口,而且是图像,2维的。这里其实不是圆,而是一个高维的球。
步骤:
-
首先设定起始点,我们说了,是球,所以有半径, 所有在球内的点就是 , 黑色箭头就是我们计算出来的向量 , 将所有的向量 进行求和计算平均就得到我们的meanshift 向量,也就是图中黄色的向量。
-
以meanshift向量的重点为圆心,再做一个高维的球,如下图所示,重复上面的步骤,最终就可以收敛到点的分布中密度最大的地方
最终结果如下: