【问题标题】:histogram equalization transformation function直方图均衡变换函数
【发布时间】:2017-12-10 17:24:32
【问题描述】:

假设给定大小为 64*64 像素 (M*N=4096) 的 3 位图像 (L=8) 具有如下所示的强度分布。如何获得直方图均衡变换函数 然后计算图像的均衡直方图?

Rk     nk
0      800
1      520
2      970 
3      660
4      330
5      450
6      260
7      106

【问题讨论】:

    标签: image-processing


    【解决方案1】:

    “直方图均衡化是自动获取变换函数的过程。所以你不必担心变换函数的形状和性质”

    所以在直方图均衡中,变换函数是使用累积频率方法计算的,这个过程是自动的。从图像的直方图中,我们确定了累积直方图c,并在我们进行时重新调整值,使它们占据 8 位范围。这样c就变成了一个查找表,后续可以应用到图片上进行均衡化。

    rk      nk       c        sk = c/MN       (L-1)sk     rounded value
    0       800      800      0.195            1.365      1
    1       520      1320     0.322            2.254      2
    2       970      2290     0.559            3.913      4
    3       660      2950     0.720            5.04       5 
    4       330      3280     0.801            5.601      6
    5       450      3730     0.911            6.377      6
    6       260      3990     0.974            6.818      7
    7       106      4096     1.000            7.0        7
    

    因此,均衡直方图为

    rk           nk
    0            0
    1            800
    2            520     
    3            0
    4            970
    5            660
    6            330 + 450 = 780
    7            260 + 106 = 366 
    

    均衡算法可以表示为

    Compute a scaling factor, α= 255 / number of pixels
    Calculate histogram of the image
    Create a look up table c with
        c[0] =  α * histogram[0]
    for all remaining grey levels, i, do
        c[i] = c[i-1] + α * histogram[i]
    end for
    for all pixel coordinates, x and  y, do
        g(x, y) = c[f(x, y)]
    end for
    

    但是直方图均衡存在一个问题,这主要是因为它是一种完全自动化的技术,无需设置参数。有时,它可以显着提高我们解释图像的能力。然而,很难预测均衡对任何给定图像的益处。事实上,它可能根本没有任何用处。这是因为对比度的改进在统计上是最优的,而不是在感知上。在具有窄直方图和相对较少灰度级的图像中,由于直方图均衡而导致的对比度大幅增加可能会产生降低感知图像质量的不利影响。特别是,采样或量化伪影和图像噪声可能会变得更加突出。

    自动获取转换(映射)函数的替代方法是直方图规范。在直方图规范中,我们不需要平面直方图,而是明确指定特定形状。在希望一组相关图像具有相同直方图的情况下,我们可能希望这样做——也许是为了使特定操作对所有图像产生相同的结果。 直方图规范可以可视化为一个两阶段的过程。首先,我们通过均衡将输入图像转换为具有平坦直方图的临时图像。然后我们将这个均衡的临时图像转换为具有所需直方图的输出图像。第二阶段的映射函数很容易获得。由于累积直方图的重新缩放版本可用于将具有任何形状的直方图转换为平面直方图,因此累积直方图的逆将执行从平面直方图到具有指定形状的直方图的逆变换。

    有关使用 C 和 C++ 代码的直方图均衡和映射函数的更多详细信息 https://programming-technique.blogspot.com/2013/01/histogram-equalization-using-c-image.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-03
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多