1、直方图的概念
灰度级范围为[0,L-1]的数字图像的直方图是离散函数h()=,其中rk指的是第k级灰度值,nk指的是图像中第k级灰度值得像素个数。
在实践中,经常用乘积MN表示的图像总像素除每个分量来归一化直方图,M和N是图像的行数和列数。因此,归一化之后的直方图由p()= / MN给出,其中k=0,1,2,```,L-1。简单的说,p(rk)反映了灰度级rk在图像中出现的概率。归一化直方图中的所有分量之和等于1。
一个结论:若一幅图像的像素占有全部可能的灰度级范围并且分布均匀,则这样的图像有高对比度和多变的灰度色调。
2、直方图均衡化
(1)直方图均衡化的目的:寻找变换函数,该函数产生有均匀直方图的输出图像。也就是得到一幅灰度级丰富且动态范围大的图像。该变换函数仅仅依靠输入图像的直方图中的信息就可以达到这一效果。因此直方图均衡化的关键就是找到这一变换函数。
(2)直方图均衡化的原理:
考虑连续值:
变量r表示待增强图像的灰度级。假设r被归一化到区间[0 , 1],且r=0表示黑色及r=1表示白色。
对于任意一个满足上述条件的r,我们将注意力集中在变换形式上:s = T(r),0<= r <=1,假设变换函数T(r)满足以下条件:
(a)T(r)在区间0<= r<=1中为单值且单调递增 (保证在原图像中灰度值高的地方变换后仍然高,原图像中灰度值低的地方变换后仍然低,防止在变换的时候产生人为缺陷)
(b)当0<= r <=1时,0<= T(r) <=1 (保证原图像的灰度值的变化范围和输出图像的灰度值的变换范围相同)
现在的问题可以用下图来进行描述:
上图所示:一幅图像的灰度级可被视为区间[0 , 1]内的随机变量,随机变量的一个最重要的基本描述是其概率密度函数(PDF)。令和分别表示随机变量r和s的概率密度函数。现在的主要问题就是求函数T,使得结果图像的直方图为均匀分布。
推导:
若:s1=T(r1),s1+=T(r1+r),有下列结论:
由图可知:灰度级在[r1 , r1+r]之间的像素都被映射到了灰度值在[s1 , s1+]之间的像素,
因此输入图像中灰度值在[r1 , r1+r]之间的像素出现的概率和灰度值在[s1 , s1+]之间的像素出现的概率相等,则:
如果r足够小,则图中阴影部分的面积可以用长方形代替,则:
则:
即:
注:是均匀的概率密度函数,输出图像的概率密度函数图像中s[0,1],阴影部分的面积为1,所以=1,s[0,1]
将s=T(r),=1代入中得:
两边同时取积分得:
即:
考虑离散值:
实际上我们处理的数字图像都是离散的值。对于离散值,我们处理其概率与和,而不是概率密度函数与积分。
一幅图像中,灰度级出现的概率近似为:,k=0,1,2,```,L-1
则:
需要注意:
(a)上式中的和都是归一化之后的值。
(b)在实际的应用中,输入和输出的数字图像的灰度级范围应该是一致的。例如:对一幅256个灰度级的数字图像进行直方图均衡,输出图像也应该是256个灰度级的。
例题:已经一幅64*64、3bit的数字图像,各灰度级出现的频数如下所示,试进行直方图均衡。
r | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
n(r) | 790 | 1023 | 850 | 656 | 329 | 245 | 122 | 81 |
解答方法如下:
原图像的像素总数为:64*64=4096
但是到这里还没有结束,因为原图像的灰度级范围是[0 , 7],因此输出图像灰度级范围还应该是[0 , 7],
所以还要将映射到[0 , 7]中去。映射结果如下:
说明:
(1)与连续形式不同,一般不能证明离散变换能产生均匀概率密度函数的离散值(也就是均匀直方图)
(2)直方图均衡化具有完全“自动化”的特点,仅仅根据输入图像的直方图就能够进行直方图均衡化,不需要设置参数。
(3)计算简单性也是直方图均衡化的一个优点。
下一篇会进行算法实现。笔记摘自于电子科技大学数字图像处理课程,错误的地方还请大佬指出。