购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 图像的灰度变换

图像灰度变换(Gray-Scale Transformation, GST)是图像增强的一种重要手段,它常用于改变图像的灰度范围及其分布,使图像的动态范围增大及对比度扩展,是图像数字化及图像显示的重要工具之一。图像灰度变换是指根据某种目标条件按一定变换关系逐点改变原图像中每一个像素灰度值的方法。灰度变换的目的是为了改变图像的质量,使图像的显示效果更加清晰,并且有选择地突出图像中感兴趣的特征或者抑制图像中某些不需要的特征,使图像与视觉响应特性相匹配。

一般成像系统只具有一定的亮度响应范围,因此常出现对比度不足的情况,使人眼观看图像时视觉效果很差。另外,在某些情况下,需要将图像的整个灰度级范围或者其中的某一段扩展或压缩到记录器输入灰度级动态范围之内。采用下面介绍的灰度变换方法可以充分利用相机的灰度级动态范围,记录显示出图像中需要的细节,从而大大改善人眼的视觉效果。灰度变换可分为线性变换、分段线性变换、非线性变换、灰度对数变换和直方图均衡化。

4.1.1 线性变换

灰度变换可以使图像动态范围增大,对比度得到扩展,使图像清晰、特征明显,是图像增强的重要手段之一。它主要利用点运算来修正像素灰度,由输入像素点的灰度值确定相应输出点的灰度值,是一种基于图像灰度值变换的操作。灰度变换不改变图像内的空间关系,灰度级的改变是根据某种特定的灰度变换函数进行的,也可以看作是“从像素到像素”的赋值操作。基于点运算的灰度变换如公式(4-1)所示。

其中, T 被称为灰度变换函数,它描述了输入灰度值和输出灰度值之间的转换关系。一旦灰度变换函数确定,该灰度变换就被完全确定下来。

线性灰度变换的变换函数如公式(4-2)所示。

其中, b a 分别是输入图像亮度分量的最大值和最小值, d c 分别是输出图像亮度分量的最大值和最小值。假定原图像 f ( x , y )的灰度范围为[ a , b ],变换后的图像 g ( x , y )的灰度范围线性扩展或压缩至[ c , d ],如图4-1所示。

图4-1 灰度变换

若图像中大部分像素的灰度级分布在区间[ a , b ]内,只有很小一部分的灰度级超过了此区间, M 为原图的最大灰度级,则为了改善增强效果,可以令:

此方法是将灰度值小于 a 的像素的灰度值全部映射为 c ,将灰度值大于 b 的像素的灰度值全部映射为 d ,也就是说,在图像增强的过程中,损失了灰度值小于 a 和大于 b 的信息。但是由于损失的信息在原图像中所占的像素数目非常小,所以在实际应用中,只要选择合适的[ a , b ],这些损失是可以接受的。如果不想损失这部分的信息,可以保持它们的原灰度值不变,利用公式(4-4)进行变换。

由于人眼对灰度级别的分辨能力有限,当相邻像素的灰度值相差较小时,人眼则无法分辨。例如,在曝光不足或过度的情况下,图像的灰度变化可能会局限在一个很小的范围内,这时得到的图像可能是一个模糊不清、没有灰度层次的图像。采用上述线性变换对图像中每一个像素灰度作线性拉伸,可使图像中相邻像素灰度的差值增加,进而有效改善图像视觉效果。

在MATLAB环境中,采用函数imadjust()对图像进行灰度值线性变换,常用语法有:

参数说明:

● I是原图,可以是灰度图像或彩色图像。

● [low_in; high_in]和[low_out; high_out]分别为原图像中要变换的灰度范围和变换后的灰度范围,区间为空时默认为[0 1];low_in,high_in,low_out,high_out的值必须在0到1之间;低于low_in的值和高于high_in的值被去除,也就是说,低于low_in的值映射成low_out,高于high_in的值映射成high_out。

● gamma为映射的方式,默认值为1,即线性映射;当gamma不等于1时,为非线性映射。如果gamma小于1,映射被加权到更高的输出值;如果gamma大于1,则映射被加权到更低的输出值。

● 利用函数imadjust进行彩色图像增强时,是对彩色图像的RGB值分别进行操作。

对'mengwa.jpg'进行线性变换,其MATLAB程序代码如下:

运行程序,线性变换效果如图4-2所示:

图4-2 图像线性变换

4.1.2 分段线性变换

在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸,如图4-3所示。

在实际图像处理中,可以根据实际需要任意组合分段线性变换,以灵活的控制输出灰度分布,并改善输出图像质量,其函数形式如式(4-5)所示。

