Contagem de veículos a partir de um vídeo

10

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.)

Imagem 1

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.

picture2

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:

picture3

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?

Horizon1710
fonte
Seu problema é o motivo pelo qual as pessoas usam o rastreamento. Além disso, você deseja que os carros que estão se movendo juntos (digamos, um carro com reboque) sejam contados como um veículo ou dois?
Emre
Em primeiro lugar, obrigado pela edição. Não espero precisão de 100%, carros com reboques podem ser ignorados. mas se houver dois carros separados muito próximos um do outro, preciso fazer o programa diferenciar os dois, mas não faço ideia.
Horizon1710

Respostas:

5

Você pode acompanhar os últimos 10 a 15 quadros e contar o número de pixels brancos desses quadros. Você pode diferenciar se é um veículo ou não, já que o gráfico será alto para 10 a 15 quadros, você poderá dizer que é um veículo, caso contrário, é ruído.

Para contar vários carros em várias faixas lado a lado, você pode verificar a coluna de pixels, quero dizer verticalmente. Por enquanto, você deve verificar os pixels horizontalmente em busca de pixels brancos.

Ruhi Akaboy
fonte
Sim, você está certo em verificar as linhas verticais, mas como? Posso determinar o ponto de entrada dos veículos verificando a primeira linha do meu ROI?
Horizon1710 22/12/12