直方图均衡化
直方图是用来统计频率的一种图表,横坐标表示分布的不同的种类,纵坐标对应相应的频率。
对于一幅图像来说,不同的图像对应不同的色阶分布。每一个像素点都是0-255中的一个数字。所以对于整个m*n的像素矩阵,其就构成了一个横坐标为0-255色阶,纵坐标为频率的分布直方图。
RGB图像,每一个通道的数值对应的是该色阶下的明暗程度。如:对于灰阶图像来说,0表示黑色,255表示白色。
所有能够通过图像直方图反映出图片的色彩明暗变化,通过调整直方图能够调节图片的色阶分布,从而达到美化图片的目的。其中直方图均衡化(Histogram Equalization)是主要的实现方法。
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成全部范围内的均匀分布。
复杂的数学公式原理就不copy了,举一个比较简单的例子:
现在有一组8色阶的24个像素值分别为:
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
4 |
4 |
4 |
5 |
5 |
6 |
6 |
6 |
7 |
计算其概率分布:
S0 = 3 / 24 = 0.125
则其对应的概率分布为:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0.125 |
0.208 |
0.167 |
0.125 |
0.125 |
0.083 |
0.125 |
0.042 |
通过累计分布函数(accumulated distributed function)计算
(G-1)*S,四舍五入取整
7*0.125 = 0.875 = 1
7*(0.125+0.208) = 2.331 = 2
7*(0.333+0.167) = 3.5 = 4
7*(0.5+0.125) = 4.375 = 4
7*(0.625+0.125) = 5.25 = 5
7*(0.75+0.083) = 5.831 = 6
7*(0.833+0.125) = 6.706 = 7
7*(1) = 7
这样经过累计分布函数变换后的概率映射关系为:
1 |
2 |
4 |
4 |
5 |
6 |
7 |
7 |
0.125 |
0.208 |
0.167 |
0.125 |
0.125 |
0.083 |
0.125 |
0.042 |
概率分布为b:
1 |
2 |
4 |
5 |
6 |
7 |
0.125 |
0.208 |
0.292 |
0.125 |
0.083 |
0.167 |
新的12组像素值则变成:
B0 |
B0 |
B0 |
B1 |
B1 |
B1 |
B1 |
B1 |
B2 |
B2 |
B2 |
B2 |
B3 |
B3 |
B3 |
B4 |
B4 |
B4 |
B5 |
B5 |
B6 |
B6 |
B6 |
B7 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
5 |
5 |
5 |
6 |
6 |
7 |
7 |
7 |
7 |
可见经过累计分布函数变换后的色阶分布更加离散,有一些色阶消失,值也变得各大。最终的效果就是图片整体亮度更加均衡。
从别人博客(https://www.cnblogs.com/tianyalu/p/5687782.html)粘贴来图片: