运动目标检测ViBe算法

运动目标检测——研究方向与难点 运动目标检测算法的研究 1 帧间差分法 帧间差分法是用来检测固定摄像头下的运动物体。该方法利用图像序列中相邻帧的像素值之间的相关性,先将图像序列中相邻两帧进行相减,然后对得到差值图像进行阈值判断,进而提取动态前景。设It(i, j)代表t时刻的图像,Bt(i, j)为t时刻的背景图像,T为分割阈值,那么 该算法优点是计算简单,适用于简单场景以及光线变化的场景,但是该算法过于简单导 阅读详情

运动目标检测ViBe算法

一、运动目标检测简介      

 

       视频中的运动目标检测这一块现在的方法实在是太多了。运动目标检测的算法依照目标与摄像机之间的关系可以分为静态背景下运动检测和动态背景下运动检测。先简单从视频中的背景类型来讨论。
        静态背景下的目标检测,就是从序列图像中将实际的变化区域和背景区分开了。在背景静止的大前提下进行运动目标检测的方法有很多,这些方法比较侧重于背景扰动小噪声的消除,如:
1.背景差分法
2.帧间差分法
3.光流法
4.混合高斯模型(GMM)
5.码本(codebook)
还有这些方法的变种,例如三帧差分,五帧差分,或者这些方法的结合。
      运动背景下的目标检测,相对于静态背景而言,算法的思路就有所区别了,一般会更加侧重于匹配,需要进行图像的全局运动估计与补偿。因为在目标和背景同时运动的情况下,是无法简单的根据运动来判断的。运动背景下的运动目标检测算法也有很多,如
