我用Python编写了一个程序,它可以自动读取像这样的计分表
目前,我使用以下基本策略:
运行程序的结果如下图所示:
您可以在左上角图像的右侧和下方看到峰值图。左上角图像中的线是列的位置,红点表示已识别的分数。右下角的直方图显示了每个圆的填充级别和分类线。在
这种方法的问题是需要仔细调整,并且对扫描设置的差异很敏感。有没有一种更可靠的方法来识别网格,它需要较少的先验信息(目前我使用的是关于有多少个点的知识),并且对于在纸上绘制其他形状的人来说更可靠?我相信用二维傅里叶变换是可能的,但我不知道怎么做。在
我正在使用EPD,所以我有很多库可以使用。在
首先,我发现你最初的方法很好,我可能也会尝试同样的方法(我特别欣赏行/列投影后再进行直方图,这是一种被低估的方法,在实际应用中通常是相当有效的)。在
但是,由于您希望获得更可靠的处理管道,下面是一个可能完全自动化的建议(同时也可以通过ImageMagick删除倾斜):
这个管道可能有点CPU密集型(特别是第2步,它将进行某种贪婪的搜索),但它应该是非常健壮和自动的。在
正确的方法是对图像进行连通分量分析,将其分割为“对象”。然后你可以使用更高级的算法(例如,在组件质心上进行hough变换)来检测网格,并通过查看网格包含的活动像素数来确定每个单元格是否处于打开/关闭状态。在
相关问题 更多 >
编程相关推荐