建议过滤器以提高照片上的文字可见性

Advise filters to improve text visibility on photo

我需要滤镜来提高照片上文字的可见度,因为它有一些噪点。为此,您知道哪些过滤器(算法)?

现在,我使用单色滤镜,但它并没有提高图像质量。我需要过滤可以确定小区域的中等背景,并根据中等背景使图像成为单色。

例如几乎所有的图片背景都是白色和灰色字符,但有些区域有较深的颜色(灰色)和黑色字符。我需要算法可以理解图像的某些区域更暗并使黑色接受度更低。


例如源图:
和处理过的照片(中值、单色滤镜)

您可以提供示例图片。

如果您想将图像设为黑白,您可以使用阈值操作,只要您的文本比最暗的背景值更暗即可。

将每个像素与全局阈值进行比较。如果较高,则将其设置为新值 a,如果较低,则将其设置为新值 b。对于等于你必须选择一个选项。

如果没有,您可以使用所谓的本地阈值。在这里,您计算周围环境中每个像素的阈值。有许多算法可用于计算该局部阈值。

列举一些局部阈值算法: 伯恩森 索沃拉 意思 中位数 中灰 尼布莱克

它们都根据像素周围的一些有限区域计算阈值。

不幸的是,我无法在代码中使用图像处理包提供准确快速的答案,但我可以根据在 Photoshop 中完成的一些非常快速的测试提供一些提示(抱歉,视觉思考者,打字慢) .最坏的情况,你可以 运行 Photoshop filters from Matlab,但使用的过滤器应该可用或不难实现,因为我限制自己:

  • 曲线
  • 等级
  • 高通

简单来说,我建议先阅读从暗到亮的渐变:在更均匀的图像上使用 contrast/threshold 会更容易。 在 Photoshop 中,我应用了曲线(其他人对此感到疑惑 implementing in code

不完美,但它说明了抵消一点强梯度的想法。

在生成的图像上,我应用了级别:

之后高传:

您可以使用高通结果并将其与上一步混合(叠加)以强调细节:

然后应用邮票过滤器(小高斯模糊 + 阈值的混合):

或更简单,在高通结果上,再次应用曲线或阈值:

想法是阈值应该在最后阶段处理分割,您需要通过取消不属于文本本身的元素(如闪光灯等渐变)来使其工作尽可能简单。 如果您稍后需要清理小点,形态过滤器(如腐蚀,然后膨胀)应该会有所帮助。您还可以在 detecting gradients 上找到一些信息。