opencv:检测棋盘角落的最佳方法

时间:2014-12-17 08:13:45

标签: algorithm opencv

背景

所以我正在创建一个识别国际象棋动作的程序。到目前为止,我已经实施了相当多的算法来提供最好的结果。到目前为止我发现的是无失真的图像组合(使用无失真),然后应用直方图均衡算法,最后是goodFeaturesToTrack算法(我发现这比哈里斯角检测更好) )产生相当不错的结果。这里的目标是让每个广场的每个角落都有一个点。这样,当我应用canny边缘检测时,我可以处理各个方块。

示例

enter image description here

我考虑的是

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

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

我还考虑过某种模式,比如查找相邻点之间的距离并将它们存储在列表中。然后我会执行模式操作以找出最可能的距离并使用它来绘制点。

问题

正如你所看到的,这些点在大多数方块上相当准确(尽管有随机点不能达到我想要的效果)。我的问题是你认为在棋盘上找到所有角落的最佳方式是什么(我对所有想法都开放)你能否给我一些详细的描述(足以引导我朝正确的方向或更多如果你选 :)?此外,(这是次要问题)您是否有任何关于如何进行以便最佳识别移动的建议?我试图实现多种方式,并且我将比较方法以获得最佳结果!谢谢。