混合高斯模型去除背景
本文转自 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;
}
混合高斯模型去除背景相关推荐
- matlab光流法前景分割,使用高斯模型去除背景
使用高斯模型去除背景 收录时间:2014-07-24 资源分类:Matlab 工具:MATLAB 7.11 (R2010b) 单高斯分布背景模型适用于单模态背景情形,它为每个图像点的颜色分布建立了用单 ...
- 混合高斯模型的基本原理,以及通过混合高斯模型进行背景建模的基本思想
混合高斯模型的基本原理,以及通过混合高斯模型进行背景建模的基本思想 混合高斯模型的基本原理 虽然是背景,但是灰度并不是一直保持不变的,灰度是在一个范围内变化的.一个背景像素随着时间变化呈现一定的随机性 ...
- OpenCV视觉学习之混合高斯模型进行背景建模
文章目录 一.背景建模:帧差法 二.混合高斯模型 小插曲: 三.代码实现 一.背景建模:帧差法 由于场景中的目标在运动,目标的影像在不同图像帧中的位置不同,该类算法对时间上连续的两帧图像进行差分运算, ...
- 【opencv】(11) 背景建模,帧差法、混合高斯模型,实战:行人检测,附python完整代码和数据集
各位同学好,今天和大家分享一下opencv背景建模相关操作.主要介绍两种背景建模方法,帧差法和混合高斯模型. 案例简介:现有一份路口摄像机拍摄的行人流视频,通过背景建模方法,区分背景和前景,完成行人识 ...
- opencv背景建模(混合高斯模型)
背景建模 帧差法 由于场景中的目标在运动,目标的影像在不同图像帧中的位置不同.该类算法对时间上连续的两帧图像进行差分运算,不同帧对应的像素点相减,判断灰度差的绝对值,当绝对值超过一定阈值时,即可判断为 ...
- 混合高斯模型原理和Lucas-Kanade方法介绍
运动估计之混合高斯模型原理和Lucas-Kanade方法介绍 1. 简述混合高斯模型的基本原理,以及通过混合高斯模型进行背景建模的基本思想. 背景建模的思想:利用帧之间的像素变化来进行判断,像素灰度值 ...
- opencv进阶-背景建模-(帧差法与混合高斯模型)
背景减除(Background Subtraction)是许多基于计算机视觉的任务中的主要预处理步骤.如果我们有完整的静止的背景帧,那么我们可以通过帧差法来计算像素差从而获取到前景对象.但是在大多数情 ...
- python opencv 背景建模 混合高斯模型
本文转载自别人博客 混合高斯模型:在进行前景检测前,先对背景进行训练,对图像中每个背景采用一个混合高斯模型进行模拟,每个背景的混合高斯的个数可以自适应.然后在测试阶段,对新来的像素进行GMM匹配,如果 ...
- 基于混合高斯模型与帧差法结合的目标跟踪算法matlab仿真
目录 一.理论基础 二.核心程序 三.仿真测试结果 一.理论基础 目标检测:混合高斯模型与帧差法结合的算法,与单独的混合高斯模型算法作对比,体现前者的优越性 3.要求和结果:对比改进前后的算法,可以非 ...
最新文章
- java 调用word插件_java一键生成word操作,比poi简单
- 分布式系统架构知识储备
- android 空白占位符,android textview空格占位符以及一些其他占位符汇总
- 信息学奥赛C++语言: 将字符串中的小写字母转换成大写字母
- 借助Intent实现Android工程中Activity之间Java对象的传递——实现Parcelable接口
- 内存管理 —— ION
- 讲师BLOG:http://linuxguest.blog.51cto.com/
- Navicat连接Linux下MySQL
- 层次分析法(小白必看手机查看)
- windows卸载服务
- kylo添加登录权限module
- Python递归绘制谢尔宾斯基三角形
- 双摄测距原理_一文读懂双摄像头工作原理
- BCD码和ASCII码的相互转换
- lowess和loess方法
- Python爬虫(第五周)
- SPI通讯协议详解 基于STM32
- 用python处理水仙花数
- muduo网络库源码复现笔记(十七):什么都不做的EventLoop
- IBM暑期实习笔试后总结