建立一个场景模型,包含图像灰度均值、帧间平均差值。

对于输入的后续视频,当灰度在区间内时,认为是静止区域,反之为运动目标。判断静止灰度区间为:

diff实际上可认为是为了抑制一定的噪声,当图像序列噪声很小时,效果不错,但在实际场景基本不适用,例如我的实验图像。

我使用了前100帧图像作场景建模,暂未考虑场景更新问题,因此不能适用于背景具有运动目标的情况(例如风吹窗帘、摇曳的树),光线问题。

如下三幅图是对运动目标的检测,可以看出除了人物还有大量的噪声被检测出来。

因此,我对背景模型进行了去噪处理,采用了cvsmooth函数中的简单模糊、高斯、中值等,本以为中值效果应该最好,但由于噪声分布过于紧密,中值去噪并不好,最后采用15大小的普通加权去噪,效果如下。

使用大窗口进行模糊确实可以去除噪声,但对目标也会进行模糊,检测出现问题,此外,当噪声过大时,信号被严重干扰,甚至被淹没。说明简单的背景模型或去噪是行不通的。的背景模型或去噪是行不通的。

#include<highgui.h>
#include<cv.h>
#include<cxcore.h>void main()
{   CvCapture *capture = cvCreateFileCapture("Walk2.mpg");CvSize img_sz = cvSize(384,288);IplImage *pic;IplImage *frame = cvCreateImage(img_sz,8,1);IplImage *frame2 = cvCreateImage(img_sz,8,1);IplImage *framedn = cvCreateImage(img_sz,8,1);IplImage *Imask = cvCreateImage(img_sz,IPL_DEPTH_8U,1);IplImage *Iscratch = cvCreateImage(img_sz,IPL_DEPTH_32F,1);IplImage *IavgF = cvCreateImage(img_sz,IPL_DEPTH_32F,1);IplImage *IpreF = cvCreateImage(img_sz,IPL_DEPTH_32F,1);IplImage *Iscratch2 = cvCreateImage(img_sz,IPL_DEPTH_32F,1);IplImage *IdiffF = cvCreateImage(img_sz,IPL_DEPTH_32F,1);IplImage *IhiF = cvCreateImage(img_sz,IPL_DEPTH_32F,1);IplImage *IlowF = cvCreateImage(img_sz,IPL_DEPTH_32F,1);int fnum=1,Icount = 100,ht=5;cvZero(IavgF);cvZero(Iscratch);cvZero(IpreF);cvZero(Iscratch2);cvZero(IdiffF);while(fnum<=Icount){pic = cvQueryFrame(capture);if(!pic) break;cvCvtColor(pic,frame,CV_RGB2GRAY);cvSmooth(frame,framedn,CV_BLUR,15);cvCvtScale(framedn,Iscratch,1.0,0);cvAcc(Iscratch,IavgF);cvAbsDiff(Iscratch,IpreF,Iscratch2);cvAcc(Iscratch2,IdiffF);cvCopy(Iscratch,IpreF);fnum++;}cvConvertScale(IavgF,IavgF,(double)(1.0/(Icount)));   /*均值*/cvConvertScale(IdiffF,IdiffF,(double)(1.0/(Icount)));  /*帧间插值*/cvAddS(IdiffF,cvScalar(1.0),IdiffF);cvConvertScale(IdiffF,Iscratch,ht); /*high threshold = low threshold*/cvAdd(IdiffF,IavgF,IhiF);cvSub(IavgF,Iscratch,IlowF);while(1){pic = cvQueryFrame(capture);if(!pic) break;cvCvtColor(pic,frame,CV_RGB2GRAY);cvSmooth(frame,framedn,CV_BLUR,15);cvCvtScale(framedn,Iscratch,1.0,0);cvInRange(Iscratch,IlowF,IhiF,Imask);cvSubRS(Imask,cvScalar(255),Imask);cvNamedWindow("mask");cvShowImage("mask",Imask);cvNamedWindow("frame");cvShowImage("frame",frame);cvWaitKey(33);}}