1.块匹配
2.光流估计
      这些方法总得来在不同的环境下说各有各自的特点吧,也不见得简单的算法就一定比复杂的要弱。有一些博客已经对这些方法进行了对比和评估,有兴趣的同学可以参考这些

    (摘自http://blog.youkuaiyun.com/zouxy09/article/details/9622401)
      推荐一个牛逼的库:http://code.google.com/p/bgslibrary/ 里面包含了各种背景减除的方法,可以让自己少做很多力气活。
      还有一篇评估的博文http://www.cnblogs.com/xrwang/archive/2010/02/21/ForegroundDetection.html

 

二、GMM算法简介


      不得不提的是其中的GMM算法(可以参考 Adaptive background mixture models for real-time tracking),这种算法在我平时要用到运动检测的时候一般都会直接用,原因有两个,第一,效果确实不错,噪声可以很快消除,第二,opencv包含了GMM算法,可以直接调用,非常省事。

      GMM简单讲,将输入图像的像素与背景模型进行对比,和背景模型相似性比较高的点视为背景,和背景模型相似性比较低的点视为前景,再利用形态学的方法进行运动目标提取。混合高斯模型是由K个(基本为3到5个)单高斯模型加权组成的。在获取新的一帧图像之后,如果当前图像中的像素点与该像素的K个模型中的某一个匹配度比较高,则视为背景,并将当前帧的像素作为一个新模型,更新已存在的K个模型。如果匹配度比较低,则为前景点。整个混合高斯模型算法主要是有方差和均值两个参数,对于这两个参数采取不同的学习机制,直接影响该算法的正确性、稳定性和收敛性。代码网上到处都有,例如http://blog.youkuaiyun.com/pi9nc/article/details/21717669,需要的同学可以去看看。

 

三 、ViBe算法

 

      不过,我今天介绍的主角并不是GMM,而是ViBe算法。在网上各处看到ViBe算法是个很牛逼的算法,据说还把GMM给PK下去了,所以我就拜读了原文 ViBe: a powerful random technique to estimate the background in video sequences。
       ViBe算法是由Olivier Barnich 和 Marc Van Droogenbroeck在2011年提出的一种背景建模方法。该算法采用邻域像素来创建背景模型,通过比对背景模型和当前输入像素值来检测前景,可以细分为三个步骤:
       第一步,初始化单帧图像中每个像素点的背景模型。假设每一个像素和其邻域像素的像素值在空域上有相似的分布。基于这种假设,每一个像素模型都可以用其邻域中的像素来表示。为了保证背景模型符合统计学规律,邻域的范围要足够大。当输入第一帧图像时,即t=0时,像素的背景模型

      其中,表示空域上相邻的像素值,表示当前点的像素值。在N次的初始化的过程中,中的像素点被选中的可能次数为L=1,2,3,…,N。

      第二步,对后续的图像序列进行前景目标分割操作。当t=k时,像素点的背景模型为,像素值为。按照下面判断该像素值是否为前景。

这里上标r是随机选的;T是预先设置好的阈值。当满足符合背景#N次时,我们认为像素点为背景,否则为前景。

      第三步,背景模型更新方法。ViBe算法的更新在时间和空间上都具有随机性。
      时间上的随机性。在N个背景模型中随机抽取一个,设为图像,图2-1表示了图像的x位置及其八邻域内的像素。当我们得到新的一帧图像时,如果图像中的x位置对应的像素被判断为背景,则需要被更新。这个抽取的过程体现了时间上的随机性。
空间上的随机性。在的八邻域中随机抽取一个像素,用的来替换掉,这体现了模型更新空间上的随机性。

    以上便是更新的过程,即用来更新及其八邻域。采用八邻域更新的方法,可以去除由于获取的视频细微抖动(摄像机抖动、目标微动)而产生的重影和误差,让检测目标更加准确。

      在一般情况下,背景并不会发生较大的变化,所以每次背景模型更新的个数UpdateNum应该是相近的。因此我们把第一帧背景更新的次数InitNum作为比较值,符合下面公式则对背景模型进行重新初始化,这样可以避免由于大面积的光照变化导致的误判。

      视频中的初始帧可能是包含目标的,常规的背景建模算法往往无法快速消除Ghost区域,这对于前景检测是不利的。Vibe算法更新模型时利用了该像素值的空间传播特性,背景模型逐渐向外扩散,这也有利于Ghost区域的更快的识别并且消除。下面以ViBe算法下的交通视频前景检测为例

      如图上图所示为ViBe算法下前景检测的效果,红色矩形框表示了出现的比较显著的Ghost区域。在第10帧之前,Ghost区域残留严重,随着模型的不断更新,Ghost区域不断消失在第40帧以后,Ghost区域已经完全消失了。说明了Vibe算法在前景检测和背景模型更新上的优势。

      代码地址:http://download.youkuaiyun.com/detail/zhuangxiaobin/7360113

运动目标检测算法ViBe原理学习 实习的时候做了一些算法学习,但一直没有写文档总结,博客也没更新,所以现在来补一下~ Visual Background Extractor(ViBe),是一种像素级视频背景建模算法。其主要思想为一个像素点储存一个样本集,该样本集中的值为该像素点过去的值或其邻域的值,然后将当前像素点的值与样本集进行比较,来判断当前像素点是否属于背景点,如果是,则从背景模型中任意选择需要替换的值。该方法与很多方法不... 阅读详情

相关推荐

运动目标检测 之 Vibe背景模型算法

前段时间研究了下Vibe目标检算法并做了代码实现,今天得空讲下我对Vibe算法的理解。算法官方网站:http://www.telecom.ulg.ac.be/research/vibe/综述: ViBe是一种像素级视频通过背景建模的方式来检测前景目标的算法。具体的思想就是为每个像素点存储了一个样本集,样本集中采样值就是该像素点过去的像素值和其邻居点的像素值,然后将每一个新的像素值和

苏的专栏 8910

运动目标检测的四种方法

运动目标检测的四种方法 运动目标检测主要目的是从视频图像中提取出运动目标并获得运动目标的特征信息,如颜色、形状、轮廓等。提取运动目标的过程实际上就是一个图像分割的过程,而运动物体只有在连续的图像序列(如视频图像序列)中才能体现出来,运动目标提取的过程就是在连续的图像序列中寻找差异,并把由于物体运动和表现出来的差异提取出来。 常用的四种方法:连续帧间差分法、背景差分法、光流法和运动能量法。 1.连续帧间差分法:转自:原理,摄像机采集的视频序列具有连续性的特点。如果场景内没有运动目标,则连续帧的变化很微弱,如果

huanghu1230的博客 1万+

MTI动目标指示和MTD动目标检测

MTD(moving targets detection)雷达系统中区分运动目标和杂波在于它们速度上的差别。由于速度不同而引起回波信号的多普勒频率不相等,所以可以通过多普勒频率的不同将杂波和运动目标区分开来。动目标检测(MTD)不仅能滤除杂波,而且还可以将不同运动速度的目标区分开来,从而大大改善了在杂波背景下检测运动目标的能力。 后续补充 ...

wangjie36的博客 3万+

python运动目标检测_运动目标检测ViBe算法

一、运动目标检测简介视频中的运动目标检测这一块现在的方法实在是太多了。运动目标检测的算法依照目标与摄像机之间的关系可以分为静态背景下运动检测和动态背景下运动检测。先简单从视频中的背景类型来讨论。静态背景下的目标检测,就是从序列图像中将实际的变化区域和背景区分开了。在背景静止的大前提下进行运动目标检测的方法有很多,这些方法比较侧重于背景扰动小噪声的消除,如:1.背景差分法2.帧间差分法3.光流法4....

weixin_39722196的博客 2134

基于VIBE算法的运动目标检测系统设计与实现

运动目标检测是计算机视觉中的基础技术,旨在从视频序列中分离出动态变化的物体,广泛应用于智能监控、交通管理及行为分析等领域。其核心任务是通过背景建模与帧差分析,识别出前景目标。常见的方法包括背景差分法、帧间差分法和光流法。随着算法的演进,VIBE等轻量级模型在保持高效性的同时提升了对复杂环境的适应能力。本章为后续深入探讨VIBE算法及其VC++实现提供理论铺垫。单变量高斯分布的概率密度函数如下:其中:$ \mu $:均值;$ \sigma^2 $:方差。

weixin_35414484的博客 993

运动目标检测算法(Matlab)

使用matlab编写的运动目标跟踪算法,核心代码均自己手写,包括帧间差分法,ViBe算法和高斯混合建模法,并且使用了matlab GUI,可直接选择视频查看算法效果。

运动目标检测ViBe算法的numpy实现

ViBe算法是一种优秀的运动目标检测,其背景建模是基于像素的邻域来建立,算法的具体原理我就不介绍了,网上可以搜到一大堆。网上提供的实现方法多是遍历图像中每个像素建立背景模型,有用c/c++实现的,也有用python实现的。我实验了一下,基于c/c++实现的基本能满足实时要求,用python遍历像素的方式完全不能用,速度太慢。由于我需要用python实现视频中的烟雾检测,运动目标检测只是第一...

ywxuan的专栏 2599

ubuntu18.04安装R——无法连接上 dl.google.com:80 (6.6.6.6),连接超时&&E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

安装R的时候,sudo apt update 的时候出现错误: 查资料要修改/etc/apt/sources.list.d/google-chrome.list 文件 原来是: deb http://dl.google.com/linux/chrome/deb/ stable main 改为: deb [arch=amd64] http://dl.google.com/linux/chrom...

许希律的博客 4347

基于MATLAB的vibe算法的运动目标检测代码

基于MATLAB的vibe算法的运动目标检测代码 去发现同类优质开源项目:https://gitcode.com/ 此资源文件为作者在毕业设计中使用的MATLAB程序,主要实现运动目标检测中的前景与背景分割。该程序采用vibe算法,能够较好地对运动目标进行分割。 文件内容: 基于MATLAB的vibe算法的运动目标检测代码.docx 适用于对MATLAB运动目标检测领域感兴趣的用户,可以作为学...

gitblog_06726的博客 437

用STM32定时器PWM高级功能驱动步进电机:F103C8T6+TB6600实战教程

本文详细介绍了如何利用STM32F103C8T6微控制器的定时器PWM高级功能驱动TB6600步进电机驱动器,实现高效、灵活的运动控制方案。通过硬件配置、PWM参数计算、运动控制算法及TB6600高级功能应用的全面解析,为工业自动化和精密控制领域提供了实用的技术参考。

game4的博客 185

阿里奇门接口联调全流程详解:从沙箱自测到正式上线的保姆级攻略

本文详细解析阿里奇门接口联调的全流程,从沙箱自测到正式上线的关键步骤与避坑指南。涵盖环境配置、业务场景测试、跨团队协作、灰度发布及生产运维监控,帮助开发者高效完成API对接,确保供应链协同系统的稳定运行。特别适合首次接触奇门对接的技术负责人参考。

weixin_42535461的博客 413

基于MATLAB的vibe算法的运动目标检测代码:项目推荐文章

基于MATLAB的vibe算法的运动目标检测代码:项目推荐文章 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在计算机视觉和视频处理领域,运动目标检测是一项关键的技术。今天,我们为您推荐一个基于MATLAB的vibe算法的运动目标检测代码项目,该项目由一位作者在毕业设计中开发,旨在实现前景与背景的有效分割。通过这一开源资源,用户可以深入理解并应用vibe算法,提升自己...

gitblog_06711的博客 392

新四化浪潮下,中年整车诊断工程师的黄金突围路

摘要 本文探讨了汽车电子诊断工程师在当前行业变革中的独特优势与发展路径。作者作为从业者指出,整车诊断岗位在汽车"新四化"浪潮中呈现"逆生长"特性:技术壁垒高、经验复利强、市场需求持续增长。中年工程师凭借丰富的案例积累和实战经验成为行业稀缺人才,薪资水平显著高于同龄段其他技术岗位。文章分析了四条职业发展路径(技术专家、技术管理、细分深耕、横向拓展),并警示了三大职业风险(执行层局限、技术停滞、成果沉淀不足)。最后提出具体建议,强调掌握UDS高阶、DoIP以太网诊断等核心技术的重要性,为中年技术人提供了清晰的职

Soly_kun的博客 308

基于Vibe算法的运动目标检测

初学习opencv一段时间了,

Dream 6934

4、I3C协议详解

I3C最初的设计目的是为移动设备创建一个能够使用多个传感器的单一接口。随着现代化移动设备对于传感器数量的增加以及对性能的提高,I2C和SPI已经达到了他们所能支持的临界点,而I3C的出现就是为了解决这一问题,I3C可以在同一根主线上支持更多的传感器设备,而且不会因为要支持中断或睡眠模式而增加额外的逻辑信号。I3C可以在更低功耗的情况下提供更快的传输速率,该特性的提升不止是对移动设备,对其他的嵌入式设备也都是很大的帮助。例如穿戴设备,需要在有限的物理空间中使用多个传感器并且要求更小的耗电。 一、简述..

迟子涵925的博客 2万+

Android16 rk3576添加触摸点数上限到40个点

本文介绍了在Android 16系统上实现40点触摸支持的修改方案。相比Android 15,Android 16对API添加有更严格的要求,需要在MotionEvent.java中添加@FlaggedApi批注。主要修改包括:1)在input_framework.aconfig中定义flag;2)在MotionEvent.java中添加40个AXIS_GENERIC轴常量并添加批注;3)将32位指针ID处理改为64位适配;4)更新相关API文档。修改涉及多个核心文件,包括PointerController

