3.1 背景
本章主要讲解空间域的图像处理方法,直接对图像中的像素进行操作,主要包括:灰度变换和空间滤波。
灰度变换是对图像的各个像素进行操作,空间滤波是对每个像素的邻域进行操作。
3.1.1 灰度变换和空间滤波基础
- 空间域处理可以表达为
- 邻域原点从一个像素移动到另一个像素应用算子T,产生输出。对于任意指定的位置(x,y),输出图像g(x,y)的值等于对f中以(x,y)为原点的邻域应用算子T的结果。以上的操作称为空间滤波。
- 最小邻域的大小为1,此时g只依赖于点(x,y)处的f值,此时T称为灰度变换函数,用s和r分别表示g和f在任一点的灰度值,则s=T(r)。
- 举例:以下灰度变换函数,将小于k值的r值,减小s的值,倾向于黑色;将大于k值的r值,增大s的值,倾向于白色,用于对比度拉伸。
3.2 基本的灰度变换函数
3.2.1 反转变换
- 用于增强图像暗色区域的白色会灰色细节 : s=L-1-r
3.2.2 对数变换
- 将输入中范围较窄的低灰度值 映射为输出中范围较宽的灰度值,如将输入到[0,L/4]映射到[0,3L/4]。这个操作用于扩展图像中的暗像素值,同时压缩高灰度值。
- 对数变换可以压缩像素变化较大的图像的动态范围,如傅里叶频谱,如果直接线性缩放频谱图,那么只显示图像中心最亮的像素,用对数变换可以显示更大范围的灰度,将灰度值低的部分,用更大的动态范围显示
3.2.3 幂律变换
- 显示器的显示存在gamma效应,gamma>1,将较窄范围的暗输入映射为较宽范围的输出值,这样会产生比预期更暗的图像。因此,需要使用一个gamma的倒数进行校正,校正后的图像更接近于原图像。
3.2.4 分段线性变化函数
- 对比度拉伸
令(r1,s1)=(rmin ,0)和(r2,s2)=(rmax ,L-1),表示将整幅图像的灰度范围(rmin,rmax)拉伸到(0,L-1)。
- 比特平面分层
在一幅256级灰度图像中,图像值是由8比特组成的,图像可视为8个1比特的平面组成。每个比特平面可视为一幅二值图像,最高有效的4个平面中包含大量的具有视觉意义的信息。
将图像分解成各个比特平面对图像压缩是有用的,重建所用的比特平面少于原有的比特平面。重建是通过将第n个平面的像素乘以常数2^n-1来实现的,每个平面乘以对应常数后,将所有平面相加,则可以得到灰度级图像,例如:
3.3 直方图处理
令
r
k
r_k
rk表示一幅L级图像f(x,y)的灰度,
n
k
n_k
nk是灰度为
r
k
r_k
rk的像素的数量。
非归一化的直方图表示为:
h
(
r
k
)
=
n
k
h(r_k)=n_k
h(rk)=nk。
归一化的直方图为:
p
(
r
k
)
=
n
k
/
M
N
p(r_k)=n_k/MN
p(rk)=nk/MN,其中MN表示图像的行数和列数。
具有高对比的图像,像素占据了整个灰度级范围并且均匀分布;低对比度的图像直方图容器基本位于灰度级的中间。
3.3.1 直方图均衡化
- 对于输入图像中的给定灰度值r,产生 一个输出灰度值s,灰度映射函数T, s = T ( r ) s=T(r) s=T(r),函数T是一个单调递增函数,并且值域为[0,L-1]。在一些公式中需要使用逆变换 r = T − ( s ) r=T^-(s) r=T−(s),此时T必须是严格单调递增函数。
- 两者的区别在于,单调递增函数可以执行一对一或多对一映射,从r映射到s时不会产生歧义,但是想从映射的单个值s唯一地恢复r的多个值是不可能的,因此需要严格递增函数来保证逆映射是单值的
-
p
r
(
r
)
p_r(r)
pr(r)是原图像中灰度值的概率密度函数,经灰度映射函数
s
=
T
(
r
)
s=T(r)
s=T(r),
p
s
(
s
)
p_s(s)
ps(s)是直方图均衡化后图像中灰度值的概率密度函数,若
T
(
r
)
T(r)
T(r)和
p
r
(
r
)
p_r(r)
pr(r)已知,且
T
(
r
)
T(r)
T(r)可微,则变换前后的PDF满足以下关系:
令灰度变换函数为:
其中右侧的积分是概率密度函数的积分,因为PDF总是为正,函数的积分就是函数下方的面积,该灰度变换函数是递增的,满足条件。在该变换函数的作用下,原图的概率密度函数会变为:
由于图像的灰度值概率是离散的,用概率与求和来代替概率密度函数和积分,灰度变换函数的离散形式为:
- 假设一幅大小为 64 × 64 像素的3比特图像 ( L = 8 ) ,其中灰度级是范围 [0,7] 中的整数。
其灰度变换函数为:
直方图均衡化后产生了5个不同的灰度级,原有的灰度级567都映射到了7中。直方图均衡化会使得图像的灰度级覆盖更宽的灰度范围,但如果原本的图像已经覆盖了整个灰度级,那么其变换函数几乎是线性的,输入被映射为几乎相等的输出,作用不大。
3.3.2 直方图规定化
-
p
r
(
r
)
p_r(r)
pr(r)表示输入图像的灰度值概率密度分布,
p
z
(
z
)
p_z(z)
pz(z)表示规定的灰度值概率密度函数,它们都可以通过灰度变化函数进行均衡化,得到均衡化的概率密度分布
p
s
(
s
)
p_s(s)
ps(s),通过逆变换就可以得到s到z的变换关系
直方图均衡化的过程为:
- 计算输入图像的直方图 p r ( r ) p_r(r) pr(r),并用灰度变换函数 T ( r ) T(r) T(r)映射到均衡化的图像灰度 s k s_k sk;
- 对于规定的图像直方图 p z ( z ) p_z(z) pz(z),用灰度变换函数 G ( z ) G(z) G(z)计算均衡化后的图像灰度值;
- 对于 s k s_k sk中的每个值,找到与其最接近的 G ( z ) G(z) G(z),此时的 z q z_q zq便是与 s k s_k sk对应的灰度值。
- 举例:对于原直方图和规定直方图分别为:
第一步,是得到原直方图均衡化的结果
第二步,是使用规定直方图的概率分布,计算 G ( z ) G(z) G(z)值
第三步,找到 s k s_k sk与 G ( z ) G(z) G(z)的对应值。例如, s 0 = 1 s_0=1 s0=1与 G ( z 3 ) = 1 G(z_3)=1 G(z3)=1,那么就有对应 s 0 − z 3 s_0-z_3 s0−z3,即直方图均衡化中的图像中,值为1的每个像素映射到直方图规定化后的图像中值为3的像素
3.3.3 局部直方图
- 定义一个邻域,将其中心在水平或垂直方向上从一个像素移动到另一像素。在每个位置上,计算邻域中的各点的直方图,得到直方图均衡化或规定化的变换函数,用于映射邻域中心像素的灰度。然后移动邻域的中心,重复以上过程。
3.3.4 直方图统计量增强图像
- 从直方图得到的统计量信息可以用于增强图像,灰度值r对于其均值m的第n阶矩定义为
u
n
u_n
un,均值m是平均灰度的测度,方差是第2阶矩,表示图像对比度的测度。
在计算中,我们可以通过灰度值来直接计算得到它们,而不必使用直方图计算出概率分布
- 局部均值和局部方差表示的是像素邻域内的信息,使用局部信息在图像的几个区域中来增强图像,并且保持其余背景不变。对于图像中的某一个像素,其局部均值和方差,均小于全局均值和方差,那么其就作为一个待处理的像素点