【发布时间】:2018-02-28 19:25:18
【问题描述】:
在 python 中,我使用霍夫线来检测图像上的线条。它可以很好地检测线条,但source image 是手绘的,在每个线段上产生了许多直线。我想结合具有相似斜率和 y 截距的线来重新创建图像的整体结构。 我知道我可以更改霍夫线参数(阈值、min_length、max_gap)以制作更长的直线,但我想保持霍夫线函数的粒度输出并使用输出线重新构建结构
图像的霍夫线看起来像this
我当前的输出是一个带有线条起点/终点、斜率和 y 截距的字典:
{'slope': -2.0, 'start': (438, 317), 'yintercept': 167.0, 'end': (457, 279)}
{'slope': -8.0, 'start': (580, 414), 'yintercept': 1442.0, 'end': (582, 398)}
{'slope': -5.333333333333333, 'start': (438, 375), 'yintercept':
{'slope': -1.5, 'start': (492, 215), 'yintercept': 142.5, 'end': (502, 200)}
{'slope': 0.0, 'start': (524, 316), 'yintercept': 152.0, 'end': (536, 316)}
{'slope': 3.0, 'start': (533, 238), 'yintercept': -232.0, 'end': (527, 220)}
{'slope': -1.9142857142857144, 'start': (450, 292), 'yintercept': 164.37142857142857, 'end': (485, 225)}
{'slope': 0.0, 'start': (467, 317), 'yintercept': 153.0, 'end': (523, 317)}
原始输出中有 40 行,但我想合并为 6 行。
我的问题:
- 按斜率和 y 截距进行分组的最佳方法是什么?
- 如何将相似但不精确的行分组?
我可以按精确斜率分组:
grouper = itemgetter("slope")
result = []
for key, grp in groupby(sorted(line_dict, key = grouper), grouper):
result.append(list(grp))
对此的任何帮助表示赞赏。
【问题讨论】:
标签: python opencv image-processing scikit-image