【问题标题】:Scikit-image: how to reduce broken line segments, overlapping lines?Scikit-image:如何减少断线段、重叠线?
【发布时间】:2017-10-26 18:50:07
【问题描述】:

我目前正在开展一个项目,以在如下所示的图像中查找直线和这些直线的长度:

我在 python 中使用 scikit-image 包试图找到这些行,这是我的代码:

edges=canny(image[:,:,0], 2, low_threshold=0.6, high_threshold=0.9) lines=probabilistic_hough_line(edges, threshold=30, line_length=40, line_gap=1)

然后我绘制了线条来验证我是否找到了大部分直线

这就是我得到的:

可以看出,沿着原始图像上的线条(黑色)有很多重叠和折断的线段(多色)。彩色线的长度应等于黑色线的长度,并且每条黑色线不应有重复的线段。

我尝试调整所有变量,例如“threshold”、“sigma”、“line_length”、“gap”等,但仍然无法完全摆脱重复的线段。

有人能给我一些提示或指导,告诉我我做错了什么,以及我应该在这个问题上做什么,好吗?希望我的问题不会太混乱。

我尝试使用 Scikit-image,因为在我看来,它比 OpenCV 的重量相对更轻。

提前谢谢你。

【问题讨论】:

  • 如果有人能提供一些类似的例子还是很有帮助的。

标签: python opencv computer-vision scikit-image


【解决方案1】:

您需要先对图像进行骨架化。然后 Canny 将毫无用处(鉴于您的图像类型,骨架化将为您提供所需的 1 像素粗轮廓)。

现在发生的情况是图像上的线条很粗,因此 Canny 会检测每条粗线两侧的轮廓,而 Hough 变换会检测两个轮廓上的线条。

使用skimage,您可以使用from skimage.morphology import skeletonize

【讨论】:

  • 谢谢,Eskapp。看起来骨架化适用于比细线更宽的形状。我会继续探索,稍后会分享结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
  • 2021-01-01
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多