来自精灵表的图像边界框

时间:2018-06-08 08:39:37

标签: c++ qt opencv image-segmentation

我有一张精灵表,其中包含一组图标,如下所示:

image of symbols

我想获得其中所有图标的bounding box(以像素精度),有些情况如列表,网格必须被视为仅一个图标。任何想法都非常受欢迎。

2 个答案:

答案 0 :(得分:1)

我认为你问题中的主要问题是某些图标包含不相交的部分。 如果所有图标只在一个部分中,您可以在图像中找到“连接组件”(白色像素组)并隔离它们。

我不知道你在图像处理方面的水平,但是为了连接一个图标的部分,我可能会使用扩张,这是一种形态学方法来扩展(在约束下)图像中最大强度的区域。

如果您需要任何澄清,请告诉我们!

答案 1 :(得分:0)

一般情况下,这是不可能的:只有人类有足够的背景来确定哪些不相交的部分属于一起。你可以用各种方式来近似它,但这是一个失败的原因 - 而恕我直言完全没必要。想象一下为这个功能编写一个测试 - 这是不可能的,它需要一个人在循环中,因为任何特定图标表的结果都不一致。知道该算法适用于某个工作表,不会告诉您它是否适用于您对先验一无所知的其他工作表。

手动着色每个精灵的颜色与其邻居的颜色不同会更简单。然后一个贪婪的算法可以轻松地找到边界框,而不必近似任何东西。