2015-06-13 2 views
1

Я хотел бы обнаружить линию и извлечь ее две оканчивающиеся точки. В общем подходе используется преобразование hough. К счастью, в OpenCV есть sample, поэтому я нарисовал линию, чьи две точки заканчиваются p1(100,200), p2(400,200). Я думал, что вышеупомянутый метод предоставит мне только эти моменты. Мой образец изображенияПочему hough transform обнаруживает две строки, в то время как есть только одна строка

enter image description here

преобразование поджилки дает мне с двумя изображениями, которые

enter image description here

enter image description here

Для Канни фильтра,

enter image description here

В коде, кажется, обнаружены две линии. Это объясняет, почему красная линия толще, что указывает на то, что есть две строки, а не одна. Когда я распечатываю количество строк, он показывает мне следующие два:

lines.size(): 2 
p1:<99,201> p2:<401,201> 
lines.size(): 2 
p1:<102,198> p2:<398,198> 

Почему я получаю две линии?

+0

В зависимости от количества ячеек в HoughSpace не все пиксели могут быть назначены линии. Попробуйте более широкие/меньшие корзины. – MisterC

+0

Вы используете определение canny edge перед houghLines? вы должны проверить промежуточный образ, как он выглядит. градиент может создать один край на каждой стороне толстой линии. – Micka

+0

@ Мика, да образец фактически использует хитрый алгоритм. – CroCo

ответ

1

Возможно, это связано с шириной бункеров в вашем HoughSpace. Вы, наверное, выбрать один из OpenCV Functio по умолчанию, т.е.

HoughLines(X, X, 1, CV_PI/180, X, X, X);

Аргументы, которые не X определяют ширину бункеров see. Там говорится:

rho : The resolution of the parameter r in pixels. We use 1 pixel.

Для первого аргумента и для второго:

theta: The resolution of the parameter \theta in radians. We use 1 degree (CV_PI/180)

Я сейчас не те значения, которые вы выбрали, но вы можете выбрать более крупные ,

+0

Я попытался изменить один параметр, но не повезло. – CroCo

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