检测并定位图像中的大量不同对象

问题描述 投票:0回答:1

我有多个三消游戏的图像,例如糖果粉碎传奇。下面给出了其中一张示例图像。我想检测并定位图像中所有不同颜色的对象。通过本地化,我的意思是获取图像中每个对象的精确坐标。我尝试过不同的方法,例如边缘检测技术、轮廓和其他一些方法,但到目前为止还没有得到很好的结果。无法使用模板匹配,因为图像大小不同。我正在考虑改用 ML 技术,特别是 CNN,但为此我必须创建一个巨大的数据集,而且不确定这是否有效。那么有没有计算机视觉方法可以解决上述问题。 one of the sample image

machine-learning neural-network computer-vision object-detection-api object-recognition
1个回答
0
投票

我想到了三种方法:

1. 例如,如果您正在处理多个包含少量谜题的游戏,则可以写下每个谜题的一个可区分的 RGB 值。 例如,对于黄色块:

yellow puzzle

您可以选择一个值:

rgb value for yellow

如果你在每场比赛中有几个不同的方块,这不会花费太多时间。写下值后,您可以检查每个图像以查看它们是否包含每种书写颜色。当然,这只会为您提供特定像素的位置。考虑一下块的情况:

multicolor puzzle

这里有几种不同的颜色,但这是一个完全不同的块。您可以转换为 HSV 颜色空间:HSV 颜色空间, 并使用色相通道。假设例如黄色可以指定为色调通道中的某个范围的值,对图像进行阈值处理,以分别为块的每个写入颜色获得二进制图像。在二值图像上,使用函数

cv2.connectedComponents
- 您将获得块的轮廓。例如,可以通过观察多彩块上特定颜色的区域比其他拼图上的小许多倍来处理多彩块的情况。

2. 然而,如果您正在处理一些不寻常模式的块,则上述方法将过于复杂且费力。然后我建议使用特征匹配:https://docs.opencv.org/4.x/dc/dc3/tutorial_py_matcher.html 如果您使用此方法,图像尺寸的差异应该不是问题。

3. 您可以找到一个现成的图像分割模型,最好是经过类似性质的图像训练的模型,并对其进行微调。为此,您应该需要相当多,也许几十个(例如,取决于包含不同外观对象的游戏数量)。您必须手动标记特定谜题的区域 - 有现成的软件可以实现此目的,例如 LabelMe - 并使用它们来微调模型。

© www.soinside.com 2019 - 2024. All rights reserved.