灰度直方图
灰度直方图是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或者频率。
MATLAB实现:
生成有64个小区间的灰度直方图该灰度区间又常常被称为是“收集箱”,收集箱数目一般设置为2的整数次幂,以保证可以无需圆整。
归一化直方图
matlab中imhist函数的返回值如下,counts保存了落入每个区间的像素的个数,图中则是32个区间的像素个数,而x是保存了对应的灰度小区间的向量(灰度值),通过计算counts与图像中的像素总数的商,我们可以得到归一化的直方图。
imhist的返回值表示方法 利用counts和x返回值计算得到归一化直方图通过灰度直方图可以很直观的看出图像的亮度和对比度特征,峰值位置说明了图像的总体上的亮暗,如果图像较亮,则直方图的峰值出现在直方图的较右部分;如果图像较暗,则出现在较左部分。若直方图只有中间某一小段非零值,则对比度较低;反之,若直方图非零值分布很宽而且比较均匀,则说明对比度较高。
直方图均衡化
直方图均衡化是一种直方图修正技术,作用是图像增强,实质是对图像进行非线性拉伸,对图像进行像素值的重新分配,使一定范围内的像素值数量大致相等。通过某种灰度映射来进行操作,处理后的图像占有尽可能多的灰度级并且分布均匀,有较高的对比度和较大的动态范围。
由于均衡化过程中必须要保持原有大小关系,即明暗不能颠倒,只是进行一定的映射关系,同时还要保持映射后的值域在0到255的范围内,所以选用CDF函数(累积分布函数)作为映射关系,因为这是一个单调递增函数,相应的转换公式如下:
其中,n是像素个数总和,nk是当前灰度级的像素个数,L是可能的灰度级总数。
matlab中的操作如下,
调用histeq函数其中,返回值Jeq是经过直方图均衡化的输出图像,T是变换矩阵,如下可以看出原图和进行均衡化后的对比:
左为原图,右为经过均衡化操作后的图像再求其归一化直方图我们可以看到,
左为初始状态,右为均衡化后的归一化直方图可以明显看出,经过均衡化的图像所作出的直方图分布更加的均匀。
再往下看,通过这段对比我们可以发现,将直方图均衡算法用于亮度、对比度不同的各个图像后,得到了右侧直方图大致相同的图像,这体现了直方图均衡化的强大自适应能力,所得到的结果在视觉上是几乎完全一致的,这对在图像分析前将图像转换为统一的形式是十分有益的。
示例代码 处理效果
网友评论