本文转自 http://www.cnblogs.com/mfryf/archive/2012/03/29/2424024.html

基于混合高斯模型去除背景法

高斯模型去除背景法也是背景去除的一种常用的方法,经常会用到视频图像侦测中。这种方法对于动态的视频图像特征侦测比较适合,因为模型中是前景和背景分离开来的。分离前景和背景的基准是判断像素点变化率,会把变化慢的学习为背景,变化快的视为前景。

#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxtypes.h"
#include "cvaux.h"
# include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[])
{//IplImage* pFirstFrame = NULL;
IplImage* pFrame = NULL;IplImage* pFrImg = NULL;IplImage* pBkImg = NULL;IplImage* FirstImg = NULL;static IplImage* pyrImg =NULL;CvCapture* pCapture = NULL;int nFrmNum = 0;int first = 0,next = 0;int thresh = 0;cvNamedWindow("video",0);//cvNamedWindow("background",0);cvNamedWindow("foreground",0);cvResizeWindow("video",400,400);cvResizeWindow("foreground",400,400);//cvCreateTrackbar("thresh","foreground",&thresh,255,NULL);//cvMoveWindow("background",360,0);//cvMoveWindow("foregtound",0,0);if(!(pCapture = cvCaptureFromCAM(1))){printf("Could not initialize camera , please check it !");return -1;}CvGaussBGModel* bg_model = NULL;while(pFrame = cvQueryFrame(pCapture)){nFrmNum++;if(nFrmNum == 1){pBkImg = cvCreateImage(cvGetSize(pFrame),IPL_DEPTH_8U,3);pFrImg = cvCreateImage(cvGetSize(pFrame),IPL_DEPTH_8U,1);FirstImg = cvCreateImage(cvGetSize(pFrame),IPL_DEPTH_8U,1);pyrImg = cvCreateImage(cvSize(pFrame->width/2,pFrame->height/2),IPL_DEPTH_8U,1);CvGaussBGStatModelParams params;params.win_size = 2000;             //Learning rate = 1/win_size;params.bg_threshold = 0.7;         //Threshold  sum of weights for background testparams.weight_init = 0.05;params.variance_init = 30;params.minArea = 15.f;params.n_gauss = 5;    //= K =Number of gaussian in mixtureparams.std_threshold = 2.5;//cvCopy(pFrame,pFirstFrame,0);bg_model = (CvGaussBGModel*)cvCreateGaussianBGModel(pFrame,¶ms);}else{int regioncount = 0;int totalNum = pFrImg->width *pFrImg->height ;cvSmooth(pFrame,pFrame,CV_GAUSSIAN,3,0,0,0);cvUpdateBGStatModel(pFrame,(CvBGStatModel*)bg_model,-0.00001);cvCopy(bg_model->foreground ,pFrImg,0);cvCopy(bg_model->background ,pBkImg,0);//cvShowImage("background",pBkImg);//cvSmooth(pFrImg,pFrImg,CV_GAUSSIAN,3,0,0,0);//cvPyrDown(pFrImg,pyrImg,CV_GAUSSIAN_5x5);//cvPyrUp(pyrImg,pFrImg,CV_GAUSSIAN_5x5);//cvSmooth(pFrImg,pFrImg,CV_GAUSSIAN,3,0,0,0);cvErode(pFrImg,pFrImg,0,1);cvDilate(pFrImg,pFrImg,0,3);//pBkImg->origin = 1;//pFrImg->origin = 1;cvShowImage("video",pFrame);cvShowImage("foreground",pFrImg);//cvReleaseBGStatModel((CvBGStatModel**)&bg_model);//bg_model = (CvGaussBGModel*)cvCreateGaussianBGModel(pFrame,0);/*//catch target frameif(nFrmNum>10 &&(double)cvSumImage(pFrImg)>0.3 * totalNum){first = cvSumImage(FirstImg);next = cvSumImage(pFrImg);printf("Next number is :%d /n",next);cvCopy(pFrImg,FirstImg,0);}cvShowImage("foreground",pFrImg);cvCopy(pFrImg,FirstImg,0);*/if(cvWaitKey(2)== 27){break;}}}cvReleaseBGStatModel((CvBGStatModel**)&bg_model);cvDestroyAllWindows();cvReleaseImage(&pFrImg);cvReleaseImage(&FirstImg);cvReleaseImage(&pFrame);cvReleaseImage(&pBkImg);cvReleaseCapture(&pCapture);return 0;
}

