Обнаружение объектов при 2D-лазерном сканировании

В настоящее время я отчаянно пытаюсь обнаружить объект (робота) на основе 2D-лазерного сканирования (другого робота). На следующих двух изображениях синяя стрелка соответствует положению лазерного сканера и указывает на объект, который я хотел бы обнаружить.

одна сторона объекта

две стороны объекта

Поскольку это в основном 2D-изображение, мой первый подход заключался в поиске некоторых реализаций OpenCV, таких как HoughLinesP или LSDDetector, чтобы обнаружить линии. К сожалению, поскольку OpenCV больше фокусируется на «реальных» изображениях с «реальными» линиями, этот подход не работает с облаками точек, насколько я правильно понял. Еще одна известная библиотека - это библиотека облаков точек, которая, с другой стороны, больше ориентирована на трехмерные облака точек.

Мой текущий подход состоит в том, чтобы сегментировать лазерные сканирования, а затем использовать некоторую итеративную реализацию C ++ для определения ближайшей точки (ICP), чтобы найти шаблон двумерного облака точек в лазерных сканированиях. Поскольку я не так хорошо знаком с обнаружением объектов и всем этим приятным, я совершенно уверен, что есть более сложные решения ...

Есть ли у вас какие-либо предложения?

Спасибо заранее :)


person Felipa    schedule 03.11.2015    source источник


Ответы (1)


Чтобы получить линии из точек, вы можете попробовать RANSAC. Вы можете итеративно подгонять линии к точкам, затем удалить точки, соответствующие новой линии, и повторять, пока не будет достаточно точек, или поддержка будет слишком низкой, или что-то в этом роде.

Надеюсь, это поможет.

person SimonFojtu    schedule 03.11.2015
comment
Спасибо за Ваш ответ. Я думаю, проблема в том, что линии - это очень грубое приближение к форме робота. Кроме того, я думаю, что вычисление скорректированного RANSAC занимает довольно много времени, поскольку мне нужно подгонять новую линию для каждой новой точки. - person Felipa; 04.11.2015
comment
Что ж, из вашего вопроса сложно вывести форму робота. Но вы можете подогнать любую форму с помощью RANSAC, вам просто нужно предоставить функцию, которая определяет, подходит ли подмножество точек модели. - person SimonFojtu; 04.11.2015