13

我有这张照片:

在此处输入图像描述

我正在尝试使用 niblack 算法进行文档二值化我已经实现了简单的 Niblack 算法

T = mean + K* standardDiviation

这就是结果:

在此处输入图像描述

问题是图像的某些部分中窗口不包含任何对象,因此它将噪声检测为对象并对其进行详细说明。

我尝试应用模糊过滤器,然后应用全局阈值,结果是:

在此处输入图像描述

这不会被任何其他过滤器解决,我想唯一的解决方案是如果窗口没有对象,则阻止算法检测全局噪声

我有兴趣使用 niblack 算法而不是使用其他算法来做到这一点,所以有什么建议吗?

4

4 回答 4

11

我在这篇论文中尝试了 sauvola 算法Adaptive document image binarization J. Sauvola*, M. PietikaKinen 第 3.3 节

它是 niblack 算法的修改版本,它使用修改后的 niblack 方程 在此处输入图像描述

它返回了一个很好的答案: 在此处输入图像描述

以及我尝试了 Niblack 的另一种修改,该修改在本文 的 5.5 算法 No. 9a 中实现:法国 INSA 里昂大学(C. Wolf,JM Jolion)

这也返回了一个很好的结果:

在此处输入图像描述

于 2012-04-19T23:22:18.293 回答
4

你看过这里吗:https ://stackoverflow.com/a/9891678/105037

local_mean = imfilter(X, filt, 'symmetric');
local_std = sqrt(imfilter(X .^ 2, filt, 'symmetric'));
X_bin = X >= (local_mean + k_threshold * local_std);

如果您坚持使用 niblack,我在这里看不到很多选择。您可以更改过滤器的大小和类型以及阈值。

顺便说一句,您的原始图像似乎有颜色。此信息可以显着改善黑色文本检测。

于 2012-04-18T14:08:48.730 回答
2

在这种情况下,有多种方法可以提供帮助:

  1. 当然,您可以自行更改算法 =)
  2. 也可以只应用形态过滤器:首先在窗口中应用最大值,然后是最小值。您应该调整窗口大小以获得更好的结果,请参阅wiki
  3. 您可以选择最难但更好的方法,并尝试改进 Niblack 的方案。如果标准差小于某个固定数字(应调整),则有必要增加 Niblack 的窗口大小。
于 2016-12-19T17:27:21.820 回答
-1

我使用优化尝试了 k=-0.99 和 windows=990 的 niblack 算法:

Shafait –“使用积分图像有效实现局部自适应阈值技术”,2008

其中:T = mean + K* standardDiviation;我有这个结果:

在此处输入图像描述

算法的实现取在这里

于 2020-10-14T20:50:43.767 回答