2

我的想法是对表格进行行和列检测,即李克特量表检测。有关更多详细信息,请参阅此链接中的图像。http://img.docstoccdn.com/thumb/orig/42750583.png

问题是:
我想在我的程序中将单元格内的值输入到二维数组中。如果有符号(任何类型),则值为 1,如果为空,则值为 0。

注意:
应该是标题和问题的位置的第一行和第一列仍然得到 1,我可以稍后在该过程中跳过第一行和第一列。

为此,我需要知道:

  1. 单元格中是否有标志
  2. 找出哪些行和列,以便我可以正确放入我的二维数组。(如果有则为 1,如果没有则为 0)

我是 OpenCV 的新手,我只知道如何检测边界的存在(一些预处理、轮廓检测和搜索 approxPolyDP)。我读过这篇文章如何消除数独方块中的凸面缺陷?但是,我仍然不知道我必须做什么..

4

2 回答 2

1

当输入图像与您的示例图像相似时,为方便起见,我不会使用Hough 变换

在下文中,我提出了一种检测线条的简单方法。只有当您的输入图像与示例图像相似时,这种方法才有效,即线条与图像边界平行。

  1. 计算每行的黑色像素和每列的黑色像素(或强度 > 0.5)
  2. 搜索至少包含一定数量黑色像素的每一行和每一列。因此,使用阈值t1
  3. 考虑以下条件。两行(和两列)之间的距离至少应为t2.

此后,您应该拥有单行和单列。只剩下一个问题(如果这对您来说是个问题)。代表列的线不是连续的。因此,您可以通过测量列线的长度来检测表格之间的间隙。

当检测到细胞时,您可以测量每个细胞内的像素并确定正确的细胞。

于 2013-10-21T19:42:10.913 回答
0

我想我在这里找到了一个很好的参考,http://blog.ayoungprogrammer.com/2013/03/tutorial-creating-multiple-choice.html

这是关于多项选择检测,我认为他的情况与我的情况大致相同,他必须检测答案是否在 A、B、C、D 或 E 列中。

于 2013-10-24T03:26:48.460 回答