直方图处理是一种灰度变换操作,可以提高图像对比度,进行图像增强,将较窄的图像灰度范围(低对比度)以一定规则拉伸至较大(整个灰度级范围内)的范围(高对比度)。暗图像中,直方图的分量集中在灰度级的低端,类似的,亮图像的分量倾向于灰度级的高端。目的是寻找变换函数,该函数产生均匀直方图输出图像,得到一幅灰度级丰富且动态范围大的图像。当考虑连续灰度值时,涉及到概率密度函数,当考虑离散灰度值时,涉及到直方图。
概率论知识
随机变量的分布函数
离散型随机变量可以用分布律进行全面描述。为了从数学上进行统一,因此离散型随机变量的分布律和连续型随机变量的分布函数统称为随机变量的分布函数。
分布函数具有以下的基本性质
(1)F(x)是一个不减函数
(2)0<=F(x)<=1
(3)F(x+0)=F(x),F(x)是右连续的
连续型随机变量及其概率密度
随机变量的函数的分布
在一些试验中,所关心的随机变量往往不能由直接测量得到,而它却是某个能直接测量的随机变量的函数,比如我们能测量圆轴截面的直径,但是关心的却是截面面积,这里面积是直径的函数。
关于为什么取|h`(y)|(绝对值),下面的例子可以较好的解释。当g(x)的导数小于0时,为了求出PDF,需要将互换上下限,也就是添加负号,将小于0的系数变成正数,其中h(y)是g(x)的反函数。
连续变量的直方图均衡
这张图我是一直懵逼的状态,对于这种方法得到两者相等至今不能理解,只能从概率论方法理解,下面会提到。
这里说的考虑变换函数,是人为规定的不是推导出来的,要求函数单调递增,保证了输出灰度值不少于相应的输入值,防止灰度反变换时产生人为缺陷。
这里出现的是L-1,主要是保证输出灰度的范围与输入灰度的范围相同。
从随机变量的函数分布的角度解释直方图均衡
离散变量的直方图均衡
这里的sk不可能完全是整数,一般是小数,这时候需要将其近似到原图像中的某一个灰度级,因为处理中不允许造成新的灰度级。
有时候会将变换函数写成如下形式,原理是一样的
matlab代码实现
代码中sum(sum(x==i-1),x==i-1如果相等,则返回1,否则返回0,这样将整个图像所有的像素位置置为1或0,sum(x)表示按列求和,sum(sum(x))表示对整个x矩阵进行求和,相当于把对应i-1的像素个数统计总数。
find(x==i-1)表示找到对应i-1像素的全部位置,然后将所有位置进行像素替换