栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

基于mean shift算法的物体跟踪(python+opencv代码)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于mean shift算法的物体跟踪(python+opencv代码)

代码链接:python+opencv+meanshift算法实现物体跟踪
效果如下: (输入一段视频,调整代码中的 r,h,c,w 四个参数确定到水瓶的位置,你也可以输入自己的视频并尝试调整参数使得方框初始包含想要跟踪的物体)

1. Mean shift算法实现原理

Mean Shift算法原理其实和聚类很相似,是一个迭代的过程,即先算出当前点的偏移均值,将该点移动到该偏移均值,以此为新的起始点,继续移动,直到满足最终的条件。
(1)设想在一个有N个样本点的特征空间,初始确定一个中心点center;
(2)计算在设置的半径为D的圆形空间内所有的点(xi)与中心点center的向量;
(3)计算整个圆形空间内所有向量的平均值,得到一个偏移均值
(4)将中心点center移动到偏移均值位置;
(5)重复移动,直到满足一定条件结束。
Meanshift背后的直觉很简单,假设你有点的集合。(它可以是像素分布,例如直方图反投影)。你会得到一个小窗口(可能是一个圆形),并且必须将该窗口移到最大像素密度(或最大点数)的区域。如下图所示:

初始窗口以蓝色圆圈显示,名称为“C1”。其原始中心以蓝色矩形标记,名称为“C1_o”。但是,如果找到该窗口内点的质心,则会得到点“C1_r”(标记为蓝色小圆圈),它是窗口的真实质心。当然,它们不匹配。因此,移动窗口,使新窗口的圆与上一个质心匹配。再次找到新的质心。很可能不会匹配。因此,再次移动它,并继续迭代,以使窗口的中心及其质心落在同一位置(或在很小的期望误差内)。因此,最终您获得的是一个具有最大像素分布的窗口。它带有一个绿色圆圈,名为“C2”。正如您在图像中看到的,它具有最大的点数。

2. 直方图反投影

它用于图像分割或在图像中查找感兴趣的对象。简而言之,它创建的图像大小与输入图像相同(但只有一个通道),其中每个像素对应于该像素属于我们物体的概率。用更简单的话来说,与其余部分相比,输出图像将在可能有对象的区域具有更多的白色值。

写的比较简单,其实很多东西看完代码就懂了,看再多原理有时候不如看代码(个人感觉)。最后,放上代码链接:
python+opencv+meanshift算法实现物体跟踪

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/923406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号