在OpenCV里使用Meanshift算法

在这里将要学习Meanshift算法,这个算法主要在视频里寻找指定目标区域对象。Meanshift算法的原理在直觉上是很很简单的,假设有一张很点做成的图,如下图:

然后给你一个小的窗口,可以是圆形,也可以是方形,接着不断地移动这个窗口,尽量让这个窗口里的元素最多,也就是密度最大。在这里认为初始化的窗口为C1,蓝色那个圆,圆心是C1_O,蓝色那个方块表示。当你想找这个圆的质心时,你会发现它并不是在圆心位置,而是在C1_r位置,用蓝色圆表示。显而易见,圆心与质心并不一致,那么接着下来就是把这个圆的圆心移动到质心的位置,这时再去寻找新的质心,然后又发现它们并不匹配,又继续移动新的质心上。这样不断地迭代下去,发现总会有一个地方,圆心与质心是一致的。最后得到这个圆窗口,就是最像素分布密度最大的窗口。接着把密度最大的窗口标记为C2,从上图看到确实如此。

从上面分析可知道,meanshift是根据像素分布来跟踪对象,因此需要指定跟踪物体的窗口,就可以根据反向投影的图片来寻找密度大的地方。当目标对象移动时,反映在反向投影图上,就是像素密度在改变,所以meanshift就会移动窗口过去,达到跟踪物体的目的。

在OpenCV里要使用cv.meanShift函数,第一步先要设置寻找的目标,第二步计算创建目标的直方图,第三步计算反向投影图,最后一步使用meanShift函数。

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览

应支付9.90元
点击重新获取
扫码支付

支付成功即可阅读