数字图像处理--冈萨雷斯第4版--第三章 灰度变换
第三章 灰度变换
空间域:图像平面本身,之中的图像处理方法直接对图像中的像素进行处理
空间域中的图像处理:主要是灰度变换和空间滤波
灰度变换对像素的各个像素进行操作,空间滤波对每个像素的邻域进行操作
变换域(频率域)中的图像处理:首先将图像变换到变换域,在变换域中进行处理,然后对结果进行反变换,把结果带回空间域
3.1 背景
3.1.1 灰度变换和空间滤波基础
空间域处理基于表达式
g
(
x
,
y
)
=
T
[
f
(
x
,
y
)
]
g(x,y)=T[f(x,y)]
g(x,y)=T[f(x,y)]
f(x,y)输入图像
g(x,y)输出图像
T点(x,y)的一个邻域上定义的针对f的算子
最小邻域的大小为1x1,此时g只依赖于点(x,y)处的f值,此时的T称为灰度变换函数
s
=
T
(
r
)
s=T(r)
s=T(r)
对比拉伸函数
将k以下的灰度级变暗,将高于k的灰度级变亮,产生比原图像对比度更高的一幅图像
阈值处理函数
是对比拉伸函数二点极限情况,T®产生一幅二级(二值)图像
3.1.2 本章例子说明
大多数关于图像增强,是对原图像进行加工,使其结果对某些特定应用而言比原图像更合适的一种处理
3.2 一些基本的灰度变换函数
3.2.1 图像反转
s
=
L
−
1
−
r
s=L-1-r
s=L−1−r
会得到类似于照片底片的效果,可用于增强图像暗色区域中的白色或灰色细节
3.2.2 对数变换
对数变换
s
=
c
l
o
g
(
1
+
r
)
s=clog(1+r)
s=clog(1+r)
使L=99,求得对数变换
s
=
49.5
l
g
(
1
+
r
)
s=49.5lg(1+r)
s=49.5lg(1+r)
恰好过点(99,99)
将输入中范围较窄的低灰度值映射为输出中范围较宽的灰度级,如图片中的(0,40)映射到了(0,160)
同时输入中的高灰度值被映射为输出中范围较窄的灰度级
使用这类变换来扩展图像中的暗像素值,同时压缩高灰度值
指数变换
s
=
c
(
a
r
−
1
)
s=c(a^r-1)
s=c(ar−1)
y
=
0.796849
(
1.0
5
x
−
1
)
y=0.796849(1.05^x-1)
y=0.796849(1.05x−1)
所达成效果恰好于对数变换相反
3.2.3 幂律(伽马)变换
s
=
c
r
γ
s=cr^γ
s=crγ
(1)γ>1
假设L=99,γ=0.10
s
=
62.527587
r
γ
s=62.527587r^γ
s=62.527587rγ
达到的效果于对数变换相同
(2)γ<1
假设L=99,γ=5.0
s
=
1
∗
1
0
−
8
x
5
s=1*10^{-8}x^5
s=1∗10−8x5
达到的效果与指数变换相同
(3)γ=c=1 此时的幂律变换是一个恒等变换
s
=
r
s=r
s=r
注意! :曲线在L处值相同是为了缩放以至于放在同一个图中展示,一般c=1
两种应用场景:
3.2.4 分段线性变换函数
将之前讨论的方法互补,其形式可以任意复杂,但是需要用户输入很多参数
对比度拉伸
扩展图像中的灰度范围
经过对比度拉伸处理后
灰度级分层
突出图像中的特定灰度区间,多数方法都是两个基础方法的变体
将感兴趣范围内的所有灰度值显示为一个值,将所有其他灰度值显示为另一个值
使期望的灰度范围变亮,但保持图像中的其他灰度级不变
比特平面分层
以8比特图片为例
可以突出特定比特对整个图像外观的贡献
原图以及8张bit图像
最高有效的4个平面中包含大量有视觉意义的数据
如何得到二值图像?
以第8个比特平面为例,用一个0 ~ 127映射为0,128 ~ 255映射为1的变换函数阈值处理得到
如何通过比特平面实现图像重建?
将第n个平面的像素数乘以常数2^n-1,再将所有平面相加
存储4个最高有效比特平面,就能以可接受的细节和色调重建原图像,只需要原图像50%的存储容量
3.3 直方图处理
p
(
r
k
)
=
h
(
r
k
)
M
N
=
n
k
M
N
p(r_k)=\frac{h(r_k)}{MN}=\frac{n_k}{MN}
p(rk)=MNh(rk)=MNnk
n_k是f中灰度为r_k的像素的数量,对k的所有值,p(r_k)的和为1
是对图像中出现的灰度级的概率的估计
3.3.1 直方图均衡化(important)
灰度映射条件
对于
s
=
T
(
r
)
s=T(r)
s=T(r)
0
≤
r
≤
L
−
1
0\le r\le L-1
0≤r≤L−1
满足条件
(a)T®在区间上是一个单调递增函数,防止因灰度反转而产生伪相
(b)对于0≤r≤L-1, 有0≤T®≤L-1,保证输出灰度的范围与输入的范围相同
在一些公式中可能会使用逆变换
r
=
T
−
1
(
s
)
r=T^{-1}(s)
r=T−1(s)
KaTeX parse error: Undefined control sequence: \e at position 8: 0\le s\̲e̲ ̲L-1
这样有条件(a) (a
) T®在区间上是一个严格单调递增函数
图像的灰度可视为区间[0, L-1]内的一个随机变量
令P_r( r )和P_s(s)表示两幅不同图像中灰度值r和s的PDF(概率密度函数)
概率密度函数的定义
对于
p
r
(
r
)
,
p
s
(
s
)
p_r(r), p_s(s)
pr(r),ps(s)
由于r,s落在同一区间的概率(即dr)是相同的,故两者的PDF与它们的区间大小成反比,可得
p
s
(
s
)
p
r
(
r
)
=
∣
d
r
d
s
∣
\frac {p_s(s)}{p_r(r)}=\left |\frac{dr}{ds}\right|
pr(r)ps(s)=∣∣∣∣dsdr∣∣∣∣
重要的变换函数,通过这种方法得到的T®,可以使s是一个均匀概率密度函数
s
=
T
(
r
)
=
(
L
−
1
)
∫
0
r
p
r
(
w
)
d
w
s=T(r)=(L-1)\int_{0}^{r}p_r(w)dw
s=T(r)=(L−1)∫0rpr(w)dw
推导过程如下
d
s
d
r
=
d
T
(
r
)
d
r
=
(
L
−
1
)
d
d
r
[
∫
0
r
p
r
(
w
)
d
w
]
=
(
L
−
1
)
p
r
(
r
)
\frac{ds}{dr}=\frac{dT(r)}{dr}=(L-1)\frac{d}{dr}[\int_{0}^{r}p_r(w)dw ]=(L-1)p_r(r)
drds=drdT(r)=(L−1)drd[∫0rpr(w)dw]=(L−1)pr(r)
p
s
(
s
)
=
p
r
(
r
)
∣
d
r
d
s
∣
=
1
L
−
1
p_s(s)=p_r(r)\left |\frac{dr}{ds}\right|=\frac{1}{L-1}
ps(s)=pr(r)∣∣∣∣dsdr∣∣∣∣=L−11
离散值的直方图均衡化/线性化变换
用概率求和来代替概率密度函数与积分
p
r
(
r
k
)
=
n
k
M
N
p_r(r_k)=\frac{n_k}{MN}
pr(rk)=MNnk
直方图均衡化的离散形式
s
k
=
T
(
r
k
)
=
(
L
−
1
)
∑
j
=
0
k
p
r
(
r
j
)
,
k
=
0
,
1
,
2...
,
L
−
1
s_k=T(r_k)=(L-1)\sum_{j=0}^kp_r(r_j),k=0,1,2...,L-1
sk=T(rk)=(L−1)j=0∑kpr(rj),k=0,1,2...,L−1
L是图像中可能出现的灰度级数
离散化的灰度变换函数十分容易求,因为连续变量需要积分,而离散变量直接求和即可
教材给的实例
3.3.2 直方图匹配(规定化)
在有些应用中使用直方图均衡化是不合适的,有时能够规定待处理图像的直方图形状是有用的,称为直方图匹配或直方图规定化
在直方图匹配中r均衡化得到的s作为连接r与指定连续灰度z的桥梁
同时s是也两者均衡化的统一结果
整个流程可以大致概括成
基于
s
=
T
(
r
)
=
(
L
−
1
)
∫
0
r
p
r
(
w
)
d
w
s=T(r)=(L-1)\int_{0}^{r}p_r(w)dw
s=T(r)=(L−1)∫0rpr(w)dw
G
(
z
)
=
(
L
−
1
)
∫
0
z
p
z
(
v
)
d
v
G(z)=(L-1)\int_{0}^{z}p_z(v)dv
G(z)=(L−1)∫0zpz(v)dv
z
=
G
−
1
(
s
)
=
G
−
1
[
T
(
r
)
]
z=G^{-1}(s)=G^{-1}[T(r)]
z=G−1(s)=G−1[T(r)]
离散形式的直方图匹配运算
s
k
=
T
(
r
k
)
=
(
L
−
1
)
∑
j
=
0
k
p
r
(
r
j
)
,
k
=
0
,
1
,
2...
,
L
−
1
s_k=T(r_k)=(L-1)\sum_{j=0}^kp_r(r_j),k=0,1,2...,L-1
sk=T(rk)=(L−1)j=0∑kpr(rj),k=0,1,2...,L−1
G
(
z
q
)
=
(
L
−
1
)
∑
i
=
0
q
p
z
(
z
i
)
,
k
=
0
,
1
,
2...
,
L
−
1
G(z_q)=(L-1)\sum_{i=0}^qp_z(z_i),k=0,1,2...,L-1
G(zq)=(L−1)i=0∑qpz(zi),k=0,1,2...,L−1
z
q
=
G
−
1
(
s
k
)
z_q=G^{-1}(s_k)
zq=G−1(sk)
教材给的实例
直方图均衡化与直方图规定化的比较
直方图均衡化
得到的图像具有太多的噪声,原因是灰度级中一个非常窄的最暗端,在输出图像中扩展为更宽范围的灰度值,这种情况下扩展了灰度级的最大噪声端
直方图规定化
直方图均衡化变换函数非常陡峭,因为图像直方图中有一个接近黑色的大峰值
合理的方法是修改直方图,使其不具有这样的性质
人为规定一个函数,保留直方图的一般形状,但是灰度级的过渡更平滑
3.3.3 局部直方图处理
全局性方法适合于整体增强,当目的是增强图像中几个小区域的细节时,通常就会失败,因为其数量对计算全局变换的影响可以忽略
解决方法:基于像素邻域的灰度分布的变换函数
定义一个邻域,并将其中心在水平方向或者垂直方向上从一个像素移动到另一个像素。在每个位置,计算邻域中的各点的直方图,得到直方图的变换函数,用于映射邻域中心像素的灰度,然后将邻域的中心移到一个相邻像素位置,重复这个过程。
邻域中只有一行或一列在这种平移中发生变化,可以用每个移动步骤中引入的新数据来更新在前一位置得到的直方图
3.3.4 使用直方图统计量增强图像
对于灰度级在区间[0, L-1]的图像,灰度值r相对于其均值m的第n阶矩定义为
μ
n
=
∑
i
=
0
L
−
1
(
r
i
−
m
)
n
p
(
r
i
)
\mu _n=\sum_{i=0}^{L-1}(r_i-m)^np(r_i)
μn=i=0∑L−1(ri−m)np(ri)
m
=
∑
i
=
0
L
−
1
r
i
p
(
r
i
)
m=\sum_{i=0}^{L-1}r_ip(r_i)
m=i=0∑L−1rip(ri)
均值是平均灰度的测度,而方差(即μ_2)是图像对比度的测度
为了增强图像,我们考虑均值和方差的两种用途
全局均值和方差:在整个图像上计算,对总体灰度和对比度的大致调整非常有用,
局部均值和方差:根据图像内的每个像素的邻域的图像特征做出改变
令(x,y)是给定图像中任意一个像素的坐标,令S_xy是以(x,y)为中心的一个规定大小的邻域