对图像调整亮度和对比度通常可以稍微改善图像质量,但是想要获得一个较好的效果往往需要反复尝试不同的参数组合。一个自动的调整图像亮度对比度的方法可以省下不少麻烦。直方图均衡就是这样一个算法。该算法通过统计图像中像素亮度值的分布,自动地估算出一个最优的变换——变换之后像素的亮度值“均匀”地分布在0到255之间,最大化地利用了所有有效的像素值。
直方图均衡的原理很简单,就是先统计图像像素亮度值I(x,y)的概率分布函数(probabiility distribution function) p(I), 利用这个分布函数求出相应的累积分布函数(cumulative distribution function) c(I). 直方图均衡的目标是处理后图像的概率分布函数近似为均匀分布, 即 p(I') = 常数, 对应的c(I') = I' * k, 其中k也是一个常数. 具体的推倒可以参考这篇文章. 这里给出简略的说明。
考虑一个灰度图像,图像的亮度值分布p(I)可以用以下方法来计算:
p(I) = (亮度为I的像素)/(图像宽度x图像高度)
那么累积分布c(I)就是:
c(0) = p(0)
c(I) = c(I-1) + p(I)I > 0
计算直方