在图像中查找网格

时间:2011-09-23 16:22:39

标签: image-processing opencv pattern-recognition

有一个match-3游戏截图(例如http://www.gameplay3.com/images/games/jewel-quest-ii-01S.jpg),找到网格边界框(带有图块的表格)的正确方法是什么?电路板不一定是一个完美的矩形(如屏幕截图所示),但每个单元格都是正方形。

我尝试了几款游戏,并发现可以通过一些游戏中的图像转换来增强网格内的图块(例如,在这个游戏中,它足以将V通道从HSV颜色空间中移除)。然后我可以放大瓷砖使它们重叠,找到图像的最大轮廓并从中获取边界框。

上述方法的问题在于,每个游戏(或同一游戏中的甚至级别)可能需要不同的转换才能获得平铺。所以问题是 - 是否有一种标准方法可以增强网格内部的平铺或网格线(我尝试使用Hough变换找到线条,但是,虽然网格看起来很明显,但Hough找不到它) ?

另外,如果使用手机摄像头获取屏幕截图而不是截取桌面屏幕截图怎么办?根据我的经验,拍摄的图像颜色较少(取决于光线),也可能会有一些失真,因为无法将手机准确地保持在屏幕前方。

1 个答案:

答案 0 :(得分:2)

我会使用以下方法获取屏幕截图:

  1. 使用例如类似边缘检测器的canny来查找图像中的角落。
  2. 执行霍夫线变换。这应该在边缘图像上非常好用。
  3. 如果您有关于瓷砖尺寸的一些信息,您可以使用网格的某种空间模型消除假阳性线(例如,线与图像的x / y轴的角度和/或距离/瓷砖边框的角度。
  4. 通过查找由线条下方/旁边的canny找到的边缘来识别找到的hough线下的瓷砖边框。
  5. 你使用了hough变换的哪个实现?你是如何预处理图像的?

    另一种方法是使用某种机器学习方法。当您在OpenCV中工作时,您可以使用Haar之类的功能检测器。可以在此处找到使用Haar特征进行面部检测的示例:

    OpenCV Haar Face Detector example

    另一种机器学习方法是遵循定向梯度直方图(Hog)方法结合支持向量机(SVM)。一个例子就在这里:

    HOG example

    您可以在以下网址找到有关HoG检测的一般信息:

    Hog detection