如何“裁剪”canny边缘检测器的结果

时间:2013-12-02 13:23:28

标签: c++ opencv image-processing

我运行canny函数,结果如下:

canny Result

我想研究两个区域“线”,所以我想裁剪它们:比如

what I want to do

顺便说一句,“线”可以在不同的位置:就像 3rd

我不是要求代码,而只是为了我的创意怎么做 提前致谢 !

1 个答案:

答案 0 :(得分:1)

缩小边缘图像并使其模糊,使边缘像素大致形成两条细长的连续线 (您可能希望对原始图像进行缩放和模糊,而不是使用精细边缘图像,检查哪种效果最佳):

enter image description here

然后使用hough transform

检测这些行

如果您的霍夫变换报告每个实线的多个匹配,您可以过滤掉靠近的匹配,或者将图像缩小一些,或者减少霍夫变换的分辨率参数

一旦你有了这些线条,就用距离线去掉每个像素> epsilon


替代建议:

Morphological closing:将边缘图像扩张几次,使边缘像素形成连续的斑点。侵蚀图像几次。

这个blob的

Detect the contours与cv :: findcontours。

使用cv :: approxPolyDP简化轮廓。

如果你只想要两条线的边界轮廓,你就完成了。否则,遍历每个轮廓线段,找到两个长线段之间的直角转弯,以找到分割轮廓的位置,如果要分开线条。