本篇博客简要介绍线性、分段线性变换和直方图均衡化
灰度变换
空域增强是指在由像素组成的空间直接对像素进行增强的方法,可表示为。
d
s
t
(
x
,
y
)
=
T
[
s
r
c
(
x
,
y
)
]
dst(x,y) = T[src(x,y)]
dst(x,y)=T[src(x,y)]
简单解释下,
d
s
t
(
x
,
y
)
dst(x,y)
dst(x,y)是增强后的图像,
s
r
c
(
x
,
y
)
src(x,y)
src(x,y)是增强前的图像,而
T
(
⋅
)
T(\cdot)
T(⋅)是增强的操作,举个简单的例子,
T
(
m
)
=
2
m
T(m)=2m
T(m)=2m,就是说把原来的图像的像素值乘以2当作增强后的图像,好理解吧。
灰度线性变换
介绍这个之前,我们先来回忆下,中学阶段学的点斜式方程。
y
−
y
′
=
k
(
x
−
x
′
)
y - y^{\prime}= k(x-x^{\prime})
y−y′=k(x−x′)
其中,
k
为
斜
率
,
(
x
′
,
y
′
)
为
已
知
的
一
点
k为斜率,(x^{\prime},y^{\prime})为已知的一点
k为斜率,(x′,y′)为已知的一点。这个方程,大家应该都懂吧,现在来引入灰度线性变换的方程。
假定原图像 f ( x , y ) f(x,y) f(x,y)的灰度范围为 [ a , b ] [a,b] [a,b],希望变换后图像 g ( x , y ) g(x,y) g(x,y)的灰度范围扩展至 [ c , d ] [c,d] [c,d],直接看图,一下就能看出来了。
斜率为 d − c b − a \frac{d-c}{b-a} b−ad−c,用点 ( a , c ) (a,c) (a,c)带入方程得到
g ( x , y ) = d − c b − a [ f ( x , y ) − a ] + c g(x,y)=\frac{d-c}{b-a}[f(x,y)-a]+c g(x,y)=b−ad−c[f(x,y)−a]+c
分段线性变换
无非就是变成了多条线了,本质跟上面说的完全一样。
图上的三条直线,一条一条的带入点斜式方程,就可以求出表达式了,这边就不重复写了。
直方图均衡化
先说直方图的计算步骤
设大小为 M × N M\times N M×N的图像灰度级为 L L L,则其灰度直方图 p L i s t pList pList可用如下算法得到:
- 初始化, p H i s t [ k ] = 0 ; k = 0 , ⋯ , L − 1 pHist[k]=0;k=0,\cdots,L-1 pHist[k]=0;k=0,⋯,L−1。
- 统计: p H l i s t [ f ( i , j ) ] + + ; i = 0 , ⋯ , M − 1 ; j = 0 , ⋯ , N − 1 pHlist[f(i,j)]++;i=0,\cdots,M-1;j=0,\cdots,N-1 pHlist[f(i,j)]++;i=0,⋯,M−1;j=0,⋯,N−1
- 归一化: p H l i s t [ f ( i , j ) ] M × N \frac{pHlist[f(i,j)]}{M\times N} M×NpHlist[f(i,j)]
数学原理
设 r r r为灰度变换前的归一化灰度级 ( 0 ≤ r ≤ 1 ) (0\le r\le 1) (0≤r≤1), T ( ⋅ ) T(\cdot) T(⋅)为变换函数, s = T ( r ) s=T(r) s=T(r)为变换后的归一化灰度级 ( 0 ≤ s ≤ 1 ) (0\le s \le 1) (0≤s≤1)。
由概率论知识可知,如果已知随机变量
ξ
\xi
ξ的概率密度函数为
p
r
(
r
)
p_r(r)
pr(r),而随机变量
η
\eta
η是
ζ
\zeta
ζ的函数,即
η
=
T
(
ξ
)
\eta=T(\xi)
η=T(ξ),
η
\eta
η的概率密度为
p
s
(
s
)
p_s(s)
ps(s),则可由
p
r
(
r
)
p_r(r)
pr(r)求出
p
s
(
s
)
p_s(s)
ps(s)。我举个简单的例子,可能就比较好明白了,比如说一颗正常的骰子记作A
(得到任何一个点的概率相等,不是赌场里面的哈!!!),它得到的点数用随机变量
ξ
\xi
ξ来表示;然后另外一颗骰子记作B
(得到六个面的概率还是相等,不过点数我们把它全部乘以2,也就是2,4,6,8,10,12这六个点了),它得到的点数用随机变量
η
\eta
η来表示。
下面来看个具体的例子,比如说A骰子摇到点数 ≤ 4 \le4 ≤4的概率为 2 3 \frac{2}{3} 32,B骰子摇到点数 ≤ 8 \le8 ≤8的点数当然也是 2 3 \frac{2}{3} 32啦。
因此就能比较好理解如下的公式了:
F
η
(
s
)
=
P
(
η
<
s
)
=
∫
−
∞
s
p
s
(
x
)
d
x
=
P
(
ξ
<
r
)
=
∫
−
∞
r
p
r
(
x
)
d
x
F_{\eta}(s)=P(\eta <s)=\int_{-\infty}^sp_s(x)dx = P(\xi<r)=\int_{-\infty}^rp_r(x)dx
Fη(s)=P(η<s)=∫−∞sps(x)dx=P(ξ<r)=∫−∞rpr(x)dx
这个公式很好理解吧,s就是上面例子中的8,r就是上面例子中的4。对上式中的两边求导得到:
p
s
(
s
)
=
[
p
r
(
r
)
⋅
d
r
d
s
]
r
=
τ
−
1
(
s
)
(3-9)
p_{s}(s)=\left[p_{r}(r) \cdot \frac{\mathrm{d} r}{\mathrm{~d} s}\right]_{r=\tau^{-1}(s)} \tag{3-9}
ps(s)=[pr(r)⋅ dsdr]r=τ−1(s)(3-9)
若要使变换后的图像灰度
s
s
s 为均匀分布,即有
p
s
(
s
)
=
1
,
p_{s}(s)=1,
ps(s)=1, 代人
(
3
−
9
)
(3-9)
(3−9) 式可得
d
s
=
\mathrm{d} s=
ds=
p
r
(
r
)
d
r
,
p_{r}(r) \mathrm{d} r,
pr(r)dr, 对其两边积分可得到变换函数
T
(
r
)
T(r)
T(r) 为
T
(
r
)
=
s
=
∫
0
r
p
r
(
ω
)
d
ω
T(r)=s=\int_{0}^{r} p_{r}(\omega) \mathrm{d} \omega
T(r)=s=∫0rpr(ω)dω
最后再解释下书上的一个表格:
- k表示的是序号,没啥大作用
- r k r_k rk表示的是原来的灰度级
- n k n_k nk表示的是等于这个灰度级的个数有几个
- p r ( r k ) p_r(r_k) pr(rk)表示的是这个灰度级出现的频率,就是 n k n_k nk除以总数了
- s k = T ( r k ) s_k=T(r_k) sk=T(rk)简单理解为累积分布函数
- 将得到的 s k s_k sk映射为原来的灰度范围
- 表示从哪个灰度级变换后,得到哪个灰度级
- 表示变换后的灰度级在全部灰度级中,出现的概率,看到其中有的为0,说明那个灰度级没有出现过。