Oi, este será um artigo muito simples, mas você vai achar muito útil. Trata-se de Extração de fundo de um vídeo. Suponha que você tenha um vídeo de filmagem de tráfego, pode ser uma coisa assim. Tráfego na Índia. E você é convidado a encontrar um fundo aproximado. Ou qualquer coisa assim. A extração de fundo vem importante no rastreamento de objetos. Se você já possui uma imagem do fundo nu, então é simples. Mas, em muitos casos, você não terá essa imagem e, então, você terá que criar uma. É aí que o Running Average é útil. (Eu pensei sobre isso quando um cara fez uma pergunta no SOF. Link) A função que usamos aqui para encontrar Running Average é cv2.accumulateWeighted (). Por exemplo, se estamos assistindo um vídeo, continuamos alimentando cada quadro para esta função, e a função continua encontrando as médias de todos os quadros alimentados a ele de acordo com a relação abaixo: src não é senão a nossa imagem de origem. Pode ser em escala de cinza ou imagem colorida e ponto flutuante de 8 bits ou 32 bits. Dst é a imagem de saída ou acumulador com os mesmos canais que a da imagem de origem, e é um ponto flutuante de 32 bits ou 64 bits. Além disso, devemos declarar primeiro um valor que será tomado como valor inicial. Alfa é o peso da imagem de entrada. De acordo com o Docs, o alfa regula a velocidade de atualização (o quão rápido o acumulador 8220forgets8221 sobre imagens anteriores). Em palavras simples, se o alfa é um valor maior, a imagem média tenta capturar mudanças muito rápidas e curtas nos dados. Se for menor valor, a média fica lenta e não considera mudanças rápidas nas imagens de entrada. Vou explicar um pouco com a ajuda de imagens no final do artigo. No código acima, estabeleci duas médias, uma com maior valor alfa e outra com menor valor alfa para que você possa entender o efeito do alfa. No início, ambos são configurados para o quadro inicial da captura. E em loop eles são atualizados. Você pode ver alguns resultados no link SOF que eu já forneci. (Eu forneço esses resultados aqui, você pode verificar o código e o valor alfa lá): usei minha webcam e economize o quadro original e a média de execução em um instante particular. Este é um quadro de um vídeo de tráfego típico tirado por uma câmera estacionária. Como você pode ver, um carro está indo na estrada, e a pessoa está tentando atravessar a estrada em um determinado instante de tempo. Mas veja a média de corrida naquele momento. Não há pessoa e carro nesta imagem (Na verdade, está lá, tenha uma aparência próxima, então você vai ver isso, e a pessoa é mais clara que o carro, já que o carro está se movendo muito rápido e através da imagem, não tem muito Efeito em média, mas a pessoa está lá por um longo tempo, já que ele está lento e se move através da estrada.) Agora precisamos ver o efeito do alpha nessas imagens. Atualização de última atualização da área Última atualização da página: 18102016 Última versão da biblioteca: 1.9.2 (veja Notas de versão para mais informações) A BGSLibrary foi desenvolvida por Andrews Sobral e fornece uma estrutura C fácil de usar baseada em OpenCV para executar subtração de fundo (BGS) em vídeos. A BGSLibrary compila em Linux, Mac OS X e Windows. Atualmente, a biblioteca oferece 37 algoritmos BGS. Uma grande quantidade de algoritmos foram fornecidos por vários autores. O código-fonte está disponível sob a licença GNU GPL v3, a biblioteca é gratuita e de código aberto para fins acadêmicos. Para usuários do Windows, é fornecido um projeto de demonstração para o Visual Studio 20102013. Uma versão executável da BGSLibrary está disponível para Windows 32 bits e 64 bits. Para usuários de Linux e Mac, um Makefile pode ser usado para compilar todos os arquivos. Nota: a BGSLibrary baseia-se no OpenCV 2.X, se você quiser usar o OpenCV 3.x, confira o nosso ramo opencv3. O algoritmo PBAS foi removido da BGSLibrary porque se baseia no algoritmo patenteado ViBE. Alguns algoritmos da bgslibrary são gratuitos para fins comerciais e outros não. Primeiro, você precisa entrar em contato com os autores do seu método de subtração de fundo desejado e verificar com eles a licença apropriada. Para obter mais informações adicionais, consulte: Posso usar um software GPLv3 como parte da minha aplicação comercial. Se você usa esta biblioteca para suas publicações, cite-a como: Sobral, Andrews. BGSLibrary: uma biblioteca de subtração de fundo OpenCV C. IX Workshop de Viso Computacional (WVC2013), Rio de Janeiro, Brasil, junho de 2013. (PDF em português brasileiro com resumo em inglês). Sobral, Andrews Bouwmans, Thierry. Biblioteca BGS: uma estrutura de bibliotecas para avaliação de algoritmos na segmentação do primeiro plano. Capítulo sobre o manual de modelagem de fundo e detecção de primeiro plano para vigilância de vídeo, CRC Press, Taylor e Francis Group, 2014. (PDF em inglês). Algum algoritmo da BGSLibrary foi usado com sucesso nos meus trabalhos seguintes: (2014) Sobral, Andrews Vacavant, Antoine. Uma revisão abrangente de algoritmos de subtração de fundo avaliados com vídeos sintéticos e reais. Visão de visão e imagem de computador (CVIU), 2014. (Online) (PDF) (2013) Sobral, Andrews Oliveira, Luciano Schnitman, Leizer Souza, Felippe. (Melhor Prêmio de Papel) Classificação de Congestionamento de Tráfego Rodoviário Usando Propriedades Holísticas. Na Conferência Internacional sobre Processamento de Sinal, Reconhecimento de Padrões e Aplicações (SPPRA2013), Innsbruck, Áustria, fev 2013. (Online) (PDF) Lista dos algoritmos disponíveis no nome do Algoritmo BGSLibrary (clique para ver o código fonte) Como usar a Biblioteca BGS Em outro código C Baixe o último código fonte do projeto, copie o diretório packagebgs para o seu projeto e crie a pasta config (bgslibrary use-o para armazenar arquivos de configuração xml). Para usuários do Windows, é fornecido um projeto de demonstração para o Visual Studio 2010. Como contribuir com o projeto BGSLibrary Todos estão convidados a cooperar com o projeto BGSLibrary enviando qualquer implementação de algoritmos de subtração de fundo (BS). Veja o seguinte tutorial: githubandrewssobralbgslibraryblobmasterdocsbgslibraryhowtocontribute. pdf Lista completa de colaboradores da BGSLibrary Gostaria de agradecer a todos aqueles que contribuíram de alguma forma para o sucesso desta biblioteca, especialmente os seguintes povos (em ordem alfabética): Ahmed Elgammal (EUA) Antoine Vacavant (França), Benjamin Laugraud (Bélgica), Csaba Kertsz (Finlândia), Domenico Bloisi (Itália), Donovan Parks (Canadá), Eduardo Barreto Alexandre (Brasil), Fida EL BAF (França), Iigo Martinez, Jean - Marc Odobez (Suíça), Jean-Philippe Jodoin (Canadá), JIA Pei (China), Jian Yao (China), Hemang Shah, Holger Friedrich, Laurence Bender (Argentina), Lionel Robinault (França), Luca Iocchi (Itália), Luiz Vitor Martinez Cardoso (Brasil), Martin Hofmann, Philipp Tiefenbacher e Gerhard Rigoll (Alemanha), Rim Trabelsi (Tunísia), Simone Gasparini (França), Stefano Tommesani (Itália), Thierry Bouwmans (França), Vikas Reddy (Austrália), Yani Ioannou (Canadá), Zhenjie Zh Ao (China) e Zoran Zivkovic (Países Baixos). Versão 1.9.2: Adicionado algoritmos SuBSENSE e LOBSTER de Pierre-Luc et al. (2014). Versão 1.9.1: algoritmo de subtração de fundo Sigma-Delta adicionado (SigmaDeltaBGS) de Manzanera e Richefeu (2004). Versão 1.9.0: Adicionado um novo quadro para a subtração de fundo usando múltiplas caixas (SJNMultiCueBGS) de SeungJong Noh e Moongu Jeon (2012). Adicionado o suporte ao OpenCV 2.4.8 (todas as dependências estão vinculadas de forma estática). Versão 1.8.0: Subtração de fundo multimodal independente independente (IMBS) de Domenico Daniele Bloisi (2012). Aprendizado do Modelo de Fundo Adaptativo-Selectivo Adicionado. Versão 1.7.0: Detecção de primeiro plano baseada em textura com MRF de Csaba Kertsz (2011). Algumas melhorias e correções de bugs. Versão 1.6.0: Adicionado KDE de A. Elgammal, D. Harwood, L. S. Davis, modelo não paramétrico para a subtração de fundo ECCV00 (graças a Elgammal). Subtração de fundo com base em textura de Marko Heikkila e Matti Pietikainen Um método baseado em textura para modelar o fundo e detectar objetos em movimento PAMI06. Adicionado suporte OpenCV 2.4.5, algumas melhorias e correções de bugs. Versão 1.5.0: Adicionado VuMeter de Yann Goyat, Thierry Chateau, Laurent Malaterre e Laurent Trassoudaine (graças a Antoine Vacavant). Adicionado o aplicativo OpenCV C MFC (com código-fonte) usando a Biblioteca BGS para usuários do Windows. Adicionado o suporte ao OpenCV 2.4.4 (todas as dependências estão ligadas DLLs estáticamente), algumas melhorias e correções de bugs. Versão 1.4.0: Adicionado PBAS (Pixel-based Segmentador adaptativo) de M. Hofmann, P. Tiefenbacher e G. Rigoll. Adicionado T2F-GMM com MRF de Zhenjie Zhao, Thierry Bouwmans, Xubo Zhang e Yongchun Fang. (Graças a Zhenjie Zhao e Thierry Bouwmans) Adicionado GMG de A. Godbehere, A. Matsukawa, K. Goldberg (opencv nativo). Adicionado o suporte OpenCV 2.4.3 (todas as dependências estão ligadas DLLs estáticamente), algumas melhorias e correções de bugs. Versão 1.3.0: Adicionado Fuzzy Sugeno e Choquet Integral com Adaptive-Selective Background Model Update (graças a Thierry Bouwmans) Upground Mask Analysis upgrade, agora com número de True Positives (TP), True Negatives (TN), False Positives (FP) Falso Negativo (FN), Taxa de Detecção, Precisão, Medição, Precisão, Taxa Falso Negativa (FNR), Taxa Falsa Positiva (FPR), Taxa Verdadeira Positiva (TPR) e imagens ROC (graças a Thierry Bouwmans) Adicionado o suporte OpenCV 2.4 Alguns Melhorias, correções de bugs. Versão 1.2.0: Adicionado Multi-Layer BGS (graças a Jian Yao e Jean-Marc Odobez) Adicionado Modelos de Subtração de Fundo de Laurence Bender (Gaussiano Simples, Gaussiano Fuzzy, Mistura de Gaussianos, SOM Adaptativo e SOM Adaptativo Fuzzy) Adicionado Análise de Máscara de Primeiro Plano (Medida de similaridade) Versão 1.1.0: Adicionado Type2-Fuzzy GMM UM e UV (graças a Thierry Bouwmans) Adicionado suporte para calcular o tempo médio de algoritmos (veja param tictoc em. configFrameProcessor. xml) Versão 1.0.0: Primeira versão estável Adicionado 14 algoritmos de subtração de fundo (07 adaptados de Donovan Parks) Estou tentando implementar um método de subtração de fundo simples para a detecção de objetos em movimento em uma cena particular. O objetivo é segmentar um movimento específico de um vídeo para usá-lo em outro vídeo. O algoritmo que estou seguindo é: 1. Pegue os primeiros 25 quadros do vídeo e a média deles para obter um modelo de fundo. 2. Encontre o desvio padrão desses 25frames e armazene os valores em outra imagem. 3. Agora eu estou calculando a diferença absoluta entre cada quadro e o modelo de fundo médio em pixels. A saída que estou obtendo é uma espécie de movimento transparente sendo destacado em branco (a diferenciação absoluta está resultando na transparência que eu penso). Quero saber se a minha abordagem é correta ou não considerar que vou fazer uma segmentação sobre esse resultado como próximo passo E também não estou entendendo como usar a imagem de desvio padrão. Qualquer ajuda será apreciada. Por favor, deixe-me saber se este não é o tipo de pergunta que eu devo publicar no estouro de pilha. Nesse caso, qualquer referência ou links para outros sites serão úteis. Pediu 26 de junho às 9:12
Комментариев нет:
Отправить комментарий