基于matlab的直方图均衡
2021-11-19惠为君
惠为君
(盐城工学院 江苏·盐城 224051)
1 变换函数
图像增强是指对图像进行灰度变换,使图像与视觉响应相匹配,加强图像的视觉效果的一种图像处理方法。灰度变换的方法很多,其中的一种是点运算,指用一个单调递增的函数对原图像的灰度进行非线性运算,从而实现对比度增强。
如图1所示,x表示变换源图像的灰度值,y表示目标图像的灰度值。变换函数y=T(x)需要满足以下两个要求:
图1:变换函数
(2)T(x)在区间[0 255]上严格单调递增。这一条保证源像素值和目标像素值大小一一对应。不允许出现灰度倒置甚至于灰度翻转,否则影响视觉效果。
不是所有的单调递增函数都可用于灰度变换。常用的变换函数有两种形式,函数I和函数II。对于函数I,源图像像素范围[0 128]变换到[0 N2],对于函数II,则变换到[0 N1]。可以看出,N2>128,N1<128,函数 I拉伸了低灰度级,压缩了高灰度级,函数II则相反。可知,曲线斜率大于1的时候,灰度拉伸,小于1的时候,灰度压缩。
2 直方图均衡原理
一幅数字图像中,不同灰度值的像素的数目是不同的。由于光照等的影响,像素值的分布不同,如果光照较强,高灰度级像素较多,如果光照弱,低灰度级像素较多。设置的变换函数需要把灰度值相对集中的灰度范围拉伸,灰度值分布较少的灰度范围压缩,使得总体上灰度的分布更均匀。在需要拉伸的灰度区域,设置的变换函数斜率大于1,在需要压缩的灰度区域变换函数斜率小于1。因此,灰度值越集中,对应的变换函数的斜率越大,反之越小,灰度变换函数的斜率与灰度分布有关。
直方图均衡指的是利用图像的直方图,构建符合以上要求的变换函数,实现图像增强。为了方便讨论,假设图像的灰度值连续分布,其取值范围[0,L-1]。灰度值分布具有随机性,用概率密度f(x)表示,其含义表示灰度值x附近单位区间的像素数目占总数的百比。
变换以后,概率密度函数g(y)为常数,灰度值分布为均匀分布。变换前,x的分布局限在一个较小的范围,反映在视觉效果上,图像不清晰,变换以后灰度值分布是均匀的,图像对比度增强,在视觉效果上,图像更清晰。
对于数字图像,j表示灰度级,xj表示灰度级j对应的灰度值,nxj
表示灰度值为xi的像素数目。灰度值xj的范围为[0,L-1],N表示像素的总数目。和模拟图像对应的数字图像变换函数定义如表1所示。得到变换函数:yi=T xi。
表1:数字图像灰度变换函数
由于变换函数与直方图有关,变换结果为均匀分布,因此称这种图像增强方法为直方图均衡。为目标图像的灰度值,为源图像的灰度值,i为对应的灰度级。
3 matlab实现
为了简单计,基于matlab实现直方图均衡算法。算法步骤如下:
(1)调用imread()函数,读取JPG数字图像,调用rgb2gray()函数,得到256级的灰度级图像数据,保存在二维数组中。为了便于计算,将uint8转double。
(2)计算归一化直方图。
(3)定义累积直方图函数summ(histt),累积直方图函数乘以(L-1)得到转换函数。
(4)利用转换函数实现源图像的直方图均衡,得到目标图像。
(5)保存目标图像。
其中,调用转换函数实现直方图均衡的关键代码如下代如下:
Tx=fix(Tx+0.5);其中,summ是累积直方图函数,Tx就是转换函数。调用matlab函数实现四舍五入处理。对于256色图像,L=256,累积直方图函数乘以255,得到变换函数。
4 测试及分析
测试了三种256色灰度图像,这三种图像的灰度值分布都比较集中,一种灰度值较小的像素较多,如图2所示,一种灰度值居中的像素较多,如图3所示,一种灰度值较大的像素较多,如图4所示。
图2:灰度值偏小图像及处理结果
图3:灰度值居中图像及处理结果
图4:灰度值偏大图像及处理结果
有图2直方图可知,图像像素值主要分布在0-100之间,源图像偏暗。
图像中细胞清晰度很低。转换函数分为两个部分,0--100之间部分斜率较大,对0-100级之间的灰度有很好的拉伸效果。右目标图像可知,细胞的一些像素值变大,这是由于拉伸以后,图像灰度均匀分布,目标图像清晰很多。
由图3直方图可知,图像像素值主要分布在100-200之间,源图像中车子和地面对比度较低,看不清楚。转换函数在100-200之间部分斜率较大,对100-200级之间的灰度有很好的拉伸效果。由于目标图像可知,拉伸以后,汽车变得铮亮,地砖也很清晰。
由图4直方图可知,图像像素值主要分布在100-255之间,源图像偏亮。转换函数在100-200之间部分斜率较大,对100-255级之间的灰度向地灰度方向有很好的拉伸效果。由目标图像可知,拉伸以后,阳光下的植物清晰很多。
5 结束语
由于环境的影响,图像的灰度值分布可能比较集中,这就导致图像对比度较小、不清晰。利用直方图累积函数作为变换函数可以对源图像进行点运算,对源图像的灰度范围进行拉伸或压缩,目标图像的灰度值将是均匀分布,这样图像的对比度将增强,清晰度将提高。直方图均衡将灰度值集中的灰度值拉伸,并不代表灰度值一定增多。