Escolar Documentos
Profissional Documentos
Cultura Documentos
Subtraction Library
Andrews Sobral
Programa de Pós-Graduação em Mecatrônica
Universidade Federal da Bahia
Salvador, Bahia, Brasil
andrewssobral@gmail.com
Abstract—The BGSLibrary provides a free easy-to-use C++ ementação de alguns métodos de subtração de fundo. Porém,
open source framework to perform background subtraction estudantes, pesquisadores e profissionais normalmente
(BGS). Currently the library provides 29 BGS algorithms. In this enfrentam um grande obstáculo quando pretendem utilizar
work the library is described and the benchmark and estas implementações em conjunto, pois cada autor codifica os
performance evaluation of all BGS algorithms are shown. It is algoritmos utilizando certas particularidades, tais como
expected that the results presented here can help to choice the linguagem de programação, sistema operacional, bibliotecas
most suitable background subtraction method. adicionais (algumas vezes proprietárias), estrutura e formatação
do código fonte. Tais particularidades comumente acabam
Keywords—bgslibrary; background subtraction; motion
dificultando a pesquisa, o desenvolvimento e a integração de
detection; foreground segmentation; background modeling
sistemas que dependem desta tecnologia. Entretanto, a
necessidade de uma biblioteca integrada e padronizada que seja
I. INTRODUÇÃO independente de sistema operacional, gratuita e de código fonte
A subtração de fundo é um passo fundamental em muitas aberto é importante. Neste artigo, o autor propõe a biblioteca
aplicações no campo de visão computacional e processamento BGSLibrary que foi desenvolvida com esta finalidade.
digital de imagens, tais como vigilância por vídeo [26], captura A BGSLibrary1 fornece um framework em C++ para
de movimento [8] e aplicações multimídia [12]. Consiste em realizar a subtração de fundo em uma sequência de imagens ou
geral na comparação de uma imagem observada com outra vídeo. Lançada pela primeira vez em Março de 2012
imagem que representa uma estimativa do plano de fundo. As inicialmente com 14 algoritmos, atualmente (até a escrita deste
regiões que possuem uma diferença significativa, acima de um trabalho) a BGSLibrary está na versão 1.5.0 compondo 29
determinado limiar entre a imagem de entrada e a imagem de algoritmos de subtração de fundo. Uma grande quantidade de
referência (plano de fundo), indicam a localização de objetos algoritmos foram fornecidos e adaptados de vários autores que
de interesse. Geralmente o processo de subtração de fundo se interessaram pelo progresso deste trabalho. O código fonte
inclui as seguintes etapas: a) inicialização do modelo do plano está disponível sob a licença GNU GPL v3, a biblioteca é de
de fundo até um determinado limiar, b) manutenção deste código fonte aberto e livre para uso acadêmico e não-
modelo após o limiar, e, c) detecção do primeiro plano. A Fig. comercial. Para ser usada, é preciso ter a biblioteca OpenCV
1 apresenta as etapas relacionadas ao processo de subtração de instalada.
fundo.
O OpenCV2 (Open Source Computer Vision Library) é uma
Como pode ser visto em [21,27,29,30], dezenas de métodos biblioteca multiplataforma, totalmente livre ao uso acadêmico e
de subtração de fundo foram desenvolvidos ao longo dos comercial, para o desenvolvimento de aplicativos na área de
últimos anos. Alguns autores, tais como Thierry Bouwmans Visão Computacional. Esta biblioteca é composta por mais de
[31], Donovan Parks [7], Zoran Zivkovic [35], Laurence 500 algoritmos e foi desenvolvida nas linguagens de
Bender [15], Martin Hofmann [19], Jian Yao [14], Antoine programação C/C++, razão pela qual a BGSLibrary também foi
Vacavant [3] e Domenico Bloisi [6] colaboram com a desenvolvida em C/C++.
comunidade acadêmica disponibilizando gratuitamente a impl-
A seguir, são apresentadas as principais características e o
funcionamento da BGSLibrary. Também é abordado como
integrar a BGSLibrary em um projeto em C++ existente. Em
seguida, são apresentados os resultados da avaliação do custo
computacional e da precisão dos algoritmos de subtração de
fundo utilizando uma base de imagens pública. E, por fim, a
conclusão do presente trabalho.
1
http://code.google.com/p/bgslibrary/
Fig. 1. Diagrama de blocos do processo de subtração de fundo. 2
http://opencv.org/
II. BGSLIBRARY Identificação Nome do método
Autor
(es)
Conforme apresentado inicialmente, a BGSLibrary possui
Método(s) baseado(s) em autovalores e autovetores:
um total de 29 algoritmos de subtração de fundo. A Tab. 1
apresenta a lista completa dos algoritmos com seus respectivos DPEigenbackgroundBGS Eigenbackground / SL-PCA 1 [23]
autores. Os algoritmos foram agrupados por similaridade.
Método(s) neural(is) e neuro-fuzzy:
LBAdaptiveSOM Adaptive SOM 3 [16]
TABELA I. LISTA DOS ALGORITMOS DE SUBTRAÇÃO DE FUNDO
DISPONÍVEIS NA BGSLIBRARY LBFuzzyAdaptiveSOM Fuzzy Adaptive SOM 3 [17]
Autor 0
Nativo da biblioteca OpenCV.
Identificação Nome do método
(es) 1
Adaptado de Donovan Parks [7].
Método(s) básico(s): 2
Adaptado de Thierry Bouwmans e Zhenjie Zhao [31].
StaticFrameDifferenceB 3
Adaptado de Laurence Bender [15].
GS Static Frame Difference -
4
Adaptado de Jian Yao and Jean-Marc Odobez [14].
FrameDifferenceBGS Frame Difference - 5
Adaptado de Martin Hofmann, Philipp Tiefenbacher e Gerhard Rigoll [19].
WeightedMovingMeanB 6
GS
Weighted Moving Mean - Adaptado de Lionel Robinault e Antoine Vacavant [3].
WeightedMovingVarianc
eBGS
Weighted Moving Variance -
AdaptiveBackgroundLear
Adaptive Background Learning -
Neste artigo não serão descritos os aspectos matemáticos e
ning o funcionamento de cada método de subtração de fundo
DPMeanBGS Temporal Mean 1 - presente na BGSLibrary. Para melhores informações pode-se
DPAdaptiveMedianBGS Adaptive Median 1 [22]
consultar as referências na coluna Autor(es).
Método(s) não-paramétrico(s):
PixelBasedAdaptiveSegm
enter Pixel-Based Adaptive Segmenter 5 [18]
Fig. 2. Aplicativo MFC utilizando a BGSLibrary. É possível selecionar o
0
GMG GMG [1] método de subtração de fundo desejado e configurar os parâmetros de entrada.
Também é permitdo salvar a imagem de entrada, a máscara de primeiro plano
VuMeter VuMeter 6 [33] e o modelo do plano de fundo.
Item 1. Para os usuários do sistema operacional Linux, é loadConfig() definem as operações que devem ser realizadas
preciso baixar a versão mais recente do código fonte3 da para o armazenamento e carregamento de configurações.
BGSLibrary. Primeiramente é preciso de um cliente Tipicamente o arquivo de configuração é do tipo XML
Subversion (SVN) e seguir as intruções conforme as notas (eXtensible Markup Language) e deve ser localizado na pasta
do rodapé4. É fornecido um arquivo Cmake e um arquivo ./config/ conforme a árvore de diretórios.
README.txt com as intruções necessárias para a 01 #pragma once
compilação e execução. Após a compilação, o arquivo 02 #include <cv.h>
03
binário fica disponível na pasta ./build/. Executando a 04 class IBGS
BGSLibrary na linha de comando, é listado as seguintes 05 {
06 public:
opções: 07 virtual void process(const cv::Mat &img_input, cv::Mat
&img_output) = 0;
--use_cam (Define que a câmera será utilizada) 08 virtual ~IBGS(){}
09
--camera (Especifica o índice da câmera, default 0) 10 private:
11 virtual void saveConfig();
--use_file (Define que um arquivo de vídeo será utilizado) 12 virtual void loadConfig();
--filename (Especifica o endereço do arquivo de vídeo) 13 };
--stopAt (Define em qual quadro o programa deve parar) Fig. 3. Interface padrão definida no arquivo IBGS.h.
--use_comp (Define que um comparador de máscara de
primeiro plano será utilizado) A Fig. 4 ilustra um código fonte exemplo de como utilizar o
--imgref (Define a máscara de primeiro plano de referência) método Frame Difference em uma webcam. A linha 05 realiza
a inclusão do método de subtração de fundo desejado5. A linha
Na seção seguinte, é apresentado como integrar a 29 realiza o processamento da imagem de entrada (img_input)
BGSLibrary em um projeto em linguagem C++. e retorna a máscara de primeiro plano (img_mask). Caso seja
necessário realizar algum procedimento após a aquisição da
III. INTEGRANDO A BGSLIBRARY EM UM PROJETO EM C++ máscara de primeiro plano é preciso apenas descomentar as
Nesta seção é detalhado o processo de integração da linhas 31 e 32 e definir as operações desejadas.
BGSLibrary em um projeto em linguagem C++. Primeiramente 01 #include <iostream>
02 #include <cv.h>
é preciso baixar o código fonte da BGSLibrary similar ao 03 #include <highgui.h>
processo descrito no Item 2 (ver notas 4 e 5 do rodapé). 04
05 #include "package_bgs/FrameDifferenceBGS.h"
06
Após baixar os códigos fontes, o usuário irá visualizar a 07 int main(int argc, char **argv)
seguinte árvore de diretórios: 08 {
09 CvCapture *capture = cvCaptureFromCAM(0);
10 if(!capture)
trunk (raiz) 11 {
|----- build (p/ usuarios do Linux – ver Item 2) 12 std::cerr << "Cannot initialize camera!" <<
std::endl;
|----- config (pasta dos arquivos de configuração) 13 return 1;
|----- dataset (base de arquivos de vídeo) 14 }
15
|----- package_analysis (pacote p/ análise da máscara de 1º plano) 16 IBGS *bgs;
17 bgs = new FrameDifferenceBGS;
|----- package_bgs (pacote dos algoritmos de sub. de fundo) 18
|----- av (adaptado de Antoine Vacavant) 19 int key = 0;
20 while(key != 'q')
|----- dp (adaptado de Donovan Parks) 21 {
22 IplImage *frame = cvQueryFrame(capture);
|----- jmo (adaptado de Jian Yao) 23 if(!frame) break;
|----- lb (adaptado de Laurence Bender) 24
25 cv::Mat img_input(frame);
|----- pt (adaptado de Martin Hofmann) 26 cv::imshow("input", img_input);
27
|----- tb (adaptado de Thierry Bouwmans) 28 cv::Mat img_mask;
|----- vs2010 (projeto exemplo p/ Visual Studio 2010) 29 bgs->process(img_input, img_mask);
30
31 //if(!img_mask.empty())
A pasta package_bgs armazena todas as implementações 32 // do something
dos algoritmos de subtração de fundo. Os algoritmos estão 33
34 key = cvWaitKey(1);
agrupados em subpastas distintas conforme a contribuição dos 35 }
autores. O código fonte de cada algoritmo é identificado 36
37 delete bgs;
conforme a coluna Identificação descrita na Tab. 1. Todos os 38
39 cvDestroyAllWindows();
algoritmos herdam uma interface padrão denominada IBGS 40 cvReleaseCapture(&capture);
conforme a Fig. 3. A linha 07 define a assinatura do método 41
42 return 0;
process(...) que é responsável pelo processamento da imagem e 43 }
recebe dois parâmetro do tipo cv::Mat. O primeiro parâmetro Fig. 4. Código fonte exemplo de como utilizar o método Frame Difference
(img_input) representa a imagem de entrada (e.g. quadro de um em uma webcam.
vídeo) e o segundo parâmtro (img_output) define a imagem de
saída (máscara de primeiro plano). Os métodos saveConfig() e
5
Para selecionar outro método de subtração de fundo é preciso
3
http://bgslibrary.googlecode.com/svn/trunk/ alterar as linhas 05 e 17 de acordo com sua identificação (ver
4
http://code.google.com/p/bgslibrary/source/checkout coluna Identificação da Tab. 1)
Nas próximas duas seções são apresentadas uma avaliação TABELA II. LISTA DE CONFIGURAÇÕES DOS CENÁRIOS DA BASE BMC.
do custo computacional (benchmark) e precisão dos algoritmos Configuração Descrição
de subtração de fundo da biblioteca BGSLibrary. Todos os
algoritmos foram avaliados conforme sua configuração padrão 1 Imagens capturadas sem ruídos.
fornecida pelo seu(s) respectivo(s) autor(es). 2 Imagens capturadas com ruídos.
8
F1Total = (F1Rotary + F1Street) / 2
CONCLUSÕES [17] L. Maddalena and A. Petrosino, “A fuzzy spatial coherence-based
approach to background/foreground separation for moving object
Neste trabalho apresentou-se a biblioteca BGSLibrary que detection”, Neural Computing & Applications, Vol. 19, No. 2, pp. 179-
foi desenvolvida com o objetivo de servir como um framework 186, 2010.
para detecção e segmentação de objetos em movimento [18] M. Hofmann, P. Tiefenbacher, and G. Rigoll, “Background
utilizando a subtração de fundo. Os algoritmos foram avaliados segmentation with feedback: The Pixel-Based Adaptive Segmenter”, In
conforme seu custo computacional e precisão utilizando a base IEEE Computer Society Conference on Computer Vision and Pattern
Recognition Workshops (CVPRW), pp. 38-43, June 2012.
BMC. Espera-se que as avaliações e os resultados aqui
[19] M. Hofmann, https://sites.google.com/site/pbassegmenter/home,
apresentados possam colaborar na escolha de um método de accessed at 30/03/2013.
subtração de fundo adequado. Também pretende-se avaliar os [20] M. Sigari, N. Mozayani, and H. Pourreza, “Fuzzy Running Average and
métodos de subtração de fundo com outras bases de imagens e Fuzzy Background Subtraction: Concepts and Application”,
vídeos tais como SABS9 e ChangeDetection.net10. O objetivo International Journal of Computer Science and Network Security, Vol.
principal é aprimorar continuamente a biblioteca, adicionando 8, No. 2, pp. 138-143, 2008.
novos recursos e métodos de subtração de fundo com o apoio [21] N. Buch, S. Velastin, and J. Orwell, “A review of computer vision
da comunidade acadêmica e profissionais de todo o mundo. techniques for the analysis of urban traffic”, In IEEE Transactions on
Intelligent Transportation Systems (ITS'11), vol. 12, n. 3, pp. 920-939,
2011.
REFERÊNCIAS [22] N. J. B. McFarlane and C. P. Schofield, “Segmentation and tracking of
[1] A. B. Godbehere, A. Matsukawa, and K. Goldberg, “Visual Tracking of piglets in images”, Machine Vision and Applications, 8(3):187–193,
Human Visitors under Variable-Lighting Conditions for a Responsive May 1995.
Audio Art Installation”, American Control Conference (ACC), 2012. [23] N. M. Oliver, B. Rosario, and A. P. Pentland, “A Bayesian computer
[2] A. Vacavant, T. Chateau, A. Wilhelm and L. Lequièvre, “A Benchmark vision system for modeling human interactions”, In IEEE Transactions
Dataset for Foreground/Background Extraction”, In ACCV 2012, on Pattern Analysis and Machine Intelligence, 2000.
Workshop: Background Models Challenge, Daejeon, Korea, November [24] P. Kaewtrakulpong and R. Bowden, “An Improved Adaptive
2012. Background Mixture Model for Realtime Tracking with Shadow
[3] A. Vacavant, http://isit.u-clermont1.fr/~anvacava/index.html, accessed Detection”, In Proceedings of 2nd European Workshop on Advanced
at 30/03/2013. Video Based Surveillance Systems, 2001.
[4] C. Stauffer and W. E. L. Grimson, “Adaptive background mixture [25] S. Calderara, R. Melli, A. Prati, and R. Cucchiara, “Reliable background
models for real-time tracking”, IEEE Computer Society Conference on suppression for complex scenes”, In Proceedings of the 4th ACM
Computer Vision and Pattern Recognition, 1999. International Workshop on Video Surveillance and Sensor Networks,
2006.
[5] C. Wren, A. Azarbayejani , T. Darrell, and A. Pentland, “Pfinder: Real-
Time Tracking of the Human Body”, In The IEEE Transactions on [26] S. Cheung and C. Kamath, “Robust background subtraction with
Pattern Analysis and Machine Intelligence, 1997. foreground validation for urban traffic video”, In the Journal of Applied
Signal Processing, EURASIP, 2005.
[6] D. D. Bloisi ,
http://www.dis.uniroma1.it/~bloisi/software/imbs.html, accessed at [27] S. Brutzer, B. Hoferlin, and G. Heidemann, “Evaluation of background
30/03/2013. subtraction techniques for video surveillance”. In IEEE Conference on
Computer Vision and Pattern Recognition (CVPR'11), p. 1937-1944,
[7] D. Parks, http://dparks.wikidot.com/source-code, accessed at 2011.
30/03/2013.
[28] T. Bouwmans, F. El Baf, and B. Vachon, “Background Modeling using
[8] F. El Baf and T. Bouwmans, “Comparison of background subtraction Mixture of Gaussians for Foreground Detection - A Survey”, Recent
methods for a multimedia learning space”, In the International Patents on Computer Science, Vol. 1, No. 3, pp. 219-237, November
Conference on Signal Processing and Multimedia, SIGMAP, 2007. 2008.
[9] F. El Baf, T. Bouwmans, B. Vachon, “Fuzzy Integral for Moving Object [29] T. Bouwmans, “Recent advanced statistical background modeling for
Detection”, IEEE International Conference on Fuzzy Systems, FUZZ- foreground detection - a systematic survey”, In Recent Patents on
IEEE 2008, pages 1729-1736, Hong-Kong, China, 1-6 June 2008. Computer Science, vol. 4, n. 3, pp. 147-176, 2011.
[10] F. Baf, T. Bouwmans, and B. Vachon, “Type-2 Fuzzy Mixture of [30] T. Bouwmans, “Background subtraction for visual surveillance: A fuzzy
Gaussians Model: Application to Background Modeling”, In approach”, In Handbook on Soft Computing for Video Surveillance,
Proceedings of the 4th International Symposium on Advances in Visual Chapter 5, 2012.
Computing (ISVC'08), 2008.
[31] T. Bouwmans, https://sites.google.com/site/thierrybouwmans/, accessed
[11] H. Zhang and D. Xu, “Fusing Color and Texture Features for at 30/03/2013.
Background Model”, Third International Conference on Fuzzy Systems
and Knowledge Discovery, 2006. [32] Y. Benezeth, P. M. Jodoin, B. Emile, H. Laurent, and C. Rosenberger,
“Review and evaluation of commonly-implemented background
[12] J. Carranza, C. Theobalt, M. Magnor, and H. Seidel, “Free-viewpoint subtraction algorithms”, In Proceedings of the IEEE International
video of human actors”, In the ACM Transactions on Graphics, Conference on Pattern Recognition, 2008.
22(3):569–577, 2003.
[33] Y. Goyat, T. Chateau, L. Malaterre, and L. Trassoudaine, Vehicle
[13] J. Yao and Jean-marc Odobez, “Multi-layer background subtraction Trajectories Evaluation by Static Video Sensors, In The 9th International
based on color and texture”, IEEE Computer Vision and Pattern IEEE Conference on Intelligent Transportation Systems, Toronto,
Recognition Conference, Minneapolis, MN, 2007. Canada, 2006.
[14] J. Yao and J.M. Odobez, http://www.idiap.ch/~odobez/human- [34] Z. Zivkovic and F. V. D. Heijden, “Efficient adaptive density estimation
detection/related-publications.html, accessed at 30/03/2013. per image pixel for the task of background subtraction”, Pattern
[15] L. Bender, http://scene.sourceforge.net/, accessed at 30/03/2013. Recognition Letters, Volume 27 Issue 7, Pages 773-780, May 2006.
[16] L. Maddalena and A. Petrosino, “A Self-Organizing Approach to [35] Z. Zivkovic, http://www.zoranz.net, accessed at 30/03/2013.
Background Subtraction for Visual Surveillance Applications”, In IEEE [36] Z. Zhao, T. Bouwmans, X. Zhang, and Y. Fang, “A Fuzzy Background
Transactions on Image Processing, Vol. 17, No. 7, pp. 1168-1177, 2008. Modeling Approach for Motion Detection in Dynamic Backgrounds”, In
Proceedings of The Second International Conference Communications
9 in Computer and Information Science Volume 346, pp 177-185, 2012.
http://www.vis.uni-stuttgart.de/index.php?id=sabs
10
http://changedetection.net/