tzj1058756809的博客 381

VIBE运动目标检测算法实现

近来,有不少人咨询我关于VIBE算法的问题,而且对于有些细节问题懵懵懂懂,索要源码类的,考虑这个算法的应用以及很多人对此有比较深的兴趣,遂将其放在博客上供大家学习。该版本的代码是在学校的时候写的,里面也加入了一些其他的后处理内容,尽管还有不足,但是对于加深对VIBE算法的理解肯定有一定帮助。另外,由于最新版本的代码在公司电脑上,不便提供。关于理论方面的请参考下面二篇文章: 1)VIBE-A po

Belial计算机视觉&机器视觉专栏 1万+

Dify 实战:使用 Firecrawl 插件高效爬取微信公众号文章

本文介绍了如何利用Dify平台和Firecrawl插件构建微信公众号文章自动化采集系统。Dify作为开源LLM应用开发平台,结合Firecrawl的智能网页爬取能力,可轻松实现文章爬取、清洗和结构化存储。文章详细讲解了环境部署、插件安装以及工作流创建过程,通过可视化节点操作即可完成从URL输入到Markdown格式输出的全流程。该方案无需复杂代码,能有效解决反爬、动态渲染等问题,适用于知识库构建、模型训练等场景,显著提升开发效率。

SmartSi 1820

