基于帧间差分法和背景差分法的运动目标检测方法及其实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5
附录一 部分主要程序清单
#include "stdafx.h" //#include "Motiontrack.h" #include "StaticDetect.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif CStatsticDetect::CStatsticDetect(int nwidth, int nheight) { m_nFrame = 0; count = 0; WIDTH = nwidth; HEIGHT = nheight; IMAGESIZE = WIDTH*HEIGHT; m_pCurImage = new BYTE[IMAGESIZE*3]; memset(m_pCurImage,0,IMAGESIZE*3); m_pGrayImage = new BYTE[IMAGESIZE]; memset(m_pGrayImage,0,IMAGESIZE); m_pBackground = new BYTE[IMAGESIZE]; memset(m_pBackground,0,IMAGESIZE); m_pBgImage = new BYTE[IMAGESIZE*3]; memset(m_pBgImage,0,IMAGESIZE*3); m_pDiffImage = new BYTE[IMAGESIZE]; memset(m_pDiffImage,0,IMAGESIZE); m_pDetectImage = new BYTE[IMAGESIZE*3]; memset(m_pDetectImage,0,IMAGESIZE*3); m_pBackHistgram = new short int[IMAGESIZE*256]; memset(m_pBackHistgram,0,IMAGESIZE*256 *sizeof(short int)); m_pTemplate = new UINT[IMAGESIZE]; memset(m_pTemplate,0,IMAGESIZE*sizeof(U INT)); m_pPreGrayImage = new BYTE[IMAGESIZE]; memset(m_pPreGrayImage,0,IMAGESIZE); image1 = new BYTE[IMAGESIZE]; memset(image1,0,IMAGESIZE); 6 DiffImage(m_pGrayImage,m_pPreGrayImage, WIDTH,HEIGHT,20); *3); RGBToYUV(m_pCurImage,m_pGrayImage,WI DTH,HEIGHT); switch(sMethod) { case D_MULDIFFER: if(m_nFrame>0) { } void CStatsticDetect::ReceiveFrame(int index,BYTE* sBuf, DETECT_METHOD sMethod) { m_nFrame = index; memcpy(m_pCurImage,sBuf,WIDTH*HEIGHT CStatsticDetect::~CStatsticDetect() { delete []m_pBackHistgram; delete []m_pDiffImage; delete []m_pBgImage; delete []m_pGrayImage; delete []m_pBackground; delete []m_pDetectImage; delete []m_pCurImage; delete []m_pTemplate; delete []image1; delete []image2; delete []image3; delete []image4; } image2 = new BYTE[IMAGESIZE]; memset(image2,0,IMAGESIZE); image3 = new BYTE[IMAGESIZE]; memset(image3,0,IMAGESIZE); image4 = new BYTE[IMAGESIZE]; memset(image4,0,IMAGESIZE);
(4)
经过形态学开运算,小空洞和毛刺可以被有效滤除[9]。 4.4 目标检测算法的 VC 实现 建立 CStasticDetect 对象后,每当一帧到来是,则调用对象的 ReceiveFrame 函数, 该函数接受两个参数,第一个参数是帧图像数据,这里处理的图像数据大小与构造类时
2
给定的图像大小相同;第二个参数是当前帧的帧号。在达到预先定义的阈值后, ReceiveFrame 将自动建立背景模型,并对目标进行检测,检测结果通过 m-pDiffImage 成员变量输出。具体代码参见附录 1.
DiffImage(m_pGrayImage,m_pBackground,WI DTH,HEIGHHale Waihona Puke Baidu,THRESHOLD); DeNoise(m_pDiffImage,WIDTH,HEIGHT); } break; case D_STATISTIC: if(m_nFrame%BACK_SEQ_NUM==1) SetBgHistgram(m_pBackHistgram,m_pGrayI
1
假设物体连续运动,以当前某段待处理图像序列的平均值作为参考图像,即产生一个 除运动区域以外与当前静态场景相似的背景图像[6],[7]。利用这种多帧图像平均的背景模 型建立法其公式描述如下:
其中,N 为重建图像序列帧数,Bn 为重建背景图像, 每个像素点的值为该像素点 N 帧图像灰度的累加平均。 4.2 检测变化区域
为第 n 帧图像,背景模型的
利用帧间差分法检测出相邻两帧间发生变化的区域。 设 fn(i.j), fn+1(i.j)为视频序列中连 续的两帧图像,将这两帧图像进行差分处理,检测规则如下: 如果 如果
(2)
其中 T 为检测阈值,由于变化区域需要与背景图像进行进一步的处理从而分割出运 动物体,因此这里对 T 值选值 15 以适应一般检测需求。 表示差分后确定未背 景的区域, 表示差分后确定为运动变化的区域。 4.3 运动目标检测 区分出图像中变化区域和非变化区域之后,针对当前帧图像,只对变化区域中变化 区域中图像与背景图像做差分,达到检测运动物体的目的。 如果 其他 当前帧图像与背景图像差分之后, 还需要进行阈值分割, 将差分图像变成二值图像。 阈值分割之后由于噪声的干扰目标会出现一些小孔洞和毛刺, 为了能更好的进行目标定 位,需将一些空洞填充并除去毛刺,这里采用形态学的开运算完成[8]。定义的开运算结 构元素为:
基于帧间差分法和背景差分法的运动目 标检测方法及实现
杨一君 1,王兆仲 2,邓希宁 1
(1.中国电子科技集团公司 11 研究所 光电系统部 北京 100001;2.北京航空航天大学 图像处理心 北京 100001)
摘 要:帧间差分法和背景差分法计算简单,实时处理效率高,因此是最常用的运动目 标检测方法。 本文根据这两种方法的优缺点介绍一种在运动区域内结合使用帧间差分法 和背景差分法来提取运动目标的方法。这种方法首先根据帧间差分图像确定运动区域, 然后在确定的运动区域内对背景差分图像和帧间差分图像进行运动目标测。 关键词:运动目标检测、帧间差分、背景差分 1 引 言
3
图 2
图 3
图 4
图 5
4
参考文献
[1] 杨杰、张翔.视频目标检测和跟踪及其应用[M].上海:上海交通大学出版社,2012,10~15. [2] 关键、刘宁波、黄勇等. 雷达目标检测的分形理论及应用[M].北京:电子工业出版社,2011,31~35. [3] 周许超、屠大维、陈勇、赵其杰、张翼成.基于相位相关和差分相乘的动态背景下运动目标检测[J]. 仪器仪表学报,2010,5:980-983. [4] 张毅刚、曹阳、项学智.静态背景差分运动目标检测研究[J].电子测量与仪器学报.2010,5:494-499. [5]Slim Amri,Walid Barhoumi,Ezzeddine Zagrouba. A robust framework for joint background/foreground segmentation of complex video scenes filmed with freely moving camera[J]. Multimedia Tools and Applications . 2010 (2-3) [6] Alberto Del Bimbo,Fabrizio Dini. Particle filter-based visual tracking with a first order dynamic model and uncertainty adaptation[J]. Computer Vision and Image Understanding . 2011 (6) [7] 黄鹤,王小旭,赵春晖,梁彦,潘泉. 基于后验信息修正的自适应交互多模型跟踪算法[J]. 西北工业大学 学报. 2011(06) [8] 王芳林. 稳健视觉跟踪算法中的关键问题研究[D]. 上海交通大学 2009 [9] Ling Shao,Ruoyun Gao,Yan Liu,Hui Zhang. Transform based spatio-temporal descriptors for human action recognition[J]. Neurocomputing . 2010 (6)
if(m_nFrame>BACK_ALL_NUM) {
mage,WIDTH,HEIGHT); if(m_nFrame>BACK_ALL_NUM)
DeNoise(m_pDiffImage,WIDTH,HEIGHT); } memcpy(m_pPreGrayImage,m_pGrayImage,I MAGESIZE); break; case D_MULMEAN: GetMultiData(m_pGrayImage,WIDTH,HEIGHT );
目前在静止背景下常用的的运动目标检测方法有: 块匹配法、 光留法、 运动能量法、 [1] 帧差法、背景差分法等 。也有人讲一些优秀的算法如小波变换或遗传算法等方法引入 到视频的运动目标检测中,但是由于受到计算机运算速度和算法复杂度的限制,使得在 检测与跟踪运动目标的实时性和鲁棒性方面总是差强人意,若没有特定的硬件支持,一 般很难满足实时处理的要求。 在实时系统中人们更热衷于使用计算的方法来获得理想的 目标检测结果[2]。 2 帧间差分法 帧间差分法是利用图像序列中相邻帧图像之间做差来提取出图像中的运动区域[3]。首 先将数帧图像校正在同一坐标系中, 然后将同一背景不同时刻的两幅图像进行差分运算, 灰度不发生变化的背景部分被减掉,由于运动目标在相邻两帧中的位置不同,且与背景 灰度有所差异,两帧相减后将使运动目标突现出来,从而大致确定出运动目标在图像中 的位置。 3 背景差分法 背景差分法是利用图像序列和参考背景模型相减实现运动目标检测的[4]。背景差分法 能够提供较为完整的特征数据从而提取出运动目标, 但其对光照和外部条件造成的动态 场景变化过于敏感,在非受控情况下需要加入背景图像更新机制,且不是用与摄像头运 动,或背景灰度变化较大的情况[5]。 4 运动检测方法 4.1 建立背景模型
程序流程图如图 1 所示:
图 1 程序流程图
5 实验结果 实验图像取自录屏软件录制的录屏视频,视频中的对话框做平移运动,图 2 和图 3 为两帧视频图像经过二值化处理后的图像,图 4 为运动检测结果,图 5 为经过二值开 运算滤波后的图像。从实验结果可以看出,基于帧间差分和背景差分的运动目标检测方 法结合形态学滤波可以对静止背景下的运动目标进行有效的检测。
相关文档
最新文档