图像本身的灰度分布是随机的,因此具有很大的可能性出现这种情况:在某一灰度级附近分布了大量像素,在另一灰度级附近却几乎没有像素,也即灰度分布不均。为了尽量让灰度等可能的分布于所有灰度级,可以对直方图采用均衡化算法。
均衡化算法的数学推导,一般采用概率论的理论,但是对于直方图均衡化根本不需要使用这么复杂的理论来解释,一定的逻辑推理即可。
直方图均衡化目标
图1 源图像灰度直方图
图2 目标图像直方图
上图展示了直方图均衡化的目标,即:将原本灰度随机分布的图像变成灰度均匀分布的图像。
均衡化算法
思路是确定源图像中的某一灰度级在新图像中的对应灰度级应该是多少。比如八灰度级(k∈[0, 7])的源图像中灰度级为0的像素占比为10%,则在新图像中对应的灰度级应该是7*10%=0.7,取整为1;灰度级为5的像素占比为8%,显然这只是灰度级为5的像素所占的比例,为了求出对应灰度级,应该考虑k∈[0,5]的像素占比,假设为60%,则对应灰度级应该为7*60%=4.2,取整为4。
从上面可以看出,这里最关键的思想是累计灰度级数。在求对应灰度级时并不是只用原灰度级占比乘以总灰度级数,而应该是累计灰度级占比。
示例(参考来源)
表1 原始图像各像素灰度级
表2 算法计算过程
表3 结果图像各像素灰度级