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.
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 № 1Para 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.