您的位置:首页 > 编程语言

运动目标的背景建模-混合高斯背景建模和KNN模型建模的OpenCV代码实现

2016-08-01 11:29 2301 查看
本文参考了《OpenCV图像处理编程实例》

运动检测通常用于分析视频序列中的移动目标,如车辆和行人检测,其中所需要解决的关键问题是在场景中分离前景目标与背景。既然要分离,那就要先求解出背景,背景建模的作用就是对背景进行求解。求解出背景之后,利用当前图像帧与背景作差就可以粗略地实现运动目标区域点的提取。

常用的背景建模方法有混合高斯背景建模、KNN模型,下面分别给出各自在OpenCV下的代码实现,至于原理,目前我是没打算介绍,有兴趣的可以去参考相关论文和资料。

OpenCV中提供了BackgroundSubtractor类于用于实现背景建模算法。

一、混合高斯背景建模的OpenCV实现

OpenCV中提供了类BackgroundSubtractorMOG是经典的用于实现基于高斯混合模型的背景与前景分割算法,它派生于类BackgroundSubtractor。高斯混合模型的背景与前景分割算法在OpenCV3.1版本中被重新组织进新模块begsem中,具体原理请参考 P.KadewTraKuPong and R.Bowden发表的“An improved
adaptive background mixture model for real-tiem tracking with shadow detection”。其改进型算法类为BackgroundSubtractorMOG2,改进后的算法实现了高斯混合模型参数的更新,增强了复杂场景背景检测的性能,具体原理请参考Z.Zivkovic的论文“Improved adaptive
Gaussian mixture model for background subtraction”

高斯混合背景建模代码如下所示(代码中用到的视频链接下载地地址 https://pan.baidu.com/s/1hrIk2Ew):
//OpenCV版本3.0.0
//交流QQ2487872782

2016-8-4注:很报歉,此代码目前不能公开发表在博客上,已经删除,希望大家能理解!  


运行结果如下图所示:



二、KNN模型背景建模实现

KNN模型是针对混合高斯背景模型的不足提出来的模型,具体混合高斯背景模型有哪些不足,这里不作介绍,目前博主也不清楚。该模型是由Z.Zivkovic、F.van der Heijden在2006年发表的论文“Efficient Adaptive Density Estimation per Image Pixel for the Task of Background Subtraction”中提出的,该方法应用K近邻思想,实现前景目标变换到较小场景模型下的背景模型的建立。OpenCV提供了类BackgroundSubtractorKNN来实现该算法,其成员函数setHistory可设定背景建模的历史帧数;函数setNSamples用于在后台设置样本模型;函数setNNSamples用于设置KNN中k参数(最近邻匹配数目);函数setDetectShadows实现阴影的启动或关闭操作。

BackgroundSubtractorKNN背景建模代码如下(代码中用到的视频链接下载地地址 https://pan.baidu.com/s/1hrIk2Ew):

//OpenCV版本3.0.0
//交流QQ2487872782

2016-8-4注:很报歉,此代码目前不能公开发表在博客上,已经删除,希望大家能理解!  


运行结果如下图所示:



-------------------------------------------

欢迎大家加入图像识别技术交流群:271891601,另外,特别欢迎成都从事图像识别工作的朋友交流,我的QQ号2487872782
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  背景建模