- Basic methods (i.e. mean and variance over time):
-
- Static Frame Difference
-
- Frame Difference
-
- Weighted Moving Mean
-
- Weighted Moving Variance
-
- Adaptive Background Learning
-
- Adaptive-Selective Background Learning
-
- (1) Temporal Mean
-
- (1) Adaptive Median of McFarlane and Schofield (1995) (paper)
-
Fuzzy based methods:
-
- (2) Fuzzy Sugeno Integral (with Adaptive-Selective Update) of Hongxun Zhang and De Xu (2006) (paper)
-
- (2) Fuzzy Choquet Integral (with Adaptive-Selective Update) of Baf et al (2008) (paper)
-
- (3) Fuzzy Gaussian of Laurence Bender (adapted version of Wren (1997) with Sigari et al (2008) approach) (paper)
-
Single gaussian based methods:
-
- (1) Gaussian Average of Wren (1997) (paper)
-
- (3) Simple Gaussian of Benezeth et al (2008) (paper)
-
Multiple gaussians based methods:
-
- (1) Gaussian Mixture Model of Stauffer and Grimson (1999) (paper)
-
- (0) Gaussian Mixture Model of KadewTraKuPong and Bowden (2001) (paper)
-
- (1) Gaussian Mixture Model of Zivkovic (2004)
-
- (3) Gaussian Mixture Model of Laurence Bender (implements the classic GMM with Mahalanobis distance) (paper)
-
Type-2 Fuzzy based methods:
-
- (2) Type-2 Fuzzy GMM-UM of Baf et al (2008) (paper)
-
- (2) Type-2 Fuzzy GMM-UV of Baf et al (2008) (paper)
-
Multiple features based methods (i.e. color, texture and edge features):
-
- (1) Texture BGS of Heikkila et al. (2006) (paper)
-
- (8) Texture-Based Foreground Detection with MRF of Csaba Kertész (2011) (paper)
-
- (4) Multi-Layer BGS of Jian Yao and Jean-Marc Odobez (2007) (paper)
-
- (10) MultiCue BGS of SeungJong Noh and Moongu Jeon (2012) (paper)
-
- (12) SuBSENSE of Pierre-Luc et al. (2014) (paper)
-
- (12) LOBSTER of Pierre-Luc and Guillaume-Alexandre (2014) (paper)
-
Non-parametric methods:
-
- (0) GMG of Godbehere et al (2012) (paper)
-
- (6) VuMeter of Goyat et al (2006) (paper)
-
- (7) KDE of Elgammal et al (2000) (paper)
-
- (9) IMBS of Domenico Bloisi and Luca Iocchi (2012) (paper)
-
Subspace-based methods:
-
- (1) Eigenbackground / SL-PCA of Oliver et al (2000) (paper)
-
Neural and neuro-fuzzy methods:
-
- (3) Adaptive SOM of Maddalena and Petrosino (2008) (paper)
-
- (3) Fuzzy Adaptive SOM of Maddalena and Petrosino (2010) (paper)
Legend:
- (0) native from OpenCV
- (1) thanks to Donovan Parks
- (2) thanks to Thierry Bouwmans, Fida EL BAF and Zhenjie Zhao
- (3) thanks to Laurence Bender
- (4) thanks to Jian Yao and Jean-Marc Odobez
- (5) thanks to Martin Hofmann, Philipp Tiefenbacher and Gerhard Rigoll
- (6) thanks to Lionel Robinault and Antoine Vacavant
- (7) thanks to Ahmed Elgammal
- (8) thanks to Csaba Kertész
- (9) thanks to Domenico Daniele Bloisi
- (10) thanks to SeungJong Noh
- (11) thanks to Benjamin Laugraud
- (12) thanks to Pierre-Luc St-Charles
Full list of BGSLibrary collaborators
I would like to thanks all those who have contributed in some way to the success of this library, especially, the following peoples (in alphabetical order):
Ahmed Elgammal (USA), Antoine Vacavant (France), Benjamin Laugraud (Belgium), Csaba Kertész (Finland), Domenico Bloisi (Italy), Donovan Parks (Canada), Eduardo Barreto Alexandre (Brazil), Fida EL BAF (France), Iñigo Martínez, Jean-Marc Odobez (Switzerland), Jean-Philippe Jodoin (Canada), JIA Pei (China), Jian Yao (China), Hemang Shah, Holger Friedrich, Laurence Bender (Argentina), Lionel Robinault (France), Luca Iocchi (Italy), Luiz Vitor Martinez Cardoso (Brazil), Martin Hofmann, Philipp Tiefenbacher and Gerhard Rigoll (Germany), Rim Trabelsi (Tunisia), Simone Gasparini (France), Stefano Tommesani (Italy), Thierry Bouwmans (France), Vikas Reddy (Australia), Yani Ioannou (Canada), Zhenjie Zhao (China) and Zoran Zivkovic (Netherlands).
Algorithms benchmark
Download links
- BGSLibrary v1.9.2 with MFC GUI v1.4.2 (x86/x64)
https://github.com/andrewssobral/bgslibrary/blob/master/binaries/mfc_bgslibrary_x86_v1.4.2.zip
Old versions:
- BGSLibrary v1.9.1 with MFC GUI v1.4.1 (x86/x64) (+src)
https://github.com/andrewssobral/bgslibrary/blob/master/binaries/mfc_bgslibrary_x86_v1.4.1.zip
- BGSLibrary v1.9.0 with MFC GUI v1.4.0 (x86/x64) (+src)
https://github.com/andrewssobral/bgslibrary/blob/master/binaries/mfc_bgslibrary_x86_v1.4.0.7z
- BGSLibrary v1.5.0 with Java GUI for Windows 32bits (x86)
https://github.com/andrewssobral/bgslibrary/blob/master/binaries/bgs_library_x86_v1.5.0_with_gui.7z
- BGSLibrary v1.5.0 with Java GUI for Windows 64bits (x64)
https://github.com/andrewssobral/bgslibrary/blob/master/binaries/bgs_library_x64_v1.5.0_with_gui.7z
For Linux and Mac users
Check out latest project source code.
Read instructions in README.txt file.
How to use BGS Library in other C++ code
Download latest project source code, copy package_bgs directory to your project and create config folder (bgslibrary use it to store xml configuration files). For Windows users, a demo project for Visual Studio 2010 is provided.
See Demo.cpp example source code at: https://github.com/andrewssobral/bgslibrary/blob/master/Demo.cpp
How to contribute with BGSLibrary project
Everyone is invited to cooperate with the BGSLibrary project by sending any implementation of background subtraction (BS) algorithms. Please see the following tutorial: https://github.com/andrewssobral/bgslibrary/blob/master/docs/bgslibrary_how_to_contribute.pdf
Example code
#include <iostream>
#include <cv.h>
#include <highgui.h>
#include "package_bgs/FrameDifferenceBGS.h"
int main(int argc, char **argv)
{
CvCapture *capture = 0;
capture = cvCaptureFromCAM(0);
if(!capture){
std::cerr << "Cannot initialize video!" << std::endl;
return -1;
}
IBGS *bgs;
bgs = new FrameDifferenceBGS;
IplImage *frame;
while(1)
{
frame = cvQueryFrame(capture);
if(!frame) break;
cv::Mat img_input(frame);
cv::imshow("Input", img_input);
cv::Mat img_mask;
cv::Mat img_bkgmodel;
// by default, it shows automatically the foreground mask image
bgs->process(img_input, img_mask, img_bkgmodel);
//if(!img_mask.empty())
// cv::imshow("Foreground", img_mask);
// do something
if(cvWaitKey(33) >= 0)
break;
}
delete bgs;
cvDestroyAllWindows();
cvReleaseCapture(&capture);
return 0;
}
Best public video databases
- ChangeDetection: http://changedetection.net/
- BMC: http://bmc.univ-bpclermont.fr/
Videos
Project Diagram
Java GUI
Release Notes:
-
Version 1.9.2: Added SuBSENSE and LOBSTER algorithms of Pierre-Luc et al. (2014).
-
Version 1.9.1: Added Sigma-Delta background subtraction algorithm (SigmaDeltaBGS) of Manzanera and Richefeu (2004).
-
Version 1.9.0: Added A New Framework for Background Subtraction Using Multiple Cues (SJN_MultiCueBGS) of SeungJong Noh and Moongu Jeon (2012). Added OpenCV 2.4.8 support (all dependencies are linked statically).
-
Version 1.8.0: Added Independent Multimodal Background Subtraction (IMBS) of Domenico Daniele Bloisi (2012). Added Adaptive-Selective Background Model Learning.
-
Version 1.7.0: Added Texture-Based Foreground Detection with MRF of Csaba Kertész (2011). Some improvements and bug fixes, ...
-
Version 1.6.0: Added KDE of A. Elgammal, D. Harwood, L. S. Davis, “Non-parametric Model for Background Subtraction” ECCV'00 (thanks to Elgammal). Added Texture-based Background Subtraction of Marko Heikkila and Matti Pietikainen “A texture-based method for modeling the background and detecting moving objects” PAMI'06. Added OpenCV 2.4.5 support, some improvements and bug fixes, ...
-
Version 1.5.0: Added VuMeter of Yann Goyat, Thierry Chateau, Laurent Malaterre and Laurent Trassoudaine (thanks to Antoine Vacavant). Added OpenCV C++ MFC App (with source code) using BGS Library for Windows users. Added OpenCV 2.4.4 support (all dependencies are linked statically -- bye DLL's), some improvements and bug fixes, ...
-
Version 1.4.0: Added PBAS (Pixel-based adaptive Segmenter) of M. Hofmann, P. Tiefenbacher and G. Rigoll. Added T2F-GMM with MRF of Zhenjie Zhao, Thierry Bouwmans, Xubo Zhang and Yongchun Fang. (thanks to Zhenjie Zhao and Thierry Bouwmans) Added GMG of A. Godbehere, A. Matsukawa, K. Goldberg (opencv native). Added OpenCV 2.4.3 support (all dependencies are linked statically -- bye DLL's), some improvements and bug fixes, ...
-
Version 1.3.0: Added Fuzzy Sugeno and Choquet Integral with Adaptive-Selective Background Model Update (thanks to Thierry Bouwmans) Foreground Mask Analysis upgrade, now with number of True Positives (TP), True Negatives (TN), False Positives (FP), False Negatives (FN), Detection Rate, Precision, Fmeasure, Accuracy, False Negative Rate (FNR), False Positive Rate (FPR), True Positive Rate (TPR) and ROC images (thanks to Thierry Bouwmans) Added OpenCV 2.4 support Some improvements, bug fixes, ...
-
Version 1.2.0: Added Multi-Layer BGS (thanks to Jian Yao and Jean-Marc Odobez) Added Background Subtraction Models from Laurence Bender (Simple Gaussian, Fuzzy Gaussian, Mixture of Gaussians, Adaptive SOM and Fuzzy Adaptive SOM) Added Foreground Mask Analysis (Similarity Measure)
-
Version 1.1.0: Added Type2-Fuzzy GMM UM and UV (thanks to Thierry Bouwmans) Added support to calculate average time of algorithms (see param tictoc in ./config/FrameProcessor.xml)
-
Version 1.0.0: First stable version Added 14 background subtraction algorithms (07 adapted from Donovan Parks
Ref:
https://code.google.com/p/bgslibrary/
https://github.com/andrewssobral/bgslibrary
留言列表