【发布时间】:2021-11-16 20:44:29
【问题描述】:
如何隔离没有白色填充的条形,在下图中代表条形图的图像中?
我正在寻找一种适用于该图像的任何变体的解决方案。您可以假设格式相同,但某些特征(如网格线/轴线中的间隙)可能位于不同的位置。
我尝试检测条形的各种特征,例如条形的 26x3px 末端,或左上角和右下角。例如,对左上角使用如下掩码:
bar_top_kernel: Numpy = np.array([
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0],
], dtype='uint8')
或
bar_top_kernel: Numpy = np.array([
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[0, 1, 1, 0, 0, 0, 0, 0, 0, 0],
], dtype='uint8')
但根据我的尝试,我会因为条形的末端与网格线的交互方式而错过角点或误报。
我已尝试先删除网格线。但是由于条形末端和网格线的相互作用,我倾向于留下干扰特征检测的碎片。
我开始认为如果没有某种 ML 方法,这可能是不可能的,但我希望有人能发现一个聪明的技巧来实现这一点。
【问题讨论】:
-
请提供源数据。这看起来像一个阈值版本。
-
你是对的,但我的消息来源无济于事。条形和背景颜色完全相同,条形轮廓和网格线颜色也相同。来源基本上是这张图片的反面+我已经删除的各种颜色的注释。(但是我不能提供来源,抱歉)。
标签: python opencv feature-detection