2011-09-23 32 views
2

有匹配3游戏截图(例如http://www.gameplay3.com/images/games/jewel-quest-ii-01S.jpg),找到网格的绑定框(带有图块的表)的正确方法是什么?该板不一定是完美的矩形(如截图所示),但每个单元格都是完全正方形的。在图像中查找网格

我已经尝试了几个游戏,发现有一些游戏中的图像转换可以用来增强网格中的图块(例如在这个游戏中,它足以将V通道带出HSV颜色空间)。然后,我可以放大这些图块,使它们重叠,找到图像的最大轮廓并从中获取装订框。

上述方法的问题在于,每个游戏(甚至同一游戏中的水平)都可能需要不同的转换才能获得拼贴。所以问题是 - 是否有一种标准的方法来增强网格或网格线内的瓦片(我试图找到具有霍夫变换的线条,但是,虽然网格看起来非常可见,但霍夫却没有找到它) ?

此外,如果使用手机摄像头获取屏幕截图而不是拍摄桌面屏幕截图会怎么样?根据我的经验,拍摄的图像的颜色较少(取决于照明),并且可能会稍微变形,因为无法将手机完全保持在屏幕前方。

回答

2

我会去用以下办法进行截图:

  1. 查找使用例如像边缘检测精明的形象在角落里。
  2. 进行霍夫线变换。这应该在边缘图像上很好地工作。
  3. 如果您有关于瓷砖大小的一些信息,可以使用网格的某种空间模型(例如,与图像的x/y轴成小角度的线条和/或距离/瓷砖边界的角度。找到霍夫线下
  4. Identifiy瓷砖的边界通过寻找下/旁边线由精明的发现边缘。

哪个实现霍夫变换你用?你怎么会预处理图像?

另一种方法是使用某种机器学习方法。在OpenCV中,您可以使用哈尔像特征检测器。使用哈尔特征的人脸检测的例子可以在这里找到:

OpenCV Haar Face Detector example

另一种机器学习方法是遵循方向梯度(HOG)方法的直方图与支持向量机组合(SVM) 。一个例子是位于:

HOG example

您可以找到有关检测系首长在一般信息:

Hog detection

+0

我用CV :: HoughLinesP找到行,要么有太多线条可供选择(它们可以覆盖大部分图像),或者网格上的线条未找到。使用Canny和HoughLinesP的参数,我可以减少误报的数量,但这些参数显然对其他游戏没有好处。我没有关于电路板上瓷砖尺寸或数量的信息,所以我没有简单的方法来消除这些线条。 –

+0

另外,我不认为我完全理解第4步。 –

+0

关于第四步:如果对Canny图像进行了轮廓线变换,最终可能会出现线条,这些线条比您正在搜索的图块之间的实际边界更长。找到瓦片的实际范围的一种方法是通过沿着找到的霍夫线搜索Canny边缘检测器的响应。 – tisch