原理 : 高斯模型就是用高斯概率密度函数( 正态分布 曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。

对图像背景建立高斯模型的原理及过程:图像灰度 直方图 反映的是图像中某个 灰度值 出现的频次,也可以认为是图像灰度概率密度的估计。如果图像所包含的目标区域和背景区域相比比较大,且背景区域和目标区域在灰度上有一定的差异,那么该图像的灰度直方图呈现双峰-谷形状,其中一个峰对应于目标,另一个峰对应于背景的中心灰度。对于复杂的图像,尤其是医学图像,一般是多峰的。通过将直方图的多峰特性看作是多个高斯分布的叠加,可以解决图像的分割问题。

在 智能监控系统 中,对于运动目标的检测是中心内容,而在 运动目标检测 提取中,背景目标对于目标的识别和跟踪至关重要。而建模正是背景目标提取的一个重要环节。

我们首先要提起背景和前景的概念,前景是指在假设背景为静止的情况下,任何有意义的运动物体即为前景。建模的基本思想是从当前帧中提取前景,其目的是使背景更接近当前视频帧的背景。即利用当前帧和视频序列中的当前背景帧进行 加权平均 来更新背景,但是由于光照突变以及其他外界环境的影响,一般的建模后的背景并非十分干净清晰,而 高斯混合模型 是是建模最为 成功的方法 之一。

混合高斯模型使用K(基本为3到5个)个高斯模型来表征图像中各个 像素点 的特征,在新一帧图像获得后更新混合高斯模型, 用当前图像中的每个像素点与混合高斯模型匹配,如果成功则判定该点为背景点, 否则为前景点。 通观整个高斯模型,主要是有方差和均值两个参数决定, 对均值和方差的学习,采取不同的学习机制,将直接影响到模型的稳定性、精确性和收敛性 。由于我们是对运动目标的背景提取建模,因此需要对高斯模型中方差和均值两个参数实时更新。为提高模型的学习能力,改进方法对均值和方差的更新采用不同的学习率;为提高在繁忙的场景下,大而慢的运动目标的检测效果,引入权值均值的概念,建立 背景图像 并实时更新,然后结合权值、权值均值和背景图像对像素点进行前景和背景的分类。

到这里为止,混合高斯模型的建模基本完成,我在归纳一下其中的流程,首先初始化预先定义的几个高斯模型,对高斯模型中的参数进行初始化,并求出之后将要用到的参数。其次,对于每一帧中的每一个像素进行处理,看其是否匹配某个模型,若匹配,则将其归入该模型中,并对该模型根据新的像素值进行更新,若不匹配,则以该像素建立一个高斯模型,初始化参数,代理原有模型中最不可能的模型。最后选择前面几个最有可能的模型作为背景模型,为背景目标提取做铺垫。

方法:

目前,运动物体检测的问题主要分为两类,摄像机固定和摄像机运动。对于摄像机运动的运动物体检测问题,比较著名的解决方案是 光流法 ,通过求解 偏微分方程 求的图像序列的 光流场 ,从而预测摄像机的运动状态。对于摄像机固定的情形,当然也可以用光流法,但是由于光流法的复杂性,往往难以实时的计算,所以我采用高斯背景模型。因为,在摄像机固定的情况下,背景的变化是缓慢的,而且大都是光照,风等等的影响,通过对背景建模,对一幅给定图像分离前景和背景,一般来说,前景就是运动物体,从而达到运动物体检测的目的。

单分布高斯背景模型

单分布高斯背景模型认为,对一个背景图像,特定像素亮度的分布满足高斯分布,即对背景图像B, (x,y)点的亮度满足:

I B (x,y) ~ N(u,d)

这样我们的背景模型的每个象素属性包括两个参数:平均值u 和 方差d。

对于一幅给定的图像G,如果 Exp(-(I G (x,y)-u(x,y))^2/(2*d^2)) > T,认为(x,y)是背景点,反之是前景点。

同时,随着时间的变化,背景图像也会发生缓慢的变化,这时我们要不断更新每个象素点的参数

u(t+1,x,y) = a*u(t,x,y) + (1-a)*I(x,y)

这里,a称为更新参数,表示背景变化的速度,一般情况下,我们不更新d(实验中发现更不更新 d,效果变化不大)。

#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;int main(int argc, char** argv)
{VideoCapture capture(0);if (!capture.isOpened()){cout << "No camera !\n" << endl;return -1;}Mat frame, mask, foreground_BW, mid_filer,gray_dilate1;//---------------------------------------------------------------------BackgroundSubtractorMOG bgSubtractor(5, 5, 0.5, false);//构造混合高斯模型 参数1:使用历史帧的数量 2:混合高斯个数,3:背景比例 4::噪声权重while (1){capture >> frame;imshow("frame_resize", frame);bgSubtractor(frame, mask, 0.7);imshow("gauss", mask);Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));threshold(mask, foreground_BW, 20, 255, 0);//二值化通常设置为50  255medianBlur(foreground_BW, mid_filer, 3);     //中值滤波法imshow("mid_filer", mid_filer);dilate(mid_filer, gray_dilate1, element);//膨胀imshow("gray_dilate1", gray_dilate1);char c = waitKey(33);if (c == 27) break;}
}

运动目标检测 混合高斯模型相关推荐

  1. 运动目标检测混合高斯背景建模

    1.混合高斯背景建模理论 混合高斯背景建模是基于像素样本统计信息的背景表示方法,利用像素在较长时间内大量样本值的概率密度等统计信息(如模式数量.每个模式的均值和标准差)表示背景,然后使用统计差分(如3 ...

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

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

  3. OPENCV混合高斯模型原理

    (本文转自转自:http://blog.sina.com.cn/s/blog_62bce98c0100shkq.html) 混合高斯模型跟高斯变量之和看起来有一点像, 注意不要把它们弄混淆了. 混合高 ...

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

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

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

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

  6. 混合高斯模型 opencv

    一.GMM发展历史及现状 背景建模方法有很多种,如中值法.均值法.卡尔曼滤波器模型.码本背景模型等,其中混合高斯模型是最经典的算法.GMM最早是由CHris Stauffer等在[1]中提出的,该方法 ...

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

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

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

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

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

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

最新文章

  1. C#利用Graphics类绘制进阶--根据文字内容自动生成指定旋转角度图片
  2. Java 9 - 17 特性解读:​Java 13
  3. Leetcode Permutation Sequence
  4. 快捷启动_start for mac(快捷启动应用)
  5. leetcode-120-三角形最小路径和
  6. 设计师的就业前景分析!
  7. Linux救援模式实战
  8. iptables学习笔记:使用NAT实现简单的无线AP
  9. Atitit 我们的devops战略与规划 规范 推荐标准
  10. 米勒-拉宾素性检验(MillerRabbin)算法详解
  11. Socket长连接和短连接的区别
  12. c语言max条件句,if条件句(if条件句的四种用法)
  13. JavaSE_05【数组】拓展练习
  14. css画一个卡通动画
  15. 低版本浏览器(chrome小于40 firefox小于50 ie小于9)会提示升级信息
  16. 计算机会计期中考试,会计从业资格考试《会计电算化》基础阶段备考题
  17. kingcms php 搜索,KingCMS内容管理系统
  18. 运维工程师使用的运维平台和工具包括:
  19. 用Python爬虫赚钱的四个方法!!!
  20. SolidWorks2020报错:solidworks无法获得下列许可standard,solidworks flexnet无法启动,启动失败

热门文章

  1. NameNode概述
  2. 中美知识产权博弈:保护力度标准成最大分歧
  3. LCD驱动源码分析(s3cfb.c)
  4. 停车还能360全方位影像_新款途锐2.0版、3.0版均能升级的原厂360全景影像及盲点辅助系统...
  5. 2021华为软件精英挑战赛,思路框架,欢迎留言讨论
  6. 【APP渗透测试】 Android APP渗透测试技术实施以及工具使用(客户端服务端)
  7. 深度学习系列46:人脸图像超分GFP-GAN
  8. HASH和HMAC(3):SHA-1算法原理
  9. 计算机辅助设计实训报告范文,电子实训报告总结范文
  10. CallServerInterceptor拦截器分析