/ / Detecção de objetos em varredura a laser 2D - opencv, registro, biblioteca de nuvens de pontos, ros, detecção de objetos

Detecção de objetos em varredura a laser 2D - opencv, registro, biblioteca de nuvem de pontos, ros, detecção de objetos

Atualmente, tento desesperadamente detectar um objeto(robô) com base em digitalizações a laser 2D (de outro robô). Nas duas figuras a seguir, a seta azul corresponde à posição do scanner a laser e aponta em direção ao objeto que eu gostaria de detectar.

um lado do objeto

dois lados do objeto

Como é basicamente uma imagem 2D, minha primeira abordagem foi procurar algumas implementações do OpenCV, como HoughLinesP ou LSDDetector para detectar as linhas. Infelizmente, como o foco do OpenCV é mais em imagens "reais" com linhas "reais", essa abordagem não funciona realmente com as nuvens de pontos, até onde eu entendi corretamente. Outra biblioteca famosa é a biblioteca de nuvens de pontos, que, por outro lado, se concentra mais nas nuvens de pontos 3D.

Minha abordagem atual seria segmentar o laservarreduras e, em seguida, use alguma implementação C ++ do ponto mais próximo iterativo (ICP) para encontrar um modelo de nuvem de pontos 2D nas varreduras a laser. Como não estou familiarizado com a detecção de objetos e todas essas coisas legais, tenho certeza de que existem algumas soluções mais sofisticadas ...

Você tem alguma sugestão?

Muito obrigado antecipadamente :)

Respostas:

0 para resposta № 1

Para obter linhas a partir de pontos, você pode tentar RANSAC. Você ajustaria iterativamente as linhas aos pontos, depois removeria os pontos correspondentes à nova linha e repetiria até que não houvesse pontos suficientes ou o suporte estivesse muito baixo ou algo assim.

Espero que ajude.