3.2.4 分段线性变换函数
分段函数的特点是形式可以任意复杂,但是它的技术说明要求用户输入。
对比度拉伸
最简单的分段线性函数是:对比度拉伸变换。
对比度拉伸变换是用来扩展灰度级动态范围,延伸超越记录介质和显示装置。
通过分段函数对于灰度级的扭曲,那么就可以比较好的产生不同程度的灰度级拓展。从而影响到了输出图像的对比度。这一条件保持了灰度级的次序,避免了处理后的图像产生人为的灰度错误。通过了对比度的拉升之后,可以把灰度级从原来的范围线性的拉升至整个范围
[0,L−1]
[
0
,
L
−
1
]
。
灰度级分层
通过突出图像中的特定灰度级范围十分重要,其中的应用包括增强某些特征。但是可以通过灰度级分层的处理进行实现,但是绝大部分的事两种方法的变形。一种是把ROI区域的所有灰度值显示成为一个白色,另一种显示为黑色,这样子产生一幅二值图像。(这种方法我觉得很多程度上非常类似于采用一个滤波器进行滤波);第二种方法是通过在一个正比例函数加上在部分点的修正,从而使得感兴趣的范围内的灰度变亮(变暗),保持其他的灰度级不变。
比特平面分层
像素是由比特组成的数字,为了替代突出灰度级的范围,我们可以通过突出特定的比特来突出整个图像的外观。比如说一个8比特图像由8个1比特的平面组成,从最高到最低阶比特的话,4个高阶比特平面特别是最后两个比特平面,包含了在视觉上非常重要的绝大部分数据。低阶比特平面上在图像中贡献了更加精细的灰度细节。
根据一般的灰度变换的函数,很容易显示一幅8比特图像的第8个比特平面,从而可以通过与之灰度变换函数处理输入图像从而得到二值图像。这个函数通过把
[0,127]
[
0
,
127
]
的灰度值映射为0,把
[128,255]
[
128
,
255
]
之间的灰度值映射为1。其他的比特平面也可以通过同样的办法进行得到。
通过把图像分解为比特平面,我们可以分析图像中的每个比特相对重要性。可以用来确定量化这个图像的比特�数是否充分。同时这种类型的分解对于图像的压缩也非常有用。在图像压缩的过程中,重建图像的平面要比全部平面来耍哦。重建时使用第
n
n
个平面的像素乘以进行完成。这个操作与把第
n
n
个有意义的二进制比特变为十进制相比,工作量是相同的,所用的每一个比特平面与一个相应的常数相乘,所有的比特平面相加后得到一幅灰度图像。仅仅采用两个平面重建图像的话,复原了图像原有的主要特征,但是背景区域的信息有了丢失。通过不断的加入更多的平面进行重建可以改善这一现象。但是一般来说重建过程中,达到了一定的程度之后,采用更多的平面对于图像的外观不会有更大的贡献,因此我们可以得出结论,存储4个高阶比特的平面可以允许我们以可接受的细节来重建元图像。同时,也可以大幅降低存储的空间压力。
3.3 直方图处理
灰度级范围是的数字图像的直方图是离散函数
h(rk)=nk
h
(
r
k
)
=
n
k
,其中
rk
r
k
代表的是第
k
k
级的灰度值,是图像中灰度为
rk
r
k
的像素个数。一般在实践中,我们通常用MN表示图像的总像素除以每个像素来进行归一化。其中M和N是图像的行数和列数。因此,我们常常把归一化以后的直方图
P(rk)=nk/MN
P
(
r
k
)
=
n
k
/
M
N
进行给出,其中
k=0,1,2,...,L−1
k
=
0
,
1
,
2
,
.
.
.
,
L
−
1
这里的话,我们简单的可以说,
P(rk)
P
(
r
k
)
是灰度级
rk
r
k
在图像中出现的概率估计,其中归一化直方图的所有分量之和为1。
直方图的话,我的个人感觉就是类似于整个图像的灰度值的概率统计表,通过直方图操作可以直接用于做图像的增强。直方图除了可以提供图像的统计资料以外,同时也可以根据直方图中的固有信息进行图像的压缩和分割。直方图在软件计算中比较简单而且容易实现。
一般可以根据直方图的柱状图形式看出来一幅图像的灰度集中程度,这样子的话可以帮助我们去分析图像画面的好坏。在暗图像中,直方图的分量主要集中在灰度级低的部分。两图像的倾向于分布在高的分量处。低对比度的图像的直方图部分比较狭窄,而且集中在灰度级到中部,可视性非常的差。但是高对比度的图像到分量覆盖了很多的灰度级范围,而且像素整体的分布没有不均匀,只是少部分的垂线部分高出一些,这样子的话可以得出结论:衣服图像的像素倾向于占据整个可能的灰度级而且分布均匀的话,图像是具有较高的对比度,最后得到的图像就是灰度细节丰富而且动态范围较大。
3.3.1 直方图均衡
当我们采用考虑连续的灰度值的时候,或者采用变量
r
r
表示等待处理的灰度,这里的话,的取值范围是
[0,L−1]
[
0
,
L
−
1
]
,其中
L
L
是我们的量化级数,这里的话,当代表白色,
r=L−1
r
=
L
−
1
代表黑色。
为了实现我们的功能,我们需要设定一个函数来实现我们想要的功能。
s=T(r),0≤r≤L−1
s
=
T
(
r
)
,
0
≤
r
≤
L
−
1
这里有几个基本原则需要遵循:
- T(r) T ( r ) 在区间 0≤r≤L−1 0 ≤ r ≤ L − 1 上单调自增
- 当 0≤r≤L−1 0 ≤ r ≤ L − 1 时候, 0≤T(r)≤L−1 0 ≤ T ( r ) ≤ L − 1
这里要求单调递增的原因是为了保证处理之后的输出灰度值不少于相应的输入值,防止出现灰度变换的时候产生的人为缺陷。
这里面的话,单调的变换函数是可能有一对多点映射的,我们就需要要求是严格单调增,这样子才可以保证反函数也是意义映射的。在实践中,我们通常处理的都是整数的灰度值,我们必须把所有的结果进行四舍五入才能得到最后的结果,在不满足严格单调的时候,我们就要使用寻找最接近匹配的方法解决这一问题。
一般来说,一幅图像的灰度值我们可以看作是在 [0,L−1] [ 0 , L − 1 ] 范围内的随机变量,描述的是概率密度函数。其中用 Pr(r) P r ( r ) 和 Ps(s) P s ( s ) 来表示随机变量 s s 和的概率密度函数。