我目前想知道一个应该很容易的图像识别问题,但到目前为止找不到一个简单的解决方案。
输入是一张大约1百万像素的矩形图片,显示出轻巧的木质表面。它上面有一个薄但可见的网格。网格为黑色黑色,规则且几乎为正方形(比宽度长约8%)。网格大小正好是19x19。一般的纸板颜色是“木材”,它可以变化,但往往是浅棕色。 (more info)
表面上放置了许多小的圆形黑色和白色宝石。它们总是放在交叉点上,但由于人为错误,它们可能会稍微偏离。它们的颜色是纯黑色和白色。
该板覆盖0至约300块石块(361个交叉点的80%)。黑色和白色宝石的数量大致相同。
边框的大小(未放置任何宝石的木板边缘)各不相同,但已知为“小”。
光线可能会导致棋盘上出现阴影。此外,它会在石头上(在光线方向上)出现一个白点。
我想检测网格上石头的位置。
我的想法是查看每个像素的亮度并将它们分为3类:光(白色宝石),中(宝石)和黑色(黑色宝石)。具有许多黑色像素的区域被认为是黑色宝石,依此类推。
之后,黑白区域的大小可用于计算实际网格大小。
另一个想法是识别网格线并使用它们来计算网格大小和位置。由于线条非常薄(通常被石头覆盖),我不知道该怎么做。
我很想听听你关于这个问题的想法。是否有适合的算法?你能想到很有帮助的酷炫技巧吗?我疯了,这个问题无法解决?我在C#工作,但欢迎使用任何语言。
答案 0 :(得分:4)
你会发现here一些信息,包括一些OpenCV原语:
我也在使用OpenCV和一个小型电子板制作交互式Goban(用于识别的OpenCV,用于对手移动指示的标准LED)。 玩得开心!
答案 1 :(得分: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
答案 2 :(得分:0)
这称为blob analysis。基本上,您根据要匹配的颜色对图像进行二值化,然后在二值图像上应用斑点查找算法以查找斑点的坐标。你猜对了,每个斑点都是石头。
像往常一样,我相信OpenCV可以做到这一切。