假设给定的大小为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
Run Code Online (Sandbox Code Playgroud)
小智 5
“直方图均衡化是自动获取变换函数的过程。因此,您不必担心变换函数的形状和性质”
因此,在直方图均衡中,使用累积频率方法计算变换函数,并且该过程是自动的。根据图像的直方图,我们可以确定累积直方图,并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
Run Code Online (Sandbox Code Playgroud)
现在均衡的直方图因此
rk nk
0 0
1 800
2 520
3 0
4 970
5 660
6 330 + 450 = 780
7 260 + 106 = 366
Run Code Online (Sandbox Code Playgroud)
均衡算法可以表示为
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
Run Code Online (Sandbox Code Playgroud)
但是直方图均衡化存在一个问题,主要是因为它是一种完全自动化的技术,无需设置任何参数。有时,它可以提高我们显着解释图像的能力。但是,很难预测任何给定图像的均衡效果如何;实际上,它可能根本没有用。这是因为对比度的改进在统计上而非视觉上是最佳的。在具有窄直方图和相对较少的灰度级的图像中,由于直方图均衡而导致的对比度的大量增加可能具有降低感知图像质量的不利影响。特别地,采样或量化伪像和图像噪声可能变得更加突出。
自动获取变换(映射)功能的替代方法是直方图规范。在直方图规范中,我们不需要明确的直方图,而是明确指定了特定形状。在希望一组相关图像具有相同直方图的情况下,我们可能希望这样做,以便某个特定操作对所有图像产生相同的结果。直方图规格可以分为两个阶段可视化。首先,我们通过均衡将输入图像转换为具有平坦直方图的临时图像。然后,我们将此均衡的临时图像转换为具有所需直方图的输出图像。第二阶段的映射函数很容易获得。由于累积直方图的重新缩放版本可用于将任何形状的直方图转换为平面直方图,
有关使用C和C ++代码的直方图均衡和映射函数的更多详细信息, 请访问https://programming-technique.blogspot.com/2013/01/histogram-equalization-using-c-image.html
| 归档时间: |
|
| 查看次数: |
3712 次 |
| 最近记录: |