Как отфильтровать линии Hough в многоканальном обнаружении?

Я использую HoughTransformP для обнаружения переулков в OpenCV C ++.

Моя последовательность шагов для определения линии является базовой и выглядит следующим образом:

1. Bird Eye View of image
2. Grayscale image
3. Guassian Blur image
4. Canny Edge detect
5. HoughTransformP canny image
6. Filter out horizontal lines based on slope

Выходные данные после обнаружения края:

введите описание изображения здесь

Проблема в том, что HougLinesP выдает несколько строк, а не только дорожки. Вывод выглядит примерно так:

введите описание изображения здесь

Я пытаюсь получить что-то вроде этого:

введите описание изображения здесь

Как я могу отфильтровать беспорядок линий и нарисовать только линии линий?

1

Решение

Схема возможного алгоритма:

  1. Кластеризация сегментов линии: ссылаясь, например, на следующее изображение, вы сможете пометить каждый сегмент с помощью 1, 2, 3 или же 4,

  2. Для каждого кластера найдите «среднюю линию».

введите описание изображения здесь

Приведите отрезки в Гессенская нормальная форма
x*cos(beta)+y*sin(beta)-p=0 где p это расстояние между сегментом и началом и beta это угол, который вы видите на следующем изображении:

введите описание изображения здесь

Вы можете кластеризовать отрезки с помощью правильной техники машинного обучения, например, с вектором входных объектов [p, beta], то вы можете найти «среднюю линию», например, усредняя оба b а также beta,
Скажем, у вас есть два сегмента [p_1, beta_1] а также [p_2, beta_2] принадлежащих к одному кластеру, средний сегмент [(p_1+p_2)/2, (beta_1+beta_2)/2],

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]