推荐的棋盘模式识别技术

时间:2012-07-02 06:04:15

标签: image-processing image-recognition chess pattern-recognition

我正在尝试做一个应用程序,除其他外,它能够通过屏幕截图识别计算机屏幕上的国际象棋位置。我对图像处理技术的经验非常有限,并且不希望花大量时间研究这个,因为这只是我的一个宠物项目。

任何人都可以向我推荐一种或多种图像处理技术,这会让我获得好成绩吗?

条件是:

  • 图像总是清脆干净,没有噪音,光线条件差等(因为它是截图)
  • 我希望在执行1张图像/秒时对计算机性能的影响非常小
  • 我想到了两种启动过程的模式:
    • 将棋子形状送入程序(以便它知道女王,王等等):
    • 只需向程序提供一个初始图像,其中包含启动位置,程序可以从中识别出棋盘的位置(选中每个棋子后)
  • 这个过程应该比较容易理解,因为我对图像处理技术没有很好的掌握(尚)
  • 我对使用任何特定技术不感兴趣,因此技术无关的文档将是理想的(C / C ++,C#,Java示例也可以)。

感谢您花时间阅读本文,我希望得到一些好的答案。

3 个答案:

答案 0 :(得分:1)

这是一个有趣的问题,但您需要指定比原始问题更多的内容才能找到可接受的答案。

在输入图像上:“截图”引用含糊不清的类别。你能否认为棋盘永远完全在视野中?您对同一块电路板有多个视图吗?您能否假设所有视图中都没有部分或完全遮挡任何碎片?

在成像物体和捕捉系统上:在非常相似的照明下,是否会使用相同的棋盘和棋子?是否会使用相同的镜头/相机/数字化管道?

答案 1 :(得分:0)

Salut Andrei,

我已从图片中完成了硬币计数算法,因此该过程应该有所帮助。 该算法称为广义霍夫变换

  1. 使图片变为黑白,这样更容易
  2. 从1张图片中取出图片并“将其滑过屏幕截图”
  3. 对于每个单元格,您可以计算2张图像中常见像素的nr
  4. 如果您拥有最多的号码
  5. 希望这有帮助。

答案 2 :(得分:0)

是的,与Salut Andrei一起去,

  1. 将图片转换为灰度
  2. 切成64个方块并存储在数组中
  3. 使用Mat实验室可以轻松识别碎片
  4. 颜色可以从计算点数像素的百分比(黑色像素)获得 threshold = no.black pixels / no。黑色像素+没有。白色像素, 如果你的值高于阈值,那么WHITE else BLACK