ViBe运动检测算法(visual background extractor)
来源:互联网 发布:社员网 知乎 编辑:程序博客网 时间:2024/04/18 07:11
心情一般,工程需要,快停电了,发个博客。以前一直知道的vibe,却没细看,昨晚看了看代码,多少也能纪念一把。
对于目标检测(运动检测)算法有很多,之前就看过帧差,背景差,高斯背景建模等,这次介绍听过很多次但没有真正看过的ViBe.
一般检测算法都分为三部分:
1.初始化背景模型
2.判定下一帧是背景还是前景(这就是我们的目的呀)
3.背景模型更新
1.对于初始化,vibe就是建立背景模型样本集的过程。
样本集有n(一般取20)幅图构成。每一幅图的大小与原帧大小相同,对于每一幅图的某一个像素点,随机取其8领域的一个像素值作为它的大小。
从而得到这n幅图,也就是我们初始化的结果——背景模型。
2.对于判定,也就是像素点上大小的比较。
对于新的一帧p到来之后,将p的某一像素点与样本集中对应的所有像素点进行比较。如果p中像素点的值与pi(背景模型)中像素点的值距离小于R(一般取值为20),则该像素点对应的count++。
对这N幅图(背景模型)做此操作,如果count值大于某个阈值,则认为该点为背景点,否则为前景点。 其中是背景模型空间中满足区域的样本数目的最小阈值,一般取值为2.
3.对于模型更新(似乎不管做什么处理,跟踪,检测等,对于需要利用时间关系的都要更新模型)
以下是从网上抄的一段话:
背景模型的更新就是使得背景模型能够适应背景的不断变化,比如光照的变化,背景物体的变更等等。保守的更新策略:前景点永远不会被用来填充背景模型,会引起死锁,比如初始化的时候如果一块静止的区域被错误的检测为运动的,那么在这种策略下它永远会被当做运动的物体来对待;Blind策略:对死锁不敏感,前景背景都可以来更新背景模型,缺点是缓慢移动的物体会融入背景中无法被检测出来。在本方法中采用的更新策略是保守的更新策略+前景点计数方法。前景点计数:对像素点进行统计,如果某个像素点连续N次被检测为前景,则将其更新为背景点。 随机的子采样:在每一个新的视频帧中都去更新背景模型中的每一个像素点的样本值是没有必要的,当一个像素点被分类为背景点时,它有1/ φ的概率去更新背景模型。
具体的更新方法:每一个背景点有1/ φ的概率去更新自己的模型样本值,同时也有1/ φ的概率去更新它的邻居点的模型样本值。更新邻居的样本值利用了像素值的空间传播特性,背景模型逐渐向外扩 散,这也有利于Ghost区域的更快的识别。同时当前景点计数达到临界值时将其变为背景,并有1/ φ的概率去更新自己的模型样本值。(Ghost区域是指当一个原本静止的物体开始运动,背景差检测算法可能会将原来该物体所覆盖的区域错误的检测为运动的,这块区域就成为Ghost,当然原来运动的物体变为静止的也会引入Ghost区域,Ghost区域在检测中必须被尽快的消除)
在选择要替换的样本集中的样本值时候,我们是随机选取一个样本值进行更新,这样可以保证样本值的平滑的生命周期由于是随机的更新,这样一个样本值在时刻t不被更新的概率是 (N-1)/N,假设时间是连续的,那么在dt的时间过去后,样本值仍然保留的概率是
也可以写作, 这就表明一个样本值在模型中是否被替换与时间t无关 ,随机策略是合适的。
网上说的很有道理,其中φ取15就好,再用自己的话说一下:
如果某一个像素被判定为背景点,那么它有 1 / φ 的概率去更新自己的模型样本值(1),同时也有 1 / φ 的概率去更新它的邻居点的模型样本值(2)。
(1)更新自己的模型样本值方法为:在背景模型中随机挑选一幅图,利用当前像素值去更新这幅图对应像素点的值。
(2)更新它的邻居点的模型样本值方法为:邻居点指的就是8邻域,同样地,在背景模型中随机挑选一幅图,利用当前像素值去更新这幅图邻居点的值。
如果某一像素点被判定为前景点,则启动前景点计数机制,也就是说若某个像素点连续N次被检测为前景,则认为一块静止区域被误判为运动,将其更新为背景点,更新方法同(1)。
总结:
1.vibe是像素级的算法,它相比于其他的一些检测算法具有计算量小、内存占用少、处理速度快、检测效果好、有更快的Ghost区域消融速度和应对噪声稳定可靠的特点,并且非常适合嵌入照相机等要求计算量小和内存占用少的情境中。
2.算法官网:http://www2.ulg.ac.be/telecom/research/vibe/3.本文理解均来自zouxy的博客代码,十分感谢。http://blog.csdn.net/zouxy09/article/details/9622285 http://www.cnblogs.com/dwdxdy/p/3527891.html
0 0
- ViBe运动检测算法(visual background extractor)
- ViBe(Visual Background extractor)背景建模或前景检测
- ViBe(Visual Background extractor)背景建模或前景检测
- ViBe(Visual Background extractor)背景建模或前景检测
- VIBE运动检测算法实现(二)
- 运动目标检测ViBe算法
- 【图像处理】运动目标检测ViBe算法(附代码)
- VIBE运动目标检测算法实现
- 基于Vibe算法的运动目标检测
- 运动检测ViBe算法python实现
- 运动检测(前景检测)之ViBe
- VIBE 运动目标检测
- 运动目标检测 之 Vibe背景模型算法
- 运动目标检测——ViBe算法代码分析
- 运动检测(前景检测)之(一)ViBe
- 运动检测(前景检测)之(一)ViBe
- 运动检测(前景检测)之(一)ViBe
- 运动检测(前景检测)之(一)ViBe
- win7远程桌面连接不上,解决办法
- unity3d学习之数组和遍历器
- storm文档(4)----开发环境环境搭建
- Git冲突:commit your changes or stash them before you can merge. 解决办法
- NMON文件重要指标详解
- ViBe运动检测算法(visual background extractor)
- JDE scheduler job-----How to start Scheduler job
- Insertion Sort List
- Oracle 用Execute执行带有参数的字符串语句。
- 通配符的匹配很全面, 但无法找到元素 'jdbc:embedded-database' 的声明
- unity3d学习之数组习题
- 在网上找到的一个附件上传功能,自己完善了一下,记录防止忘记
- iOS sqlite3 具体代码粘贴
- ios 简便的提醒管理类 可以当闹钟用