【问题标题】:Thresholding in luminance image亮度图像中的阈值化
【发布时间】:2017-12-28 06:31:17
【问题描述】:

我有一个包含照明的图像。首先,我裁剪要处理的区域,然后将其转换为二进制图像。我使用 Otsu 的阈值,但它对这个问题给出了不好的结果。我必须尝试使用​​自适应阈值,但这种方法取决于块大小和 C 参数(opencv 方法)。我应该怎么做才能在这个问题上获得好的结果?

原始图像,但我裁剪了某些区域 :

大津阈值结果

【问题讨论】:

  • 您可以尝试使用低通滤波器过滤图像并从原始图像中减去结果以抑制远程“亮度波”示例:stackoverflow.com/questions/44047819
  • 如果只有一张图片,为什么还要使用 Otsu?这根本没有意义。使用手动阈值...
  • @MBo 感谢您的回复。我已经尝试过该链接,但使用该方法与不使用该方法之间没有显着差异。我将 dilate 与 21x21 和 medianBlur 与 21 用于 ksize 参数。我错过了什么吗?
  • @Piglet 感谢您的回复。我有许多不同亮度的图像。在正常图像中,没有亮度问题,我使用了这种 Otsu 方法并给出了很好的结果。我需要不需要先定义的阈值,因为相同的阈值不会与另一个图像匹配。

标签: java opencv image-processing ocr threshold


【解决方案1】:

自适应阈值不适合您的情况。如果您想简单地创建具有黑色背景和白色文本(或反之亦然)的二进制图像,并且您的裁剪区域很紧凑,您可以简单地执行以下步骤:
1-将图像转换为灰度
2-标准化您的图像(忽略 1% 的最暗和最亮像素)
3-使用固定阈值(介于 0.3 到 0.7 之间)
4-做一些形态增强,如腐蚀、膨胀、开闭以消除噪音。
自适应阈值用于在亮度不均匀的情况下,当您的示例中不存在梯度灯时。

【讨论】:

  • 如果您使用适当的阈值,则无需标准化或消除噪音。跳过 1% 的最亮像素很可能会删除白色文本。我也会为此选择饱和度而不是强度,因为对比度更好。您对自适应阈值的 cmets 不太正确。他的图像的主要问题是背景中的各向异性,无法用方形块大小进行补偿。但我想你还是可以找到一些工作参数。考虑到这张图片(他没有提到其他人),最简单的方法是在 gimp 中使用魔杖......
  • 那么,我应该在什么情况下查找该图像?以及如何通过忽略 1% 的最暗和最亮像素来标准化图像?谢谢你的回答。
  • 您可以创建直方图并获取从每侧忽略 1% 的像素的范围,然后将所选范围(例如 11-238)扩展到全范围 (0-255)。在这个例子中,有 1% 的像素值小于等于 11,归一化后它们都变成了 0。你可以在网上找到很多关于直方图和归一化的教程。
猜你喜欢
  • 2015-03-19
  • 2012-10-08
  • 2022-01-19
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 2016-02-03
相关资源
最近更新 更多