【问题标题】:Recommended pattern recognition technique for chess board推荐的棋盘模式识别技术
【发布时间】:2012-07-02 13:25:54
【问题描述】:

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

谁能给我推荐一种或多种图像处理技术,让我得到好的结果?

条件是:

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

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

【问题讨论】:

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


【解决方案1】:

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

在输入图像上:“截图”是引用模糊的一个类别。你能假设棋盘总是完全在视野中吗?你会有同一个板的多个视图吗?你能假设在所有视图中都不会部分或完全遮挡任何部分吗?

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

【讨论】:

  • 你好,首先我假设棋盘总是在视野中。只有一个 2D 视图,即浏览器/插件/应用程序呈现的视图,因为它是计算机生成的棋盘的屏幕截图。任何一块都不会被隐藏,“捕获系统”是我的屏幕截图,没有镜头/相机等。
  • 哇。好吧,如果这些不是自然图像,问题就大大简化了:它们可能有一小部分固定的颜色,所以你可以简单地将它们设置为黑白。然后我要做的是“裁剪”并逐个分析正方形,以明显的方式识别并丢弃空的(它们的像素都是相同的),并针对已知的碎片形状进行一些简单的模板匹配.即使碎片图像的内部没有提供任何信息,您也不需要识别边缘,因为 2D 形状本身就具有足够的辨别力。
【解决方案2】:

向安德烈致敬,

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

  1. 把图片做成黑白的,这样比较容易
  2. 从 1 块中提取图像并“将其滑过屏幕截图”
  3. 对于每个单元格,您计算 2 个图像中公共像素的 nr
  4. 数量最多的地方就是你的作品

希望这会有所帮助。

【讨论】:

  • 我也会这样做,因为你的对象看起来总是一样的。为每个部分截取屏幕截图,对模式进行硬编码(例如位图),然后对错误进行简单的求和。最低的错误获胜(理想情况下它应该是 0)。应该很容易(是的,黑白图像,最好不共享是最简单的)。
【解决方案3】:

是的,和 Salut Andrei 一起去,

  1. 将图片转换为灰度
  2. 切成 64 个正方形并存储在数组中
  3. 使用 Mat lab 可以轻松识别碎片
  4. 颜色可以通过计算点像素数(黑色像素)的百分比来获得 阈值=no.black 像素/no。黑色像素 + 没有。白色像素, 如果你的值高于阈值,则为白色,否则为黑色

【讨论】:

  • 这行不通,因为你不知道碎片的颜色。
猜你喜欢
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 2010-09-25
  • 2010-10-02
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
  • 2012-05-30
相关资源
最近更新 更多