通常, M 取值为255,且 a < b < M , c < d < M ,从而保证函数是单调递增的,以避免造成处理过程的图像灰度级发生颠倒。

由图4-4可以看出,通过调整折线拐点的位置以及控制分段直线的斜率,可以实现对任意灰度区间的扩展和压缩,分段线性变换在数字图像增强中用途是非常广泛的。

图4-3 分段线性灰度变化

图4-4 不同的分段线性变换

4.1.3 灰度对数变换

灰度对数变换可使一窄带的低灰度输入图像值映射为一宽带的较高灰度输出值,是一种非线性灰度图像变换方法。利用这种变换可以扩展被压缩的灰度图像中的暗像素。对数变换的一般表达式为式(4-6):

其中 c 是比例常数,对数变换的变换关系曲线如图4-5所示。

由图4-5可知,对数变换不是对图像的整个灰度范围进行扩展,而是有选择地对低灰度值范围进行扩展,其他范围的灰度值则有可能被压缩,也就是说它主要用来将图像暗的部分进行扩展,而将亮的部分进行抑制。对数变换的作用过程示例如图4-6所示,变换公式如式(4-7)所示。

图4-5 对数变换的变换曲线

图4-6 对数变换作用过程

对'mengwa2.jpg'进行对数变换,其MATLAB程序代码如下:

运行程序,对数变换效果如图4-7所示。

图4-7 图像对数变换

4.1.4 直方图均衡化

直方图均衡化是一种图像对比度增强技术,它可以改变图像整体偏暗或偏亮或灰度层次不丰富的情况,使得到的直方图占据整个灰度范围且均匀分布。

图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。直方图拉伸和直方图均衡化是两种最常见的间接对比度增强方法。直方图拉伸是通过对比度拉伸对直方图进行调整,从而“扩大”前景和背景灰度的差别,以达到增强对比度的目的,这种方法可以利用线性或非线性的方法来实现;直方图均衡化则通过使用累积函数对灰度值进行“调整”以实现对比度的增强。

直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。这种方法通常用来增强图像的局部对比度而不影响整体的对比度,尤其是当图像的有用数据的对比度相当接近的时候。直方图均衡化通过有效地扩展常用的亮度来实现这种功能,使亮度可以更好地在直方图上分布。这种方法对于背景和前景都太亮或者太暗的图像非常有用。例如,可以使X光图像更好地显示骨骼结构,或者改善曝光过度或者曝光不足照片中的细节。它的主要优势是:它是一个相当直观的技术并且是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直方图,并且计算量也不大。它的缺点是对处理的数据不加选择,可能会增加背景噪声的对比度并且降低有用信号的对比度。

直方图均衡化的基本思想是把原始图像的直方图变换为均匀分布的形式,这样就增加了像素灰度值的动态范围,从而可达到增强图像整体对比度的效果。设原始图像在( x , y )处的灰度为 f ( x , y ),而改变后的图像为 g ( x , y ),则对图像增强的方法可表述为将在( x , y )处的灰度 f ( x , y )映射为 g ( x , y )。在灰度直方图均衡化处理中对图像的映射函数可定义为:

这个映射函数 EQ ( f )必须满足两个条件(其中 L 为图像的灰度级数):

1) EQ ( f )在0≤ f L -1范围内是一个单值单增函数。这是为了保证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列。

2)对于0≤ f L -1有0≤ g L -1,这个条件保证了变换前后灰度值动态范围的一致性。

累积分布函数(Cumulative Distribution Function, CDF)可以满足上述两个条件,且通过该函数可以完成将原图像 f ( x , y )的分布转换成 g ( x , y )的均匀分布。此时的直方图均衡化映射函数为:

上述求和区间为0到 k ,根据该方程可以由原图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原直方图分布,然后根据计算出的累计直方图分布求出 f k g k 的灰度映射关系。在重复上述步骤得到原图像所有灰度级到目标图像灰度级的映射关系后,按照这个映射关系对原图像各点像素进行灰度转换,即可完成对原图像的直方图均衡化。

MATLAB中采用histeq()函数对图像进行均衡化处理,调用形式如下:

参数说明:

● 原始图像I的直方图变成用户指定的向量hgram,hgram中的各元素的值域为[0,1]。

● n是直方图均衡后的灰度级数,默认值为64。

● J变换成图像,T为变化后图像的直方图。

对'mengwa.jpg'做直方图均衡化,其MATLAB程序代码如下:

运行程序,直方图均衡化效果如图4-8所示。

图4-8 图像直方图均衡化 1jDegiTmHF7Puia2lg1MeSdeoDiFV/OgzN2K7QHXfuYnVR++YCc4SBRhhwp0tmEI

点击中间区域
呼出菜单
上一章
目录
下一章
×