综述
直方图均衡化(Histogram equalization)常用于增强图片的整体对比度,特别对于那些有用的数据被相似数据所代表的情况。通过直方图均衡化将亮度更好的分布于直方图上,使得低对比度区域有了更高的对比度。该方法对于前景和背景都很暗或都很亮的情况有很好的调节效果。
实现
假设有一个离散的灰度图像
-
原图灰度级概率统计
ni 代表灰度级i 出现的次数,Imin,Imax 分别代表图像中最小,最大的灰度级别,L是均衡化后的灰度级数,那么灰度级i 在该图片中出现的概率Px(i) 可表示如下:Px(i)=P(x=i)=nni,0≤i<L
该过程相当于将图像的直方图归一化到[0,1] ,所以最终的到的直方图也是归一化到[0,1] 。 -
由累计直方图得到均衡化直方图
根据下式计算累计直方图:cdfx(i)=∑j=0iPx(j)
将cdfx 的灰度级范围从[Imin,Imax] 归一化到[0,L−1] ,就得到了目标输出{y} 的累计直方图cdfy ,由cdfy 就可以得到{y} 的直方图,该直方图就是均衡化的。以上叙述都是基于灰度图的,该算法也可以应用于彩色图像,只需要分别处理R、G、B三个通道即可。然而,色彩通道的关系会因为该算法的应用而改变,从而产生戏剧性的变化。
实例
对于如下图所示的
该图片的灰度值如下表所示:
首先,计算该图像的直方图,结果如下:
然后,根据直方图计算原始图像中小于等于每个灰度级的像素的个数(即将累计直方图中的值乘以图片大小:
原始灰度级
|
|
---|---|
52 | 1 |
55 | 4 |
58 | 6 |
59 | 9 |
60 | 10 |
… | … |
154 | 64 |
根据以下规则将
以原始灰度级55为例,均衡化后的灰度级
原始灰度级
|
|
均衡化后灰度级
|
---|---|---|
52 | 1 | 0 |
55 | 4 | 12 |
58 | 6 | 20 |
59 | 9 | 32 |
60 | 10 | 36 |
… | … | … |
154 | 64 | 255 |
原始图像直方图与均衡化直方图对比:
原始图片与均衡化处理后的图片对比:
结束语
直方图均衡化只能解决整体曝光不足或曝光过度的问题,而对于实际应用中经常出现的光照不均匀问题处理效果不明显。