2013-03-27 5 views
1

Моя цель для автономного робота, ориентированного на стену, с использованием камеры. Камера закреплена на роботе и обращена вниз, чтобы видеть стены и робот сверху. enter image description hereИспользование преобразования Hough в роботизированной навигации

Подход, который я взял, что казалось самым простым из моего опыта было

  1. Threshold изображение, чтобы извлечь красные стены
  2. Выполните Канни край обнаружения
  3. Используйте преобразование поджилки обнаружить сильные линии от краев

, как показано ниже, после настройки параметров enter image description here

Я хочу, чтобы робот двигался вперед и избегал «удара» красных стен. Проблема заключается в том, что на границе каждой стены на границе каждой стены обнаруживается несколько линий. Одна из моих идей заключалась в том, чтобы выполнить кластеризацию k-значений для группировки линий и поиска центров (средств) каждого кластера, но я не знаю количества ребер стены (и, следовательно, количество кластеров для ввода в алгоритм k-средних) Я буду в любое время в навигации по лабиринту (стены впереди, сзади, многократные перекрестки и т. Д.).

Любая помощь в поиске хорошего способа иметь постоянное расположение стены для сравнения местоположения робота (которое всегда фиксируется в каждом кадре изображения) в любое время при навигации по лабиринту будет с благодарностью. Я также открыт для любого другого подхода к этой проблеме.

+0

Очевидный подход кажется мне просто отбросить любые найденные строки, если они близки по направлению и положению к более сильной линии, то есть пройти список строк и отбросить все, что похоже на более раннюю строку. Не нужно кластеризовать их, тем более, что эти строки будут иметь разные уровни достоверности, и вы не знаете их, только их относительный порядок, если вы используете преобразование opencv hough. – HugoRune

ответ

1

Запустите алгоритм skeletonization перед извлечением HoughLines.

+0

Посмотрел на скелетонизацию, которая должна очень помочь с ограничением краев. выполнить преобразование hough. Есть ли у вас какие-либо ссылки в том, как реализовать это в OpenCV, но в режиме реального времени (любые оптимизированные версии?) Я нашел это здесь http://felix.abecassis.me/2011/09/opencv-morphological-skeleton/, но нашел его в не так оптимизирован для реального времени, как хотелось бы. – salgarcia

Смежные вопросы