我正在开发一款能够识别GO board并创建SGF file的Android应用。
我需要检测 整个 电路板以使其变形,并能够找到正确的线条和石头,如下所示。
filledboard http://roelept82.eightytwo.axc.nl/pic/detect.png
现在我使用Opencv RGB Mat并执行以下操作:
可以分开通道
Imgproc.Canny(channel, temp_canny, 30, 100);
组合(按位或)所有通道。
Core.bitwise_or(temp_canny, canny, canny);
仍然我无法一致地检测到电路板,因为有些线条会消失,如下图所示,电路板上的黑线和石头清晰可见但是在某些地方缺少电路板边缘。
filledboard http://roelept82.eightytwo.axc.nl/pic/canny.png
我该如何改进这种检测?或者我应该实现多种检测方式,并在一方失败时切换它们。
*重要的是要记住*
这是我要检测的pictures with go boards的一小部分
*更新* 23-05-2016
我有点使用opencv来解决这个问题,所以新的灵感非常受欢迎! 与此同时,我开始使用机器学习,第一个结果很好,我会让你发布,但仍然抱有很高的希望创建一个opencv实现。
答案 0 :(得分:1)
我正在处理同样的问题!
我的方法是假设两件事:
这允许我在电路板仍为空(播放前)时从单个帧中推断出变形参数。无论有多少石块遮挡板边缘,都可以使用这些参数来扭曲每一帧。