Image processing 国际象棋棋盘模式识别推荐技术

Image processing 国际象棋棋盘模式识别推荐技术,image-processing,image-recognition,chess,pattern-recognition,Image Processing,Image Recognition,Chess,Pattern Recognition,我正在尝试做一个应用程序,它能够从截图中识别计算机屏幕上的国际象棋位置。我在图像处理技术方面的经验非常有限,我不想在这方面投入大量的时间,因为这只是我的一个宠物项目 有人能给我推荐一种或多种能给我带来好结果的图像处理技术吗 条件是: 图像始终清晰、无噪音、光线条件差等(因为它是一张截图) 我希望在每秒处理1个图像时,对计算机性能的影响非常小 我想到了两种启动流程的模式: 将工件形状输入程序(以便它知道皇后、国王等的样子) 只需向程序提供一个包含启动位置的初始图像,程序可以(在识别棋盘位置后)

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

有人能给我推荐一种或多种能给我带来好结果的图像处理技术吗

条件是:

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

向安德烈致敬

我已经做了一个硬币计数算法从图片,所以这个过程应该是有益的。 该算法称为广义Hough变换

  • 让图片黑白化,那样更容易
  • 从1张图片中选取图像并“将其滑到屏幕截图上”
  • 对于每个单元,计算两幅图像中公共像素的nr
  • 如果你有最大的数字,你就有一块

  • 希望这能有所帮助。

    这是一个有趣的问题,但为了找到一个可接受的答案,您需要比原始问题详细说明更多内容

    在输入图像上,“截图”是一个类别。你能假设棋盘永远都在眼前吗?同一块板子会有多个视图吗?您是否可以假设在所有视图中都不会部分或完全遮挡任何部分


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

    是的,与Salt Andrei一起使用

  • 将图片转换为灰度
  • 将其切成64个正方形并以数组形式存储
  • 使用Mat lab可以轻松识别碎片
  • 颜色可以通过计算无点像素(黑色像素)的百分比获得 阈值=黑色像素数/黑色像素数+白色像素数, 如果ur值高于阈值,则为白色,否则为黑色

  • 您好,首先,我假设棋盘会一直在眼前。只有一个2D视图,即浏览器/插件/应用程序呈现的视图,因为它是计算机生成的棋盘的屏幕截图。没有一块会被隐藏,而“捕获系统”是我的监视器截图,没有镜头/摄像机等等。如果这些图像不是自然图像,那么问题就大大简化了:它们可能有一组固定的小颜色,因此您可以轻松地将它们设置为黑白阈值。然后我要做的是一个接一个地“裁剪”和分析正方形,以明显的方式识别和丢弃空的正方形(它们的像素都是相同的),并根据已知的碎片形状进行一些简单的模板匹配。即使工件图像的内部没有提供任何信息,你也不需要识别边缘,因为2D形状本身具有足够的辨别力?你不只是在和国际象棋程序打交道有什么原因吗?这可能会容易得多。请参阅有关问题的参考资料,我也会这样做,因为您的对象看起来总是一样的。为每一个片段截图,硬编码模式(例如位图),然后进行简单的错误汇总。最小的错误获胜(理想情况下应该是0)。应该很容易(是的,黑白图像,最好没有共享是最容易的)。这不会起作用,因为你不知道作品的颜色。