Подтвердить что ты не робот

Извлечение сегментов линии из преобразования hough

Как определить сегменты линии вместо строк на изображении после выполнения преобразования Hough? Имеет ли смысл сохранять минимальные и максимальные координаты для каждого накопительного бункера или есть лучший способ?

Я не использую OpenCV, btw.

4b9b3361

Ответ 1

Даже если вы не используете OpencV, вы можете посмотреть код HoughLinesP function, который возвращает сегменты линии.

И да, сохранение экстремальных координат аккумуляторов имеет смысл.

[изменить] 2011-07-19] Если у вас несколько сегментов линии, которые лежат на той же строке, что и в примере belisarius" выше, вам нужно будет сделать еще одну работу, просто помните, что крайние координаты не будут быть достаточным. Так что это зависит от вашего точного приложения.

Ответ 2

Я думаю, что этот образ, показывающий преобразование Hough для линий и сегментов, поможет вам поймать, что происходит:

enter image description here

Ответ 3

В принципе, вам нужно будет следить за тем, какие именно очки давали голосование каждому бункеру Hough. Вы можете сделать это либо после заполнения бункеров (как в версии Matlab), так и при заполнении бункеров (более эффективное, но также более интенсивное, что может быть неэффективным для встроенной платформы). Оттуда вы можете следить за пикселями вдоль линии, чтобы извлекать фактические сегменты, создавая новый сегмент, когда промежуток между соседними пикселями слишком велик.

См. это частичное описание алгоритма Matlab для получения дополнительной информации о том, как извлекать пиксели в конкретный бункер Хью, включая фактическую реализацию (связанный с hough_bin_pixels.m).

Ответ 4

Matlab имеет функцию houghlines, которая делает именно то, что вы хотите. Он извлекает сегменты линии на основе преобразования hough.

http://www.mathworks.com/help/toolbox/images/ref/houghlines.html

Сохранение экстремальных координат для бункеров hough не будет работать, если два отдельных сегмента линии лежат в одной строке.

Ответ 5

Я хочу сделать прямо противоположное, я хочу извлечь всю линию, а не отрезки. Как вы можете видеть ниже, houghlines создает несколько отрезков, как можно извлечь длинные строки?

Красный - это линии, зеленый - это отправные точки, а желтый - это конечные точки.

образ