直方图均衡化的计算步骤举例
时间: 2023-10-19 22:05:18 浏览: 53
好的,我们来举一个简单的例子来说明直方图均衡化的计算步骤。
假设我们有一张灰度图像,大小为4x4,像素值范围为0-255,像素值分别为:
```
87 162 248 41
120 195 213 75
70 110 182 33
90 143 202 55
```
首先,我们需要计算出图像的灰度直方图。直方图表示每个像素值在图像中出现的次数。我们可以用一个长度为256的数组histogram来存储直方图,其中histogram[i]表示像素值为i的像素在图像中出现的次数。对于上面的例子图像,它的灰度直方图为:
```
histogram = [0, 1, 0, ..., 0, 1, 0]
```
其中,histogram[41]=1,histogram[55]=1,histogram[70]=1,histogram[75]=1,histogram[87]=1,histogram[90]=1,histogram[110]=1,histogram[120]=1,histogram[143]=1,histogram[162]=1,histogram[182]=1,histogram[195]=1,histogram[202]=1,histogram[213]=1,histogram[248]=1。
然后,我们需要计算出图像的累积分布函数。累积分布函数表示在灰度级别为i及以下的像素占整个图像像素数的比例。我们可以用一个长度为256的数组cdf来存储累积分布函数,其中cdf[i]表示灰度级别小于等于i的像素占整个图像像素数的比例。对于上面的例子图像,它的累积分布函数为:
```
cdf = [0.0625, 0.125, 0.1875, ..., 0.9375, 0.9375, 1.0]
```
其中,cdf[0]=0.0625,cdf[1]=0.125,cdf[2]=0.1875,...,cdf[253]=0.9375,cdf[254]=0.9375,cdf[255]=1.0。
最后,我们需要计算出图像的均衡化函数。均衡化函数表示对于灰度级别为i的像素,它在均衡化后应该变成的像素值。我们可以用一个长度为256的数组eq_func来存储均衡化函数,其中eq_func[i]表示灰度级别为i的像素在均衡化后应该变成的像素值。对于上面的例子图像,它的均衡化函数为:
```
eq_func = [20, 69, 114, ..., 233, 240, 255]
```
其中,eq_func[0]=20,eq_func[1]=69,eq_func[2]=114,...,eq_func[253]=233,eq_func[254]=240,eq_func[255]=255。
最后,我们将图像中每个像素的灰度值替换为均衡化函数对应的灰度级别,即完成了直方图均衡化。对于上面的例子图像,均衡化后的结果为:
```
69 181 255 20
114 211 233 41
46 85 192 0
87 143 206 55
```
可以看到,经过直方图均衡化后,图像的对比度增强了,更加清晰易于观察。