基于平均背景建模的运动目标检测
建立一个场景模型,包含图像灰度均值、帧间平均差值。
对于输入的后续视频,当灰度在区间内时,认为是静止区域,反之为运动目标。判断静止灰度区间为:
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);}}
基于平均背景建模的运动目标检测相关推荐
- Matlab实现---基于平均背景法的视频运动目标检测(有背景更新)
目录 实现目标及说明 代码及说明 完整文件获取 实现目标及说明 MATLAB--编程实现基于平均背景法的视频运动目标检测,并且要不断更新背景. 网上找到的很多关于运动目标检测的,多数是用OpenCV或 ...
- Python与OpenCV(二)——基于背景差分法的运动目标检测程序分析
背景差分法是传统运动目标检测算法中最常用的方法.其基本原理如图所示. 从图中可知,背景差分法是通过建立背景模型,比较当前帧与背景模型对应像素的差异点来检测运动目标的方法. 背景模型的建立主要通过两种方 ...
- 基于用户行为建模和异常检测算法的内部威胁检测
Insider Threat Detection Based on User Behavior Modeling and Anomaly Detection Algorithms 内部威胁是授权用户的 ...
- 背景建模与前景检测3(Background Generation And Foreground Detection Phase 3)
背景建模与前景检测之三(Background Generation And Foreground Detection Phase 3) 作者:王先荣 在上一篇文章里,我尝试翻译了<Nonpara ...
- 背景建模与前景检测2(Background Generation And Foreground Detection Phase 2)
背景建模与前景检测2(Background Generation And Foreground Detection Phase 2) 作者:王先荣 本文尝试对<学习OpenCV>中推荐的论 ...
- 背景建模与前景检测1(Background Generation And Foreground Detection)
背景建模与前景检测(Background Generation And Foreground Detection) 作者:王先荣 前言 在很多情况下,我们需要从一段视频或者一系列图片中找到感兴 ...
- 运动背景下的运动目标检测
from:运动背景下的运动目标检测 各种目标检测方法介绍(懒人可以直接略过) 目标检测是一个老话题了,在很多算法当中都有它的身影.目标检测要做的就两件事:检测当前图片中有没有目标?如果有的话,在哪?按 ...
- ViBe(Visual Background extractor)背景建模或前景检测
ViBe算法:ViBe - a powerful technique for background detection and subtraction in video sequences 算法官网: ...
- 背景建模或前景检测(Background Generation And Foreground Detection) 二
转自:http://www.cnblogs.com/xrwang/archive/2010/03/27/BackgroundGenerationAndForegroundDetectionPhase2 ...
最新文章
- 《评人工智能如何走向新阶段》后记(再续25)
- JavaEE企业级快速开发平台jeesite4的使用和快速搭建项目
- 最新发布!斯坦福 CS224n 出作业视频详细讲解啦!
- java 封装表单数据类型_Java基本数据类型与封装类型详解(int和Integer区别)
- x86异常处理与中断机制(1)概述中断的来源和处理方式
- 二进制与以 2 为底的指数
- myeclipse自带tomcat
- rebar3 的使用
- 例4.1 特殊乘法 - 九度教程第39题(数位拆解)
- 手把手教你学DSP:基于TMS320C55x
- 服务器上网站文件无法删除不了怎么办啊,Windows服务器上文件夹删不掉怎么办...
- CVE-2015-1427(Groovy 沙盒绕过 代码执行漏洞)
- python练习项目八——下载所有XKCD 漫画
- java全文检索word中的内容_搜索引擎时对WORD,EXCEL,PDF,POWERPOINT文件全文检索的总结...
- 退役帖:再见ACM/ICPC!再见算法竞赛!
- 微型计算机硬盘安装在哪,微型计算机的硬盘是该机的
- 最简单DIY基于ESP8266的智能彩灯⑦(APP通过彩虹调色板和WIFI控制WS2812彩灯)
- 当厌氧菌遇见氧气之后,氧毒性、耐受性和防御性机制
- Golang学生管理系统(函数+结构体版)
- 大数据成捕鼠利器 让基金公司硕鼠无处遁形
热门文章
- 如何安装英文版linux系统,如何安装Linux系统(示例代码)
- SAP BC ORACLE 12C Cleanup ILM_EXECUTION$, ILM_RESULTS$
- 百分点大数据技术团队:Cesium技术在智慧应急行业的应用
- office2007word不能插入页码解决办法
- 计算机毕业设计android的学生考勤请假app(源码+系统+mysql数据库+Lw文档)
- Cplusplus实现的爱心代码,爱心里面有三个字李欣怡
- python中一般使用几个空格表示缩进_python中使用空格还是使用 Tab键缩进的建议...
- 这个时代,“寒门再难处贵子”【转载】
- 黑鲨3能用鸿蒙系统吗,黑鲨游戏手机3支持语音操控:没有三头六臂照样吃鸡
- 微信群发图文消息步骤说明