运动目标前景检测之ViBe源代码分析

本文主要探讨了运动目标前景检测方法,包括帧差、背景减除等多种技术,并聚焦于VIBE方法。作者对VIBE的源代码进行了分析和注释,旨在促进对代码的理解和学习,欢迎交流讨论。
摘要由CSDN通过智能技术生成

一方面为了学习,一方面按照老师和项目的要求接触到了前景提取的相关知识,具体的方法有很多,帧差、背景减除(GMM、CodeBook、 SOBS、 SACON、 VIBE、 W4、多帧平均……)、光流(稀疏光流、稠密光流)、运动竞争(Motion Competition)、运动模版(运动历史图像)、时间熵……等等。
更为具体的资料可以参考一下链接,作者做了很好的总结。点击打开链接http://blog.csdn.net/zouxy09/article/details/9622285

我只要针对作者提供的源代码,加上我的理解最代码捉了做了相关的注释,便于自己对代码的阅读和与大家的交流,如果不妥之处,稀罕大家多多提出,共同进步微笑

ViBe.h(头文件,一般做申明函数、类使用,不做具体定义)

#pragma once  
#include <iostream>  
#include "opencv2/opencv.hpp" 
  
using namespace cv;  
using namespace std;  
  
#define NUM_SAMPLES 20      //每个像素点的样本个数  
#define MIN_MATCHES 2       //#min指数  
#define RADIUS 20       //Sqthere半径  
#define SUBSAMPLE_FACTOR 16 //子采样概率,决定背景更新的概率
  
  
class ViBe_BGS  
{  
public:  
    ViBe_BGS(void);  //构造函数
    ~ViBe_BGS(void);  //析构函数,对开辟的内存做必要的清理工作
  
    void init(const Mat _image);   //初始化  
    void processFirstFrame(const Mat _image); //利用第一帧进行建模 
    void testAndUpdate(const Mat _image);  //判断前景与背景,并进行背景跟新 
    Mat getMask(void){return m_mask;};  //得到前景
  
private:  
    Mat m_samples[NUM_SAMPLES];  //每一帧图像的每一个像素的样本集
    Mat m_foregroundMatchCount;  //统计像素被判断为前景的次数,便于跟新
    Mat m_mask;  //前景提取后的一帧图像
};  
ViBe.cpp(上面所提到的申明的具体定义)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值