分离扫描文档中的背景/前景层

时间:2010-12-01 17:33:05

标签: c# c++ image-processing background bitmap

我需要自动删除扫描文档图像的浅色背景以进行OCR。

ScanTailor是一个基于C ++ GUI的开源应用程序,可以在其他方面进行背景分离,但我无法弄清楚如何仅运行实际删除背景的最后一步。

理想情况下,我可以找到执行此操作的代码:

  1. 将该部分移植到C#
  2. 修改C ++以响应命令行执行,仅对给定图像执行该步骤
  3. 你能帮我理解我怎么做吗? 或者你知道其他图书馆能做到这一点吗? (任何语言/平台可接受)

2 个答案:

答案 0 :(得分:3)

您指的是OCR应用程序中必需的阈值处理,去除斑点和噪声消除技术。

结果的质量很大程度上取决于许多不同的因素 -

原件的打印质量 扫描质量 图像分辨率 使用的背景颜色和模式。 噪音和其他标志。

您可能会发现http://www.hi-components.com/nievolution.asp的IEvolution.NET库非常有用。它有许多图像处理功能可供使用。

有许多商用引擎可供选择。没有一个完美的功能来解决图像处理问题。您必须调整功能和参数以匹配您的图像。 http://www.recogniform.com/thresholding.htm

Google搜索会显示大量结果。

答案 1 :(得分:1)

也许算法大概是:

  • 决定背景颜色
  • 扫描位图,查找颜色为(和/或足够类似)背景颜色的像素
  • 将这些像素转换为白色或透明
  • 可能(特别是如果页面包含图像而不仅仅是文本)忽略孤立的像素,这些像素是背景颜色,但不在其他背景像素旁边

如果是高分辨率的低色深(例如黑白)图像,则需要将此算法应用于groups of pixels