Улучшение извлечения строк из Opencv HoughLinesP

Я использую HoughLinesP для извлечения строк из изображения в градациях серого.

Ниже мой псевдокод.

threshold(img_tmp,bin_img,30,255,cv::THRESH_BINARY);
Canny(bin_img, canny_img, 50, 255, 3);
vector<Vec4i> tmp_lines;
HoughLinesP(canny_img,tmp_lines, 1, CV_PI/360,10, 10, 1);

Как видно на увеличенном изображении, один край (т. е. одна строка на изображении) возвращает более одной строки. 16,22 и 0,28 и 10,11 и 23,18,24 строки соответствуют одной строке.

Как я могу получить одну строку для одного края, какие-либо предложения?

Входное изображение:

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

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

Проблема

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

Благодарю.


person nayab    schedule 04.03.2015    source источник
comment
Проблема в том, что вы используете хитрый детектор краев, который находит края с обеих сторон каждой строки. Он хорошо работает с естественными изображениями и находит границу между двумя объектами/частями, но совершенно не подходит для вашего типа ввода. Я бы попробовал установить пороговое значение изображения, немного очистить его (используя морфологию), инвертировать (чтобы границы были белыми) и отправить его Хафу.   -  person Rosa Gronchi    schedule 05.03.2015
comment
Для очистки я пробовал дилатацию и эрозию, но результат тот же.   -  person nayab    schedule 05.03.2015
comment
Вы бежали хитро? основная проблема заключается в том, чтобы не запускать какие-либо операции по обнаружению краев или градиенту. вы можете использовать Canny-подобное подавление не максимума для очистки (вам придется немного размыть изображение перед этим)   -  person Rosa Gronchi    schedule 05.03.2015
comment
Я попробовал пороговую --›эрозию--›расширение--›осторожность--› хотя результат не улучшился. Я попробую размыть, прежде чем делать хитрость.   -  person nayab    schedule 05.03.2015


Ответы (1)


Опять же, хитрый или любой другой алгоритм обнаружения краев не подходит для такого типа ввода, поскольку линии в основном являются краями. Попробуйте применить какое-либо подавление не максимума на входе, за которым следуют линии Хафа без какого-либо обнаружения края.

person Rosa Gronchi    schedule 06.03.2015