Isenção de responsabilidade : Publiquei esta pergunta no StackOverFlow, mas aprendi que ela é mais adequada aqui.
Eu sou um pouco novo no processamento de imagens, então gostaria de perguntar sobre como encontrar a solução ideal para o meu problema, não para ajudar no código. Eu ainda não conseguia pensar em uma boa idéia, então queria pedir seu conselho.
Estou trabalhando em um projeto usando o OpenCV na contagem de veículos de um arquivo de vídeo ou de uma câmera ao vivo. Outras pessoas que trabalham nesse projeto geralmente acompanham os objetos em movimento e depois os contam, mas, em vez disso, eu queria trabalhar com um ponto de vista diferente; solicitando que o usuário defina um ROI (região de interesse) na janela de vídeo e trabalhe apenas para essa região (por alguns motivos, como não lidar com todo o quadro e com algum aumento de desempenho), como mostrado abaixo. (O usuário pode definir mais de um ROI e o usuário é solicitado a definir a altura do ROI duas vezes mais que um carro normal, pelo senso de proporção.)
Até agora, fiz alguns progressos básicos, como atualização em segundo plano, filtros morfológicos, limiar e obtenção do objeto em movimento como uma imagem binária, como abaixo.
Depois de fazer isso, tentei contar os pixels brancos do quadro final em primeiro plano com limite e estimar se era um carro ou não, verificando o número total de pixels brancos (eu defini um limite inferior por um cálculo estático, sabendo a altura do ROI) . Para ilustrar, desenhei um gráfico de exemplo:
Como você pode ver, era fácil calcular os pixels brancos e verificar se havia uma curva no tempo e determinar se um carro ou algo parecido com ruído.
Problema
Tive bastante sucesso até que dois carros passaram pelo meu ROI juntos ao mesmo tempo. Meu algoritmo os contou incorretamente como um carro. Tentei abordagens diferentes para esse problema e similares a esse como veículos longos, mas não encontrei uma solução satisfatória.
Questão
É possível lidar com essa tarefa com esta abordagem da contagem de valores de pixels? Se não, o que você sugere?