分割、识别、跟踪是图像处理中的重要应用。 一般算法步骤是检测点、线、面(区域),分割,然后根据人的先验知识进行识别。
而meanshift算法是利用颜色直方图(颜色空间),形成的目标特征,去搜索和跟踪。
backproject和meanshift算法在opencv中都有实现,而且网上的论述一抓一大把,这里就不在赘述。在理解其理论意义后,重点关注一下其作用和应用场景。
直方图反向投影: 本质上就是利用模板的颜色空间分布,去改变源图像的像素值,进而突出源图像中与模板类似的图像特征。
所以,backproject最明显的作用就是在一整幅图像中突出目标模板的 特征。
利用backproject的结果,可以用于分割检测、跟踪目标等。
meanshift算法在图像中,可用于分割、轮廓检测、聚类、跟踪、带有不连续性效果的平滑等。
meanshift算法在图像中常被用作物体的跟踪,效果很不错,但其也有几个不足的地方:
a) 当被跟踪物体与背景颜色不大相同时,效果很好;但当被跟踪物体 移动到相近颜色 的背景区域时,效果就不好了。一般的处理方法,可以将静态的背景去除掉,减少背景干扰。
b) 跟踪区域大小的确定是一个难点,跟踪区域过小,就不能很好的获取整个物体的特征;而跟踪区域过大,会把其他无关的区域的特征牵扯进来。
c) 当物体与相机有位置上的相对移动时,会有景深效应,物体在图像中的大小会有变化。针对这个问题,必须对跟踪区域的大小也需要一个scale变化。但是,单纯的对检测区域scale的变化,会降低检测效率,增加误检率。一般现在的方法是根据space和scale两种特征来检测。
d) meanshift 算法本质上是一个最速下降的最优化问题,但也存在局部最优问题。所以,可以选用多个种子点(起始点),同时进行meanshift算法的运算,选取一个最优结果。
backproject突出了目标的颜色空间的特征,而meanshift算法 具有实时性、适应性强等特征。
backproject与meanshift结合,有以下优点:
a) 计算量不是很大,可以做到实时跟踪;
b) 应用颜色空间直方图,不受背景移动(目标移动,但大小不变)、旋转、边缘遮挡、变形的影响。
不足:
a) 目标尺度变化,搜索窗口也需要变化,否则,就会搜索失败;
b) 当目标速度较快等情况时,跟踪效果可能会打折扣;
c) 单纯的颜色直方图信息,特征略显得单薄。
改善方法:
a) 目标位置预测机制
b) 不断更新目标模板
c) 利用多尺度窗口和空间特征,扩大meanshift算法的适应性
单纯的meanshift算法的效率还是不错的,但在处理复杂情况时,如解决局部最优问题、多尺度问题、目标速度过快(前后两图无重叠)等,meanshift算法就需要多次运行,效率会降低,所以,尽量做好前期预处理工作,降低运算量,如去除固定的背景、kalmanfilter预测目标的下一个位置等。
从backproject到meanshift:各自的作用,布布扣,bubuko.com
原文:http://blog.csdn.net/viewcode/article/details/37498267