图像内各像素的灰度值是图像的重要数据,但是由于受输入设备的影响,往往得不到图像的理想灰度值。例如在摄像机观测井下视频监控系统图像时,图像画面的感光度随场合的不同会有很大差别,表现为图像的对比度不足,使图像细节不清、画面模糊。另外,对井下视频监控系统而言,由于环境光线不足,造成了灰度变化的不明显,为边缘特征的提取增加了难度。为此,需要对图像的每一灰度级进行变换,扩大图像的灰度范围,从而增强图像的清晰度。
(1)比例线性变换
成像时感光不足或过度、非线性动态范围太窄等因素,都会造成图像对比度不足,使得图像中的细节分辨不清。
假设原图像f(x,y)的灰度范围为[a,b],希望变换后图像g(x,y)的动态范围为[c,d],则可以利用以下公式来实现变换,即
(2)分段线性变换
采用分段线性变换的方法,主要是对感兴趣区域进行灰度增强,假设感兴趣区域是(a,b),可以采用以下的分段变换公式。
(3)非线性灰度值变换
这种方法的目标与增强对比度相反。当原图的动态范围太大,超出了某些显示设备所允许的动态范围时,可采用对数形式的变换函数进行动态范围压缩:
g(x,y)=clog(1+f(x,y))
其中,c是比例尺常数。
例程3-8是对图像进行对数灰度值变换的MATLAB源程序。
例程3-8
(4)直方图均衡化
直方图均衡化是将原图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法,这样增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。
直方图均衡化过程如下。
1)列出原始图灰度级rk。
2)统计原始直方图各灰度级像素数nk。
3)计算原始直方图各概率:pk=nk/N(k=0,1,2,…,L-1)。
4)计算累计直方图:sk=Σpk。
5)取整Sk=int{(L-1)sk+0.5}。
6)确定映射对应关系:rk→sk。
7)统计新直方图各灰度级像素nk'。(www.xing528.com)
8)用pk(sk)=nk'/N计算新直方图。
直方图均衡化不改变灰度出现的次数,改变的是出现次数所对应的灰度级,以避免改变图像的信息结构。直方图均衡化力图使等长区间内出现的像素数接近相等。
从人眼视觉特性来考虑,一幅图像的直方图如果是均匀分布的,该图像色调给人的感觉比较协调。因此将原图像直方图调整为均匀分布的直方图,这样修正后的图像能满足人眼视觉要求。
例程3-9是对图像进行直方图均衡化的MATLAB源程序。
例程3-9
例程3-9的运行结果如图3-13所示。
图3-13
a)输入的原始图像 b)原始图像的直方图 c)直方图均衡化后图像 d)均衡化后的直方图
MATLAB图像处理工具箱提供了用于直方图均衡化的函数histeq(),其语法格式为:
其中,I为输入的原始灰度图像,n表示输出图像的灰度级数目,它是一个可选参数,默认值为64。
例程3-10是利用函数histeq()进行直方图均衡化的MATLAB程序,其运行结果如图3-14所示。
例程3-10
图3-14 例程3-10的运行结果
a)输入的图像 b)直方图均衡化后的图像
经验分享:对灰度直方图的理解
(1)灰度直方图只能反映图像的灰度分布情况,而不能反映图像像素的位置,即丢失了像素的位置信息。
(2)一幅图像对应唯一的灰度直方图,反之不成立。不同的图像可对应相同的直方图。
(3)灰度直方图反映了数字图像中每一灰度级与其出现频率间的关系,它能描述该图像的概貌。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。