OpenCV:检测棋盘角点的最佳方法

15

背景

我正在创建一个可以识别下棋步骤的程序。目前为止,我已经实现了相当数量的算法来获得最佳结果。从我的经验来看,将图像进行去畸变(使用undistort),然后应用直方图均衡化算法,最后使用goodFeaturesToTrack算法(我发现这比哈里斯角检测更好)可以产生相当不错的结果。这里的目标是使每个方格的每个角落都有点对应。这样,当我应用Canny边缘检测时,我可以处理单独的方格。

示例

输入图像描述

我考虑过的内容

http://www.nandanbanerjee.com/index.php?option=com_content&view=article&id=71:buttercup-chess-robot&catid=78&Itemid=470

总结上面的链接,其想法是找到左上角、右上角、左下角和右下角点,然后将它们之间的距离除以八。从那里开始,你会得到可能的点,并将它们与棋盘上实际存在的点进行比较。如果其中一个点不匹配,只需替换该点即可。

我还考虑了一些模式,例如找到相邻点之间的距离并将其存储在列表中。然后我会执行一种模式操作来确定最可能的距离,并用它来绘制点。

问题

如您所见,大多数方格上的点相当准确(尽管有一些随机点不符合我的要求)。我的问题是,您认为找到棋盘上所有角落的最佳方法是什么(我对所有想法都持开放态度),您能给我一个稍微详细的描述(足以指引我朝正确的方向前进或者再多一些也可以:)?此外,(这是一个次要问题)您有没有关于如何最好地识别走步的建议? 我正在尝试实现多种方法,并将比较它们以获得最佳结果!谢谢。

1个回答

8

谢谢。我看了那些文章,它们提供了很好的见解。谢谢! - user1243

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接