直方图是用来统计频率的一种图表,横坐标表示分布的不一样的种类,纵坐标对应相应的频率。html
对于一幅图像来讲,不一样的图像对应不一样的色阶分布。每个像素点都是0-255中的一个数字。因此对于整个m*n的像素矩阵,其就构成了一个横坐标为0-255色阶,纵坐标为频率的分布直方图。函数
RGB图像,每个通道的数值对应的是该色阶下的明暗程度。如:对于灰阶图像来讲,0表示黑色,255表示白色。spa
全部可以经过图像直方图反映出图片的色彩明暗变化,经过调整直方图可以调节图片的色阶分布,从而达到美化图片的目的。其中直方图均衡化(Histogram Equalization)是主要的实现方法。3d
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成所有范围内的均匀分布。htm
复杂的数学公式原理就不copy了,举一个比较简单的例子:blog
如今有一组8色阶的24个像素值分别为:图片
0ci |
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)粘贴来图片: