Opencv之meanshift篇
本文主要是介绍了OPENCV里的meanshift分割函数cvPyrMeanShiftFiltering函数。关于算法的详细叙述可参考《Mean shift: a robust approach toward feature space analysis》D,comaniciu 2003.该函数基本参照上文所描述的算法流程编写的。在opencv实现里加入了金字塔分层分割的概念。Meanshift分割可供选择的只有一个参数即分割的精细度,也就是选择的核宽。cvPyrMeanShiftFiltering函数只能输入8位三通道的RGB图像,输出时分割结果,没有提供分割的具体信息如类别数,模态等。该函数采用的是UNIFORM核,选择的矩形区域为核覆盖区。Meanshift算法在每个样本上都执行一次确定类别,所以复杂度比较高O(N*W),w是操作系数,处理一幅320*240图片需要2,3秒的时间。函数在实现时也没有考虑消除一些小的类别(数量较少的)。使得这个函数更像是discontinuity preserve smoothing.
有很多图片经过这个函数处理后很难感觉出输入输出有什么大区别,其实是被平滑了。观察仔细点可以看出来。
输入图片:
输出图像:
在opencv里面关于meanshift算法的应用还有两个函数CVmeanshift和CVCAMshift函数,都是用于跟踪的,效果还不错。现在在视频跟踪里,meanshift方法+卡尔曼滤波还是挺流行的。