python实现算法改进_运动目标检测vibe算法及其改进Python实现

vibe是一个又简单又牛逼的算法,没有什么数学公式,就只有三步1.初始化背景模型,总共有20个背景模型样本,每个样本中的每个点由其八邻域初始化(论文里面没有用到自己这个像素点,看了其他的改进,有用自己的,这个没必要较真,大家都是试出来的,不一定适合每个场景)。2.前景背景判定 新来的每一帧与背景模型做比较,如果新的帧的点与背景模型中样本的点的像素值大小不超过20(20是个经验值在网上搜了一下,实现...

weixin_40007541的博客 1298

【ROS2实体机械臂驱动】rokae xCoreSDK Python测试使用

本文记录了使用xCoreSDK-Python驱动Rokae实体机械臂的测试流程。

机器人梦想家 Bing Lee 1498

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

运动目标检测——ViBe算法代码分析

图像处理,目标检测,ViBe背景差分法

charlene_bo的博客 8483

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

运动目标检测ViBe算法的armadillo实现

接上篇,最近在学习c++矩阵库,顺便把vibe算法用c++矩阵库armadillo做了一遍。虽然效果不理想,但是借这个机会算是把armadillo、Eigen、numcpp等几个注明的矩阵库都大致学习了一遍,还是很有收货的。反观效果发现,在使用armadillo库实现算法时,虽然也设置了并行处理(#define use_openmp),但并行效果并不理想,每帧处理时间达到150多ms,CPU利用率...

ywxuan的专栏 658

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

c语言运动目标检测,VIBE运动目标检测算法实现

最后附上调用的main函数;int _tmain(int argc, _TCHAR* argv[]){CvCapture *capture=NULL;IplImage* frame=NULL;IplImage* pForeImg=NULL;IplImage* segImg=NULL;char *file_path="E:\\testVideo\\VTS_01_4.avi"; // m1 tes...

weixin_29468871的博客 407

ViBe运动目标检测python实现

代码实现参考官方开源C代码,仅实现了对灰度图的运动目标检测,即对应C代码中三个核心函数: libvibeModel_Sequential_AllocInit_8u_C1R libvibeModel_Sequential_Segmentation_8u_C1R libvibeModel_Sequential_Update_8u_C1R 其中,Segmentation部分循环进行了相应的修改,没有对像素进行遍历逐一修改,而是通过获取mask,直接对图像矩阵进行修改;Update部分完全照着C代码改的pytho

Curya的博客 3408

运动目标检测

一、运动目标检测简介      视频中的运动目标检测这一块现在的方法实在是太多了。运动目标检测的算法依照目标与摄像机之间的关系可以分为静态背景下运动检测和动态背景下运动检测。先简单从视频中的背景类型来讨论。     静态背景下的目标检测,就是从序列图像中将实际的变化区域和背景区分开了。在背景静止的大前提下进行运动目标检测的方法有很多,这些方法比较侧重于背景扰动小噪声的消除,如:1.背景差分法2.帧...

u014696804的博客 1万+
上一篇: ViBe算法原理和代码解析
下一篇: 背景建模--Vibe 算法优缺点分析
凌风探梅
博客等级 码龄19年 2575粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值