【问题标题】:Best threshold for converting grayscale to black and white灰度转黑白的最佳阈值
【发布时间】:2023-03-14 15:22:01
【问题描述】:

自动找出将灰度图像转换为黑白的最佳阈值的最佳方法是什么?我可以手动计算出很好的阈值,但我想自动选择阈值。

编辑:我一直在阅读有关此问题的一些信息,并且通过查看图像的直方图可以提供帮助,例如如果图像具有双模直方图,那么在模式之间选择阈值似乎是合理的。然而,对于多模态或平面直方图,它看起来更复杂。所以我想我还有一些阅读要做。感谢所有回复的人!

【问题讨论】:

    标签: image-processing


    【解决方案1】:

    0.5 通常会丢失大量信息,除非原始图像非常亮。事实上,任何绝对阈值都会弄乱一种或另一种图像。

    更好的方法是制作光度直方图并选择模式附近的阈值。这在大多数图像上应该比任何绝对阈值都更有效。

    【讨论】:

    • 对不起,你能解释一下,你说的“选择模式附近的阈值”是什么意思?
    • 模式是图像中出现频率最高的亮度。
    • 为了以后参考,众数是平均值。
    【解决方案2】:

    我会研究一种自适应阈值算法。 Otsus method 就是其中之一,实现起来并不难。

    它的工作原理是假设您有前景像素和背景像素,并尝试找到它们的最佳分离。

    【讨论】:

      【解决方案3】:

      如果您执行以下操作,K-Means Clustering Method 将非常有用:

      1. 将图像划分为子块。
      2. 在每个子块上应用 K-Means 聚类。结果是一个二值图像(假设您想要的是“1”,其余的是“0”)。
      3. 再次执行第 2 步,这次是在重叠块上。
      4. 对子图像应用“AND”运算符(用于重叠子块)。

      在 Matlab 中很容易做到。
      如果需要,我可以分享代码。

      【讨论】:

      • 你的方法听起来很有趣。已经10多年了,但是你能分享一下代码吗?反正我对 MatLab 不感兴趣,但我可以将它转换成其他语言。
      【解决方案4】:

      您对“良好”阈值的标准是什么?您可能希望从图像的平均灰度强度开始...

      【讨论】:

        【解决方案5】:

        我认为阈值将独立地取决于每个图像的平均暗度(或颜色分布)。如果您使用任意值,那么如果图像一开始就很褪色,您最终会丢失大量数据。

        此外,您可以通过用黑色和白色稀疏地填充一个区域来模拟一些灰度。 50% 的灰色是一个其他的棋盘格,75% 是你在剩下的一半白色方块上着色,25% 是你颠倒黑白,等等。

        如果不单独考虑每张图片,我认为这个问题没有固定的答案。

        【讨论】:

          【解决方案6】:

          基于阈值的半色调通常会导致大量信息丢失。根据目的,您可能需要考虑dithering

          我喜欢 Stucki 滤镜的外观,因为它清晰且保留了细节。 Here's a C# project 实现算法。有兴趣的可以下载源码。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-01-25
            • 2013-04-21
            • 1970-01-01
            • 1970-01-01
            • 2021-11-10
            • 1970-01-01
            相关资源
            最近更新 更多