用C#分析扫描图像

时间:2014-02-27 15:57:51

标签: c# .net image-processing

我有兴趣分析扫描的文档,表格,我希望能够检测某人是否检查过或填写过表格中不同位置的复选框(类似于可能是scantron),并且可能会捕获签名等形象。

由于这些复选框位于已知位置,我似乎可以在(x,y)处询问几个像素,如果它的颜色比N阈值更深,则将它们平均,然后进行检查。但是,我认为扫描可能会引起实际位置相对于图像边缘的大幅度变化。

很明显我是这个领域的新手,是否存在框架(开源或商业)或任何人可以指示我的任何模式或示例,开始这条道路。 (或者在.net中这可能是不可能的,我应该开始研究托管应用程序?)

2 个答案:

答案 0 :(得分:0)

这被称为ICR(智能字符识别) 这是一个既定的领域。 ICR进行边缘检测,因为倾斜扫描很常见 你可以尝试自己做,但它有很多。

Leadtools不是免费的,我不为他们工作 但这是ICR作为工具(SDK)的一个很好的例子 LEADTOOLS ICR SDK

如果您有纸质文件,另一种选择是将它们带到商业扫描供应商 他们将拥有专为ICR设计的软件 他们还有高端扫描仪,可以与ICR一起使用。

答案 1 :(得分:0)

我不熟悉.NET图像处理,但我知道图像处理。所以我会给你理论,并提到OpenCV。

为了适应图像的偏斜,请查看Fourier transformsHough Transforms and Hough Lines.您基本上想要做的是运行fourier transform,然后将结果转换为BW图片。找到最强的HoughLines线,然后保留最长的线。这条线将是轴线之一,在我的实验中,它通常是垂直轴。找出与直线垂直线的偏差角度,然后(取决于特定的旋转算法)将图像旋转此量的负值。

如果旋转算法用0填充(或者使用距离图像颜色太远的白色),您可以使用之前找到的角度裁剪图像来计算偏差(这是您在学校学到的所有内容)派上用场了。)

然后找到包含页面上文字的bounding box并向下裁剪。在检查框是否被选中时,您需要查看区域,可能比复选框的大小大5到10个像素,具体取决于分辨率,以获得复选框ROI。

有了这个,您可能想看看是否写入了x%的ROI以验证是否选中了该框。