Pergunta

Eu tenho um feed de vídeo. Este feed de vídeo contém várias luzes piscando em taxas diferentes. Todas as luzes são da mesma cor (todos são LEDs infravermelhos). Como posso detectar a posição e a frequência dessas luzes piscantes?

Isenção de responsabilidade: eu sou extremamente novo no OpenCV. Eu tenho uma cópia de Aprendizagem OpenCV, mas estou achando um pouco esmagador. Se alguém pudesse explicar uma solução na terminologia do OpenCV, seria muito apreciada. Não estou esperando que o código seja escrito para mim.

Foi útil?

Solução

Limiar cada imagem na sequência com um limite que torna o LED: S visível. Se você puder limiar com um limiar que Mantém o LED e remove o plano de fundo, então você está mais ou menos acabado, pois tudo o que você precisa fazer agora é acompanhar cada posição que viu um LED e contar com que frequência ele ocorre.

Como uma etapa do meio, se houver "ruído de fundo" na imagem limite, seria usar a erosão para remover pequenos erros e, em seguida, talvez dilatar para "fechar buracos" nas bolhas nas quais você está realmente interessado.

Se a cena for estática, você também poderá criar um modelo de fundo simples, tomando a mediana de alguns quadros e removendo a imagem mediana resultante de qualquer quadro e limiar. As coisas que mudaram (seus LEDs) parecerão mais fortes.

Se a cena estiver em movimento, não vejo outra solução (fácil) do que garantir que o LED seja brilhante o suficiente para poder usar a abordagem limite dada acima.

Quanto ao OpenCV: se você sabe o que deseja fazer, não é muito difícil encontrar uma função que o faça. A parte difícil está criando um método para resolver o problema, não a codificação real.

Outras dicas

Se os LEDs estiverem estacionários, o problema é muito mais simples do que quando estão se movendo. Supondo que eles estejam estacionários, uma solução para encontrar a frequência pode ser simplesmente manter um vetor ou uma matriz para cada local de pixels em que você armazena os valores desse pixel, de preferência após o pré -processamento descrito por Kigurai, durante algum tempo. Você pode calcular a transformação de Fourier 1D desses vetores de valor e encontrar a frequência do solo como o primeiro componente significativo após o pico da CC. Se o pico da CC estiver muito baixo, significa que não há LED lá.

Espero que esse problema ainda seja um pouco real e que minha solução faça sentido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top