【问题标题】:How to identify that an image comes from a dot matrix printer如何识别图像来自点阵打印机
【发布时间】:2019-11-19 10:24:32
【问题描述】:

我正在使用 Tesseract 使用 Charles Weld C# 包装器进行 OCR 字符识别。我正在使用 Open CV 对图像进行预处理。

我的问题是,如果图像来自点阵打印输出,我需要对图像进行不同的预处理。有没有办法使用 OpenCV 来判断图像是从点阵打印输出中扫描出来的?

我尝试过一次模糊图像并使用 AbsDiff 计算差异,这是我用来检测图像是否需要去斑但没有一致的结果表明点矩阵的技术。

【问题讨论】:

  • 听起来像是硕士水平的研究课题。
  • 也许你可以分享一个示例图像吗?
  • 你怎么看?这是一个决议问题。我的喷墨打印机也是一个点阵打印机,你可以用玻璃看。有时人们坚持要原件,而不是扫描件,因为原件的打印速度可能是 300 dpi,而扫描仪也是 300 dpi,因此会有干扰。或许低分辨率色带打印机输出的扫描效果比喷墨打印机好。

标签: c opencv tesseract


【解决方案1】:

我有一些想法并决定将它们记录在 ImageMagick 中,但您同样可以使用 OpenCV 及其findContours() 来做这种事情。

我用这个作为输入图像:

如果您使用形态学稍微侵蚀黑色区域(或者扩大白色区域,结果相同),每个点都会与相邻的点分开。如果您随后进行“连通分量分析”,您将看到图像具有异常大量的非常小的点,这些点的高度与宽度大致相同 - 圆形或点的特征。

这是我在终端中用来运行 ImageMagick 的代码:

magick  dotmatrix.png -threshold 50% -morphology dilate disk:1 \
       -define connected-components:verbose=true               \
       -connected-components 8 -auto-level result.png

输出是这个图像,其中每个检测到的斑点都得到一个连续更亮的白色阴影:

更有趣的是详细输出,在图像中检测到的每个 blob 都有一行输出。它显示了许多 2x2、3x2 和类似大小的小点,面积约为 7 像素,用红色圈出。我会以此作为探索更多内容的基础......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    相关资源
    最近更新 更多