天天看点

【CV算法基础】MeanShift算法理解

前言

       MeanShift(均值漂移)是基于密度的非参数聚类算法,其算法思想是假设不同簇类的数据集符合不同的概率密度分布,找到任一样本点密度增大的最快方向(最快方向的含义就是Mean Shift),样本密度高的区域对应于该分布的最大值,这些样本点最终会在局部密度最大值收敛,且收敛到相同局部最大值的点被认为是同一簇类的成员。MeanShift算法沿着密度上升方向寻找聚簇点。Mean Shift在计算机视觉领域的应用非常广,如图像分割,聚类和视频跟踪。

MeanShift向量

MeanShift算法

 偏移均值

中心更新

核密度估计

颜色概率模型

直方图,HSV;

%计算侯选区域直方图
hist2 = zeros(1,4096);

% 计算候选区域直方图
for i = 1:a
    for j = 1:b
        % rgb 颜色空间量化为 16*16*16 bins
        q_r = fix(double(current_temp(i,j,1))/16);  % fix为趋近0取整函数
        q_g = fix(double(current_temp(i,j,2))/16);
        q_b = fix(double(current_temp(i,j,3))/16);
        q_temp(i, j) = q_r*256 + q_g*16 + q_b;    % 设置每个像素点红色、绿色、蓝色分量所占比重
        % 计算直方图统计中每个像素点占的权重
        hist2(q_temp(i, j)+1) = hist2(q_temp(i, j)+1) + m_wei(i,j);    
    end
end
hist2 = hist2 * C;  % 以上步骤完成了目标核函数直方图      

将rgb颜色空间量化为16*16*16bins=4096,即每个颜色通道共有4个bit,共有16个bins,所以每个通道的像素值需要除以16,可以放在256/16=16个bins中。而q_temp共有12bits,表示每个像素点的RGB数值组成,每四位分别表示RGB的颜色分量,hist表示每个量化像素点的权重。

 直方图归一化

%Normalize
R = hist / sum(hist);      

改进算法:CamShift

Mean Shift是针对单张图片寻找最优迭代结果,而Camshift则是针对视频序列来处理,并对该序列中的每一帧图片都调用Mean Shift来寻找最优迭代结果。

改进算法:ASMS(Adaptive Scale Mean Shift)

Meanshift算法的应用

优缺点

优点:

1、与K-Means算法不一样的是,MeanShift算法可以自动决定类别的数目。

2、不受异常值影响。

3、没有局部最小值。

缺点:

1、在高维空间数据下表现不佳。

2、无法指定聚类的数量。

优点:

不需要设置簇类的个数;

可以处理任意形状的簇类;

算法只需设置带宽这一个参数,带宽影响数据集的核密度估计

算法结果稳定,不需要进行类似K均值的样本初始化

缺点:

聚类结果取决于带宽的设置,带宽设置的太小,收敛太慢,簇类个数过多;带宽设置的太大,一些簇类可能会丢失。

对于较大的特征空间,计算量非常大。

参考

1. ​​MeanShift算法​​;

2. ​​基于 YOLOv3 和 ASMS 的 目标跟踪算法​​;

3. ​​MeanShift跟踪算法​​;

4. ​​Meanshift,聚类算法​​;

继续阅读