直方图均衡化
我们已经看到,可以使用直方图拉伸来增加对比度。在本教程中,我们将了解如何使用直方图均衡化来增强对比度。
在执行直方图均衡化之前,您必须了解直方图均衡化中使用的两个重要概念。这两个概念称为 PMF 和 CDF。
它们在我们的 PMF 和 CDF 教程中进行了讨论。请访问它们以成功掌握直方图均衡化的概念。
直方图均衡化
直方图均衡化用于增强对比度。对比度不一定总是会增加。在某些情况下,直方图均衡化可能会更糟。在这种情况下,对比度会降低。
让我们通过将下面的图像作为简单图像来开始直方图均衡化。
图像

此图像的直方图
此图像的直方图如下所示。

现在我们将对其进行直方图均衡化。
PMF
首先,我们必须计算此图像中所有像素的 PMF(概率质量函数)。如果您不知道如何计算 PMF,请访问我们的 PMF 计算教程。
CDF
我们的下一步涉及计算 CDF(累积分布函数)。同样,如果您不知道如何计算 CDF,请访问我们的 CDF 计算教程。
根据灰度计算 CDF
例如,让我们考虑一下,第二步计算出的 CDF 如下所示。
灰度值 | CDF |
---|---|
0 | 0.11 |
1 | 0.22 |
2 | 0.55 |
3 | 0.66 |
4 | 0.77 |
5 | 0.88 |
6 | 0.99 |
7 | 1 |
然后在此步骤中,您将 CDF 值与(灰度级(减)1)相乘。
假设我们有一个 3 bpp 图像。那么我们拥有的级别数为 8。1 减 8 等于 7。因此我们将 CDF 乘以 7。这是我们相乘后得到的结果。
灰度级值 | CDF | CDF * (级别-1) |
---|---|---|
0 | 0.11 | 0 |
1 | 0.22 | 1 |
2 | 0.55 | 3 |
3 | 0.66 | 4 |
4 | 0.77 | 5 |
5 | 0.88 | 6 |
6 | 0.99 | 6 |
7 | 1 | 7 |
现在我们到了最后一步,我们必须将新的灰度值映射到像素数。
假设我们的旧灰度值具有这些像素数。
灰度值 | 频率 |
---|---|
0 | 2 |
1 | 4 |
2 | 6 |
3 | 8 |
4 | 10 |
5 | 12 |
6 | 14 |
7 | 16 |
现在,如果我们将新值映射到,那么这就是我们得到的结果。
灰度值 | 新灰度值 | 频率 |
---|---|---|
0 | 0 | 2 |
1 | 1 | 4 |
2 | 3 | 6 |
3 | 4 | 8 |
4 | 5 | 10 |
5 | 6 | 12 |
6 | 6 | 14 |
7 | 7 | 16 |
现在将这些新值映射到直方图上,就完成了。
让我们将这种技术应用到原始图像上。应用后,我们得到了以下图像及其直方图。
直方图均衡化图像

此图像的累积分布函数

直方图均衡化直方图

比较直方图和图像

结论
从图像中可以清楚地看到,新图像的对比度得到了增强,其直方图也得到了增强已经均衡。这里还有一件重要的事情需要注意,在直方图均衡化过程中,直方图的整体形状会发生变化,而在直方图拉伸过程中,直方图的整体形状保持不变。