Image processing 直方图均衡化变换函数

Image processing 直方图均衡化变换函数,image-processing,Image Processing,假设大小为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 “直方图均衡化是自动获取变换函数的过程。因此,您无需担心变换函数的形状和性质” 因此,在直方图均衡化中,使用累积频率方法计算变换函数,并且该过程是自动的

假设大小为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
“直方图均衡化是自动获取变换函数的过程。因此,您无需担心变换函数的形状和性质”

因此,在直方图均衡化中,使用累积频率方法计算变换函数,并且该过程是自动的。根据图像的直方图,我们确定累积直方图,
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++代码实现直方图均衡化和映射功能的更多细节

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

因此,在直方图均衡化中,使用累积频率方法计算变换函数,并且该过程是自动的。根据图像的直方图,我们确定累积直方图,
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++代码实现直方图均衡化和映射功能的更多细节