自适应阈值处理结果不佳的原因是什么?

信息处理 图像处理 计算机视觉 opencv 阈值
2022-01-02 08:13:29

我尝试根据相机捕获的图像运行文本清理过程。

通过使用带有参数 的 OpenCV 自适应阈值方法(255.0D, AdaptiveThresholdType.MeanC, ThresholdType.Binary, 15, 10.0D),几乎​​所有都给出了令人满意的输出,但下面的示例给出了很差的清洁结果(背景没有很好地去除)。

在此处输入图像描述

(图片来自Fred 的 ImageMagick Scripts - Text Cleaner

问题 1.我想知道在这个例子中是哪个因素导致结果不佳。

我的问题 2是,根据上述结果,哪种方法可以区分我的尝试(OpenCV)失败?或者,哪种方法可以帮助确定 AdaptiveThreshold 在运行之前是否会失败?

IMO,通过/失败因素可以是许多背景粒子,但我不知道如何测量它。

我在 OpenCV 中尝试了 Erode 方法来去除粒子,但它给出了白化的结果并且使文本变得太细。

3个回答

使用阈值的一些准则:

  1. 拉伸图像以使用整个动态范围 (DR)。
  2. 应用一些降噪(非常非常温和)。
    小半径的中位数将是一个好主意。
  3. 除非您手动调整阈值,否则Otsu 的方法通常会为此类任务(背景文本)产生良好的结果。
  4. 如果使用自适应局部方法(基于均值/高斯),则半径是另一个需要调整的超参数。

这种二值化失败是因为滤波器的尺寸太小,以至于它处理的一些区域是统一的。增加过滤器大小,您会看到很大的改进。

在此处输入图像描述

尝试在 OpenCV 中使用类型为 的普通阈值函数THRESH_BINARY