文档图像二值化

4

我正在寻找有效的文档图像二值化技术。目前我已经实现了niblack和sauvola阈值算法,并尝试了基于直方图评估的二值化。请问还有哪些二值化方法被证明是有效的呢?这是我一直在处理的样本退化图像:

enter image description here

http://spie.org/Images/Graphics/Newsroom/Imported/0681/0681_fig1.jpg

任何建议将不胜感激。

欢迎来到Stack Overflow。虽然图像二值化是一个有趣的话题,但您的问题并不适合在SO上提问。如果您对二值化有特定的问题,可以在http://dsp.stackexchange.com/上提问。如果您遇到了二值化实现方面的问题,可以随时在SO上提出另一个问题。 - Simon Bergot
1
再次强调,Niblack算法是可行的。(http://imgur.com/pR1iN)你不需要实现数百种算法 - 只需了解它们如何协同工作以及如何调整参数。在您的情况下,您应该考虑局部阈值处理,并可能针对颜色和对比度进行一些预处理。 - Birgit P.
感谢@BirgitP的所有帮助。我正在尝试应用多种算法,然后将它们用于文档图像,以人为方式添加噪声,以便通过与原始图像进行比较来评估哪种方法最好。这就是为什么我在询问哪些其他方法最适合该目的。你能否提出一些建议? - NeedHelp
1个回答

10

你可以从简单的根据本地邻域适应阈值开始尝试。

im = rgb2gray(im);
im = im2double(im);
f_makebw = @(I) im2bw(I.data, double(median(I.data(:)))/1.45);
bw = ~blockproc(im, [128 128], f_makebw);

结果:

输入图像描述


请问您能解释一下这个语句的作用吗?f_makebw = @(I) im2bw(I.data, double(median(I.data(:)))/1.45); - NeedHelp
@NeedHelp,它根据该区域(这里是128x128)的中位灰度值对每个区域进行二值化。此外,由于除以1.45,阈值略有偏差。 - Maurits
我因为~blocproc未定义而出现错误。请问您能告诉我如何纠正它吗? - NeedHelp
在我的例子中,blockproc 调用了一个匿名函数 makebw,该函数在上面的规则中定义。你很可能在某个地方打错了字。 - Maurits

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接