6

我目前想知道一个应该很容易但到目前为止找不到简单解决方案的图像识别问题。

输入是一个大约 1 兆像素的矩形图片,显示一个轻的木质表面。它上面有一个薄但可见的网格。网格是黑黑色的,规则的,几乎是正方形的(大约比宽度长 8%)。网格大小正好是 19x19。一般的板颜色是“木头”,它可以变化,但往往是浅棕色。(更多信息

表面上放置了许多小的,圆形的,黑白相间的石头。它们总是放置在十字路口,但由于人为错误,它们可能会稍微偏离。它们的颜色是纯黑色和白色。

棋盘上覆盖着 0 到大约 300 颗棋子(361 个十字路口的 80%)。黑色和白色石头的数量大致相同。

边界的大小(从未放置过棋子的棋盘边缘)各不相同,但已知为“小”。

光线可能会导致棋盘上出现石头的阴影。此外,它会导致在石头上出现一个白点(在光的方向上)。

戈班

我想检测网格上石头的位置。

我的想法是查看每个像素的亮度并将它们分为 3 类:浅色(白色石头)、中等(白板)和深色(黑色石头)。具有许多黑色像素的区域被认为是黑色石头,依此类推。

之后,可以使用黑白区域的大小来计算实际的网格大小。

另一个想法是识别网格线并使用它们来计算网格大小和位置。由于线条很细(并且经常被石头覆盖),我不知道该怎么做。

我很想听听你对这个问题的想法。有没有看起来合适的算法?你能想出一些很酷的技巧吗?我疯了吗?这个问题无法解决?我正在使用 C#,但欢迎使用任何语言。

4

3 回答 3

4

你会在这里找到一些信息,包括一些 OpenCV 原语:

我还在使用 OpenCV 和一个小型电子板制作交互式 Goban(用于识别的 OpenCV,用于指示对手移动的标准 LED)。在您的开发中玩得开心!

于 2012-03-15T08:57:02.197 回答
2

也不要错过gocam。它带有源代码和解释算法的论文:http: //users.ics.aalto.fi/thirsima/gocam/

您可以在 kifu-snap 的网站上找到一系列链接和论文:http ://www.remi-coulom.fr/kifu-snap/

最近的一个非常好的结果是 PhotoKifu: http ://www.oipaz.net/PhotoKifu.html

于 2013-08-26T09:04:15.097 回答
0

这称为斑点分析。基本上,您根据要匹配的颜色对图像进行二值化,然后在二值图像上应用 blob-finding 算法以查找 blob 的坐标。你猜对了,每个斑点都是一块石头。

像往常一样,我相信 OpenCV 可以做到这一点。

于 2011-04-21T09:33:53.620 回答