混合高斯模型去除背景相关推荐

  1. matlab光流法前景分割,使用高斯模型去除背景

    使用高斯模型去除背景 收录时间:2014-07-24 资源分类:Matlab 工具:MATLAB 7.11 (R2010b) 单高斯分布背景模型适用于单模态背景情形,它为每个图像点的颜色分布建立了用单 ...

  2. 混合高斯模型的基本原理,以及通过混合高斯模型进行背景建模的基本思想

    混合高斯模型的基本原理,以及通过混合高斯模型进行背景建模的基本思想 混合高斯模型的基本原理 虽然是背景,但是灰度并不是一直保持不变的,灰度是在一个范围内变化的.一个背景像素随着时间变化呈现一定的随机性 ...

  3. OpenCV视觉学习之混合高斯模型进行背景建模

    文章目录 一.背景建模:帧差法 二.混合高斯模型 小插曲: 三.代码实现 一.背景建模:帧差法 由于场景中的目标在运动,目标的影像在不同图像帧中的位置不同,该类算法对时间上连续的两帧图像进行差分运算, ...

  4. 【opencv】(11) 背景建模,帧差法、混合高斯模型,实战:行人检测,附python完整代码和数据集

    各位同学好,今天和大家分享一下opencv背景建模相关操作.主要介绍两种背景建模方法,帧差法和混合高斯模型. 案例简介:现有一份路口摄像机拍摄的行人流视频,通过背景建模方法,区分背景和前景,完成行人识 ...

  5. opencv背景建模(混合高斯模型)

    背景建模 帧差法 由于场景中的目标在运动,目标的影像在不同图像帧中的位置不同.该类算法对时间上连续的两帧图像进行差分运算,不同帧对应的像素点相减,判断灰度差的绝对值,当绝对值超过一定阈值时,即可判断为 ...

  6. 混合高斯模型原理和Lucas-Kanade方法介绍

    运动估计之混合高斯模型原理和Lucas-Kanade方法介绍 1. 简述混合高斯模型的基本原理,以及通过混合高斯模型进行背景建模的基本思想. 背景建模的思想:利用帧之间的像素变化来进行判断,像素灰度值 ...

  7. opencv进阶-背景建模-(帧差法与混合高斯模型)

    背景减除(Background Subtraction)是许多基于计算机视觉的任务中的主要预处理步骤.如果我们有完整的静止的背景帧,那么我们可以通过帧差法来计算像素差从而获取到前景对象.但是在大多数情 ...

  8. python opencv 背景建模 混合高斯模型

    本文转载自别人博客 混合高斯模型:在进行前景检测前,先对背景进行训练,对图像中每个背景采用一个混合高斯模型进行模拟,每个背景的混合高斯的个数可以自适应.然后在测试阶段,对新来的像素进行GMM匹配,如果 ...

  9. 基于混合高斯模型与帧差法结合的目标跟踪算法matlab仿真

    目录 一.理论基础 二.核心程序 三.仿真测试结果 一.理论基础 目标检测:混合高斯模型与帧差法结合的算法,与单独的混合高斯模型算法作对比,体现前者的优越性 3.要求和结果:对比改进前后的算法,可以非 ...

最新文章

  1. java 调用word插件_java一键生成word操作,比poi简单
  2. 分布式系统架构知识储备
  3. android 空白占位符,android textview空格占位符以及一些其他占位符汇总
  4. 信息学奥赛C++语言: 将字符串中的小写字母转换成大写字母
  5. 借助Intent实现Android工程中Activity之间Java对象的传递——实现Parcelable接口
  6. 内存管理 —— ION
  7. 讲师BLOG:http://linuxguest.blog.51cto.com/
  8. Navicat连接Linux下MySQL
  9. 层次分析法(小白必看手机查看)
  10. windows卸载服务
  11. kylo添加登录权限module
  12. Python递归绘制谢尔宾斯基三角形
  13. 双摄测距原理_一文读懂双摄像头工作原理
  14. BCD码和ASCII码的相互转换
  15. lowess和loess方法
  16. Python爬虫(第五周)
  17. SPI通讯协议详解 基于STM32
  18. 用python处理水仙花数
  19. muduo网络库源码复现笔记(十七):什么都不做的EventLoop
  20. IBM暑期实习笔试后总结

热门文章

  1. 管理学十大经典图书推荐
  2. 安装文件MSI文件和EXE文件有什么区别?
  3. linux系统下查看cpu功耗,Linux系统下查看CPU信息
  4. 对技术的态度----老一辈it从业者的行业理解和对技术的激情与钻研
  5. 1024px是个好模版
  6. 10、刷牛客网SQL题(四)
  7. CocosCreator-精灵动态加载图片资源,实例化精灵
  8. Count Inversion逆序对数问题
  9. WORD: 如何在一个word里文档里创建多个目录?
  10. 【论文】医疗大数据方面的资料