直方图均衡化是一种数字图像处理技术,先来看看一张图片。
这张图片我称为原图,该图下面区域有些曝光不足,看上去比较暗。
再来看另一张图。
这张图片我称之为目标图,比原图显得清晰,黑白较均匀,让人眼更容易接受。
这张比较清晰的目标图是原图经过直方图均衡化处理后得到的。
什么是直方图均衡化?首先来看看什么是直方图。
百度百科:
https://baike.baidu.com/item/%E7%9B%B4%E6%96%B9%E5%9B%BE/1103834?fr=aladdin
维基百科:
https://en.wikipedia.org/wiki/Histogram
看一下原图的直方图:
横坐标表示该灰度图每个像素的灰度的取值范围,在这里是0-255,0表示最暗,255表示最亮,纵坐标表示这幅图中某一灰度出现的次数。
在观察该直方图会发现,亮度较多的集中在灰度20-70区域,较少集中在190-220区域,因此该原图在整体上较暗,在局部上非暗即亮。这就仿佛一道菜,在口感上非咸即甜,非软即硬,缺乏过度和层次。
再看一下目标图直方图:
对比两个直方图发现目标直方图有几个特点:
1)像素的亮度分布范围比原图更宽了(层次多,均)。
2)不同像素的亮度出现的次数之间的差值缩小了,也就是不再非黑即白,像素在其他灰度出现的次数增多了,图中它们的高度差不多(层次分明,衡)。
3)从整体上看,如果把直方图的顶点连成一条曲线,则两个直方图的曲线大致有相似性,不会相差太大。两个直方图都出现了一个最高的值,这两个值是什么关系呢?
通过上面的总结我们说说什么是均衡化。均者,匀也,使像素的灰度均匀的分布在每处或每段灰度区域上(通俗的说就是过年了,社会主义给老百姓每家或每个家族都发豆腐,一家也不落下)。衡者,平也,尽可能使像素在每个灰度级上出现的次数一样多(每家或每个家族发的豆腐块数一样多)。
这就是直方图均衡化的意义。在音频处理中的均衡器也大致是这个意思。
接下来看看较官方的对直方图均衡化的解释
百度百科:
https://baike.baidu.com/item/%E7%9B%B4%E6%96%B9%E5%9B%BE%E5%9D%87%E8%A1%A1%E5%8C%96/7773653?fr=aladdin
维基百科:
https://en.wikipedia.org/wiki/Histogram_equalization
这两个百科说的比较清楚,讲的原理比较多,要想看懂需要一些高等数学的知识,好像学工科的人更喜欢实践,对抽象的数学比较惧怕,为了弄懂直方图均衡化,我重学了一部分数学,总算大致弄明白了。
下面从数学角度分析一下直方图均衡化:
S事件是一张图片中的某像素的灰度值(通常值在0与255之间)在该图上出现的次数,则离散型随机变量s的(概率)分布律为{pi}。
S的分布函数(累积概率函数,CDF)为:
, s = 0,1,2,…255
目标图像的分布函数是我们期望得到的,因为具有这样分布函数的图像不会过暗和过量,那么原图经过怎样的处理才能符合目标图像的特征呢?
设原图像像素灰度s与目标图像该点灰度d存在映射关系:
则:
,
分别是目标图像好原图像的分布函数,根据概率论知识,则:
两边对d求导,结合连续型随机变量的函数的概率分布定理1及复合函数的求导法则有:
则:
也就是
根据以上分析得出直方图均衡化的计算步骤如下:
1)计算原图像的直方图
2)根据直方图计算各灰度出现的概率
3)计算原图象的关于各个灰度级的累积分布函数
4)通过原图某像素的灰度,找到对应的该灰度的累积概率,然后乘以255。
现在我们来回答上面曾提到的问题,均衡前后直方图中那个最高点的值一样吗?答案是:不一定。在理论上他们相等,但实际上计算过程中会出现小数点,计算机根据四舍五入把它归到临近的灰度级。
至于程序,网上opencv和matlab有很多例子可以参考。
注:以上数学分析并不严谨,毕竟数学不是我强项,但整体思路应该是可以。