基于平均背景建模的运动目标检测相关推荐

  1. Matlab实现---基于平均背景法的视频运动目标检测(有背景更新)

    目录 实现目标及说明 代码及说明 完整文件获取 实现目标及说明 MATLAB--编程实现基于平均背景法的视频运动目标检测,并且要不断更新背景. 网上找到的很多关于运动目标检测的,多数是用OpenCV或 ...

  2. Python与OpenCV(二)——基于背景差分法的运动目标检测程序分析

    背景差分法是传统运动目标检测算法中最常用的方法.其基本原理如图所示. 从图中可知,背景差分法是通过建立背景模型,比较当前帧与背景模型对应像素的差异点来检测运动目标的方法. 背景模型的建立主要通过两种方 ...

  3. 基于用户行为建模和异常检测算法的内部威胁检测

    Insider Threat Detection Based on User Behavior Modeling and Anomaly Detection Algorithms 内部威胁是授权用户的 ...

  4. 背景建模与前景检测3(Background Generation And Foreground Detection Phase 3)

    背景建模与前景检测之三(Background Generation And Foreground Detection Phase 3) 作者:王先荣 在上一篇文章里,我尝试翻译了<Nonpara ...

  5. 背景建模与前景检测2(Background Generation And Foreground Detection Phase 2)

    背景建模与前景检测2(Background Generation And Foreground Detection Phase 2) 作者:王先荣 本文尝试对<学习OpenCV>中推荐的论 ...

  6. 背景建模与前景检测1(Background Generation And Foreground Detection)

    背景建模与前景检测(Background Generation And Foreground Detection) 作者:王先荣 前言     在很多情况下,我们需要从一段视频或者一系列图片中找到感兴 ...

  7. 运动背景下的运动目标检测

    from:运动背景下的运动目标检测 各种目标检测方法介绍(懒人可以直接略过) 目标检测是一个老话题了,在很多算法当中都有它的身影.目标检测要做的就两件事:检测当前图片中有没有目标?如果有的话,在哪?按 ...

  8. ViBe(Visual Background extractor)背景建模或前景检测

    ViBe算法:ViBe - a powerful technique for background detection and subtraction in video sequences 算法官网: ...

  9. 背景建模或前景检测(Background Generation And Foreground Detection) 二

    转自:http://www.cnblogs.com/xrwang/archive/2010/03/27/BackgroundGenerationAndForegroundDetectionPhase2 ...

最新文章

  1. 《评人工智能如何走向新阶段》后记(再续25)
  2. JavaEE企业级快速开发平台jeesite4的使用和快速搭建项目
  3. 最新发布!斯坦福 CS224n 出作业视频详细讲解啦!
  4. java 封装表单数据类型_Java基本数据类型与封装类型详解(int和Integer区别)
  5. x86异常处理与中断机制(1)概述中断的来源和处理方式
  6. 二进制与以 2 为底的指数
  7. myeclipse自带tomcat
  8. rebar3 的使用
  9. 例4.1 特殊乘法 - 九度教程第39题(数位拆解)
  10. 手把手教你学DSP:基于TMS320C55x
  11. 服务器上网站文件无法删除不了怎么办啊,Windows服务器上文件夹删不掉怎么办...
  12. CVE-2015-1427(Groovy 沙盒绕过 代码执行漏洞)
  13. python练习项目八——下载所有XKCD 漫画
  14. java全文检索word中的内容_搜索引擎时对WORD,EXCEL,PDF,POWERPOINT文件全文检索的总结...
  15. 退役帖:再见ACM/ICPC!再见算法竞赛!
  16. 微型计算机硬盘安装在哪,微型计算机的硬盘是该机的
  17. 最简单DIY基于ESP8266的智能彩灯⑦(APP通过彩虹调色板和WIFI控制WS2812彩灯)
  18. 当厌氧菌遇见氧气之后,氧毒性、耐受性和防御性机制
  19. Golang学生管理系统(函数+结构体版)
  20. 大数据成捕鼠利器 让基金公司硕鼠无处遁形

热门文章

  1. 如何安装英文版linux系统,如何安装Linux系统(示例代码)
  2. SAP BC ORACLE 12C Cleanup ILM_EXECUTION$, ILM_RESULTS$
  3. 百分点大数据技术团队:Cesium技术在智慧应急行业的应用
  4. office2007word不能插入页码解决办法
  5. 计算机毕业设计android的学生考勤请假app(源码+系统+mysql数据库+Lw文档)
  6. Cplusplus实现的爱心代码,爱心里面有三个字李欣怡
  7. python中一般使用几个空格表示缩进_python中使用空格还是使用 Tab键缩进的建议...
  8. 这个时代,“寒门再难处贵子”【转载】
  9. 黑鲨3能用鸿蒙系统吗,黑鲨游戏手机3支持语音操控:没有三头六臂照样吃鸡
  10. 微信群发图文消息步骤说明