【发布时间】:2015-03-04 15:14:05
【问题描述】:
我正在使用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 行对应单行。
我怎样才能得到单边的单线,有什么建议吗?
输入图片:
提取线
问题
谢谢。
【问题讨论】:
-
问题是您使用的是精明的边缘检测器,它可以在每条线的两侧找到边缘。它适用于自然图像并找到两个对象/部分之间的边界,但它非常适合您的输入类型。我会尝试对图像进行阈值处理,稍微清理一下(使用形态学),反转(使边界为白色)并将其发送给 Hough
-
为了清洁,我尝试了膨胀和腐蚀,但结果是一样的。
-
你跑了吗?主要问题是不要运行任何类型的边缘检测或梯度操作。您可以使用类似 Canny 的非最大值抑制进行清洁(在此之前您必须稍微模糊图像)
-
我尝试了阈值-->侵蚀-->膨胀-->canny-->霍夫,但结果没有改善。我会在做精明之前尝试模糊。
标签: opencv image-processing grayscale hough-transform