Opencv3之动态目标检测:BackgroundSubtractorMOG2参数配置
来源:互联网 发布:微信可以打开淘宝 编辑:程序博客网 时间:2024/06/05 19:44
Opencv集成了BackgroundSubtractorMOG2用于动态目标检测,用到的是基于自适应混合高斯背景建模的背景减除法,相对于BackgroundSubtractorMOG,其具有更好的抗干扰能力,特别是光照变化。
------------------------------------------------------------------------------------------------------------
ps:BackgroundSubtractorMOG2等一些背景减除法、帧差法仅仅做运动检测,网上经常有人做个运动检测,再找个轮廓,拟合个椭圆就说跟踪了,混淆了概念,凡是没有建立帧与帧之间目标联系的,没有判断目标产生和目标消失的都不能算是跟踪吧。
-----------------------------------------------------------------------------------------------------------
BackgroundSubtractorMOG2具有大量的参数,参数的设置会对运动检测的结果产生极大影响。opencv2版本的BackgroundSubtractorMOG2参数是不可调的,因此MOG2的检测效果往往令人失望,甚至有人认为不如MOG。
在opencv3版本中,BackgroundSubtractorMOG2通过大量的成员函数使得参数可调,相信这一状况可以极大改变。然而对于不想钻研算法的opencv玩家来说,或者像我这种初学opencv又想做出点好玩的效果的人来说,,理解这些参数头都大了,这里结合我的浅见和别人的一些成果,总结了一些参数的意义,仅供参考,误人子弟勿喷!
1-- BackgroundSubtractorMOG2创建及初始化部分参考自:http://blog.csdn.net/abc20002929/article/details/43247425
eg:Ptr<BackgroundSubtractorMOG2> mog = createBackgroundSubtractorMOG2(100,25,false);
- history:用于训练背景的帧数,默认为500帧,如果不手动设置learningRate,history就被用于计算当前的learningRate,此时history越大,learningRate越小,背景更新越慢;
- varThreshold:方差阈值,用于判断当前像素是前景还是背景。一般默认16,如果光照变化明显,如阳光下的水面,建议设为25,36,具体去试一下也不是很麻烦,值越大,灵敏度越低;
- detectShadows:是否检测影子,设为true为检测,false为不检测,检测影子会增加程序时间复杂度,如无特殊要求,建议设为false;
- image 源图
- fmask 前景(二值图像)
- learningRate 学习速率,值为0-1,为0时背景不更新,为1时逐帧更新,默认为-1,即算法自动更新;
- nmixtures:高斯模型个数,默认5个,最多8个,一般设为5就好,个人测试:设为8个的时候检测效果提升有限,但程序耗时增加;
- backgroundRatio:高斯背景模型权重和阈值,nmixtures个模型按权重排序后,只取模型权重累加值大于backgroundRatio的前几个作为背景模型。也就是说如果该值取得非常小,很可能只使用权重最大的高斯模型作为背景(因为仅一个模型权重就大于backgroundRatio了);
- fVarInit:新建高斯模型的方差初始值,默认15;
- fVarMax:背景更新过程中,用于限制高斯模型方差的最大值,默认20;
- fVarMin:背景更新过程中,用于限制高斯模型方差的最小值,默认4;
- varThresholdGen:方差阈值,用于是否存在匹配的模型,如果不存在则新建一个;
- Opencv3之动态目标检测:BackgroundSubtractorMOG2参数配置
- 【OpenCV】OpenCV3的第十天——imgproc组件之目标检测
- 基于opencv的BackgroundSubtractorMOG2目标追踪
- 基于opencv的BackgroundSubtractorMOG2目标追踪
- 目标检测之GMM
- 目标检测之Vibe
- 目标检测之libpabod
- 目标检测之YOLO
- opencv3 特征检测与匹配及寻找目标
- opencv3-python目标跟踪—基本的运动检测
- 使用QT和opencv3.3进行目标检测(YOLO)
- BackgroundSubtractorMOG2在opencv2和opencv3的使用区别
- opencv3之目标跟踪(单目标、多目标)
- opencv3之目标跟踪(单目标、多目标)
- [配置SSD进行目标检测]
- 目标检测之harr特征
- 目标检测之hough forest
- 目标检测之HOG特征
- MongoDB 数组遍历操作 forEach
- 键值表kernel/include/uapi/linux/input.h
- 内存管理实验_STM32F1开发指南_第四十二章
- Java+MySQL实现网络爬虫程序
- 编程:从-5到入门
- Opencv3之动态目标检测:BackgroundSubtractorMOG2参数配置
- 279. Perfect Squares
- 离散事件模拟-银行管理
- SQL Server的阻塞、死锁问题
- SO_REUSEADDR解释
- 自定义控件实现不规则区域点击事件
- 从二维点集重建平面形状-浅议凹包算法
- Android优化那些事
- win 10 睡眠, 休眠及唤醒