从backproject到meanshift:各自的作用

Posted viewcode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从backproject到meanshift:各自的作用相关的知识,希望对你有一定的参考价值。

分割、识别、跟踪是图像处理中的重要应用。 一般算法步骤是检测点、线、面(区域),分割,然后根据人的先验知识进行识别。

而meanshift算法是利用颜色直方图(颜色空间),形成的目标特征,去搜索和跟踪。

backproject和meanshift算法在opencv中都有实现,而且网上的论述一抓一大把,这里就不在赘述。在理解其理论意义后,重点关注一下其作用和应用场景。

1. backproject的作用

直方图反向投影: 本质上就是利用模板的颜色空间分布,去改变源图像的像素值,进而突出源图像中与模板类似的图像特征。

所以,backproject最明显的作用就是在一整幅图像中突出目标模板的 特征。

利用backproject的结果,可以用于分割检测、跟踪目标等。


2. meanshift的作用

meanshift算法在图像中,可用于分割、轮廓检测、聚类、跟踪、带有不连续性效果的平滑等。


meanshift算法在图像中常被用作物体的跟踪,效果很不错,但其也有几个不足的地方:

a) 当被跟踪物体与背景颜色不大相同时,效果很好;但当被跟踪物体 移动到相近颜色 的背景区域时,效果就不好了。一般的处理方法,可以将静态的背景去除掉,减少背景干扰。

b) 跟踪区域大小的确定是一个难点,跟踪区域过小,就不能很好的获取整个物体的特征;而跟踪区域过大,会把其他无关的区域的特征牵扯进来。

c) 当物体与相机有位置上的相对移动时,会有景深效应,物体在图像中的大小会有变化。针对这个问题,必须对跟踪区域的大小也需要一个scale变化。但是,单纯的对检测区域scale的变化,会降低检测效率,增加误检率。一般现在的方法是根据space和scale两种特征来检测。

d) meanshift 算法本质上是一个最速下降的最优化问题,但也存在局部最优问题。所以,可以选用多个种子点(起始点),同时进行meanshift算法的运算,选取一个最优结果。


3. backproject与meanshift的关联

backproject突出了目标的颜色空间的特征,而meanshift算法 具有实时性、适应性强等特征。


backproject与meanshift结合,有以下优点:

a) 计算量不是很大,可以做到实时跟踪;

b) 应用颜色空间直方图,不受背景移动(目标移动,但大小不变)、旋转、边缘遮挡、变形的影响。


不足:

a) 目标尺度变化,搜索窗口也需要变化,否则,就会搜索失败;

b) 当目标速度较快等情况时,跟踪效果可能会打折扣;

c) 单纯的颜色直方图信息,特征略显得单薄。


改善方法:

a) 目标位置预测机制

b) 不断更新目标模板

c) 利用多尺度窗口和空间特征,扩大meanshift算法的适应性


4. meanshift的效率

单纯的meanshift算法的效率还是不错的,但在处理复杂情况时,如解决局部最优问题、多尺度问题、目标速度过快(前后两图无重叠)等,meanshift算法就需要多次运行,效率会降低,所以,尽量做好前期预处理工作,降低运算量,如去除固定的背景、kalmanfilter预测目标的下一个位置等。


以上是关于从backproject到meanshift:各自的作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在带有 opencv 的 NDK 中使用 meanshift?

39 Meanshift 和 和 Camshift

matlab雷达成像系列 之 BP(BackProjection,后向投影) 成像算法

如何使用 MeanShift 聚类技术去除噪声?

opencv--视频操作

有关meanshift