【问题标题】:document image binarization [closed]文档图像二值化
【发布时间】:2012-04-13 19:18:39
【问题描述】:

我正在尝试为文档图像找到有效的二值化技术。我目前已经实现了 niblack 和 sauvola 阈值算法,并尝试了基于直方图评估的二值化。有人可以建议其他已证明有效的二值化方法吗? 这是我一直在使用的示例降级图像:

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

任何建议将不胜感激。

【问题讨论】:

  • 欢迎堆栈溢出。虽然图像二值化是一个有趣的话题,但您的问题并不适合 SO。如果您对二值化有特殊问题,可以在dsp.stackexchange.com 上提问。如果您对二值化的实现有任何疑问,请随时就 SO 提出另一个问题。
  • 再一次,Niblack 会起作用。 (imgur.com/pR1iN您不需要实现数百种算法 - 只需了解它们如何协同工作以及如何调整参数。在您的情况下,您应该查看局部阈值,并可能对颜色进行一些预处理和对比。
  • 感谢@BirgitP 的所有帮助。我正在尝试应用几种算法,然后在我人为添加噪声的文档图像上使用它们,这样我就可以通过与原始图像进行比较来评估哪种方法是最佳方法。这就是为什么我要询问哪些其他方法最适合这个目的。你能推荐一些吗??

标签: matlab image-processing threshold


【解决方案1】:

如何从简单地根据当地社区调整阈值开始?

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,它根据该区域的灰度中值对每个区域(此处为 128x128)进行二值化。此外,由于除以 1.45,阈值略有偏差。
  • 我收到一个错误,因为 ~blocproc 说这是一个未定义的功能。请告诉我如何纠正它,
  • 在我的示例中,blockproc 调用了一个匿名函数 makebw,该函数由上述规则定义。您很可能在某个地方有错字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多