5

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

谁能向我推荐一种或多种可以产生良好效果的图像处理技术?

条件是:

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

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

4

3 回答 3

1

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

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

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

于 2012-07-02T12:23:09.457 回答
0

向安德烈致敬,

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

  1. 把图片变成黑白的,这样更容易
  2. 从 1 块中获取图像并“将其滑过屏幕截图”
  3. 对于每个单元格,您计算 2 个图像中常见像素的 nr
  4. 你有最多的地方,你有一块

希望这可以帮助。

于 2012-07-02T07:51:26.120 回答
0

是的,和 Salut Andrei 一起去,

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