Pergunta

Eu construí um sistema de imagem com uma webcam e correspondência de recursos de forma que conforme eu movo a câmera;Posso rastrear o movimento da câmera.Estou fazendo algo semelhante a aqui, exceto com os quadros da webcam como entrada.

Funciona muito bem para imagens "boas", mas ao tirar imagens com pouca luz aparece muito ruído (alto ganho da câmera), e isso atrapalha a detecção e correspondência de recursos.Basicamente, ele não detecta nenhum recurso bom e, quando o faz, não consegue combiná-los corretamente entre os frames.

Alguém conhece uma boa solução para isso?Que outros métodos são usados ​​para localizar e combinar recursos?

Aqui estão dois exemplos de imagens com recursos muito baixos:

Frame 1

Frame 2

Foi útil?

Solução

Eu penso correlação de fase será sua melhor aposta aqui.Ele foi projetado para informar a mudança de fase (ou seja, tradução) entre duas imagens.É muito mais resiliente (mas não imune) ao ruído do que a detecção de recursos porque opera no espaço de frequência;enquanto os detectores de recursos operam espacialmente.Outro benefício é que é muito rápido quando comparado com métodos de detecção de recursos.Eu tenho uma implementação disponível no tronco OpenCV com localização precisa de subpixel aqui.

No entanto, suas imagens são praticamente "sem características", com exceção do vinco no meio, portanto, mesmo a correlação de fase pode apresentar alguns problemas.Pense nisso como tentar detectar a tradução durante uma tempestade de neve.Se tudo o que você consegue ver é branco, você não pode dizer que traduziu, daí o termo branqueamento.No seu caso, o algoritmo pode sofrer de "greenout" :)

Você pode ajustar as configurações da câmera para funcionar melhor em condições de pouca luz.Você abriu totalmente a íris?Você consegue conviver com taxas de quadros mais baixas?Definir um tempo de exposição mais longo permitirá que a câmera colete mais luz, oferecendo mais recursos ao custo de adicionar desfoque de movimento.Ou, se o seu ambiente padrão for pouca luz, você provavelmente desejará algo projetado para isso, como uma câmera infravermelha, mas pode ser caro.Fora isso, uma lente grande e longas exposições são suas amigas :)

Equalização do histograma pode ser interessante para melhorar o contraste da imagem.Mas, às vezes, pode apenas aumentar o ruído.OpenCV tem uma função de equalização de histograma global chamada equalizarHist.Para uma implementação mais localizada, você vai querer dar uma olhada em Contrast Limited Adaptive Histogram Equalization ou CLAHE abreviado. Aqui é um bom artigo sobre isso. Esse página tem alguns bons exemplos e algum código.

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