直方图处理
- 直方图上多种空间域处理技术的基础。
- 灰度级为 [ 0 , L − 1 ] [0,L-1] [0,L−1]范围的数字图像的直方图是离散函数 h ( r k ) = n k h(r_k) = n_k h(rk)=nk,这里 r k r_k rk是第 k k k级灰度, n k n_k nk是图像中灰度级为 r k r_k rk的像素个数。经常以图像中像素的总数(用 n n n表示)来除它的每一个值得到归一化的直方图。因此,一个归一化的直方图由 p ( r k ) = n k / n p(r_k) = n_k / n p(rk)=nk/n给出,这里 k = 0 , 1 , . . . , L − 1 k = 0,1,...,L-1 k=0,1,...,L−1。简单的说, p ( r k ) p(r_k) p(rk)给出了灰度级为 r k r_k rk发生的概率估计值。
直方图均衡化
- 直方图均衡化的目的:寻找变换函数,该函数产生有均匀直方图的输出图像,也就是的到一幅灰度级丰富且动态范围大的图像。
- 该函数仅仅依靠输入图像中的信息就可自动达到这一效果。
- 直方图均衡化的关键:寻找变换函数,该函数产生有均匀直方图的输出图像。
直方图均衡化的原理
连续情况
- 考虑连续函数并且让变量 r r r代表待增强图像的灰度级。假设 r r r被归一化到区间 [ 0 , 1 ] [0,1] [0,1],且 r = 0 r = 0 r=0表示黑色及 r = 1 r = 1 r=1表示白色。
对于任一个满足上述条件的
r
r
r,我们将注意力集中在变换形式上:
s
=
T
(
r
)
,
0
⩽
r
⩽
1
s = T(r), 0\leqslant r \leqslant 1
s=T(r),0⩽r⩽1
假设变换函数
T
(
r
)
T(r)
T(r)满足以下条件:
(a)
T
(
r
)
T(r)
T(r)在区间
0
⩽
r
⩽
1
0 \leqslant r \leqslant 1
0⩽r⩽1中为单值且单调递增
(b) 当
0
⩽
r
⩽
1
0 \leqslant r \leqslant 1
0⩽r⩽1时,
0
⩽
T
(
r
)
⩽
1
0 \leqslant T(r) \leqslant 1
0⩽T(r)⩽1
∫
r
1
r
1
+
Δ
r
P
r
(
r
)
d
r
\int_{r_1}^{r_1 + \Delta r}P_r(r)dr
∫r1r1+ΔrPr(r)dr — 代表灰度级在
r
1
r_1
r1到
r
1
+
Δ
r
r_1 + \Delta r
r1+Δr范围内的概率。
离散情况
栗子?:
图像的直方图并不像连续图像那样,得到完全均匀的情况。因为我们处理的是数字图像,是一些离散级的量。
直方图匹配
在某些情况下,直方图均衡并不一定能够得到一个比较满意的结果。
有非常多的像素是0,后面累积的时候都会加上这个个数。
连续情况
让我们回到连续灰度级 r r r和 z z z(看作连续随机变量),令 P r ( r ) P_r(r) Pr(r)和 P z ( z ) P_z(z) Pz(z)为它们对应的连续概率密度函数。在这里, r r r和 z z z分别代表输入和输出(已处理)图像的灰度级。从输入图像估计 P r ( r ) P_r(r) Pr(r),而 P z ( z ) P_z(z) Pz(z)为希望输出图像具有的规定概率密度函数。
- r j r_j rj被映射到 z k z_k zk
- 对 P r ( r ) P_r(r) Pr(r)使用直方图均衡: S j = ∫ 0 r j P r ( r ) d r S_j = \int_{0}^{r_j}P_r(r)dr Sj=∫0rjPr(r)dr (反映 r r r取值在 [ 0 , r j ] [0,r_j] [0,rj]的概率)。
- 对 P z ( z ) P_z(z) Pz(z)使用直方图均衡: V k = ∫ 0 z k P z ( z ) d z V_k = \int_{0}^{z_k}P_z(z)dz Vk=∫0zkPz(z)dz (反映 z z z取值在 [ 0 , z k ] [0,z_k] [0,zk]的概率)。
- S j = V k S_j = V_k Sj=Vk
把上述的步骤整理一下
离散情况(数字图像直方图规定)
栗子?:
第一步
第二步
与期望的直方图有一定的不同,因为是离散的数值在近似的时候存在一定的偏差。
直方图规定化在大多数时候都是试凑过程。有时可能会遇到这样的情况,即定义“平均”直方图的外观,并把它用做规定化的直方图。在这种情况下,直方图规定化就变成了直方图均衡。总的来说,并没有规定化直方图的规定,对于任何一个给定的增强任务都必须借助于实际分析。
应用直方图进行局部增强
- 有时对图像小区域细节的局部增强也可以使用直方图处理。
- 局部增强的解决方法就是在图像中的每一个像素的邻域中,根据灰度级分布(或其他特性)设变换函数。
- 直方图处理技术很容易适应局部增强,该过程定义一个方形或矩形的邻域并把该区域的中心从一像素移至另一像素。在每一个位置的邻域中该点的直方图都要被计算,并且得到的不是直方图均衡化就是规定化变换函数。这个函数最终被用来映射邻域中心像素的灰度。
栗子?:
相比较全局均衡或者规定化只需要计算一个灰度变化函数,局部增强计算量大大增加。如果图像的大小是 300 × 300 300 \times 300 300×300,那么就要计算90000个灰度变化函数。
在图像增强中使用直方图统计学
- 我们也可以使用直接从直方图获得的统计参数。
- 令 r r r表示在区间 [ 0 , L − 1 ] [0,L-1] [0,L−1]上代表离散灰度的离散随机变量,并且令 p ( r i ) p(r_i) p(ri)代表对应于 r r r的第 i i i个值的归一化直方图分量。可以把 p ( r i ) p(r_i) p(ri)看座灰度级 r i r_i ri出现的概率估计值。
- r r r的平均值为 m = ∑ i = 0 L − 1 r i p ( r i ) m = \sum_{i=0}^{L-1}r_ip(r_i) m=∑i=0L−1rip(ri)。
- r r r的方差(二阶矩)为: μ 2 ( r ) = ∑ i = 0 L − 1 ( r i − m ) 2 p ( r i ) = σ 2 ( r ) \mu _2(r) = \sum_{i=0}^{L-1}(r_i-m)^2p(r_i) = \sigma ^2(r) μ2(r)=∑i=0L−1(ri−m)2p(ri)=σ2(r)
局部平均值和方差
令
(
x
,
y
)
(x,y)
(x,y)为某一图像中像素的坐标,令
S
x
y
S_{xy}
Sxy表示一确定大小的邻域(子图像),其中心在
(
x
,
y
)
(x,y)
(x,y)。在
S
x
y
S_{xy}
Sxy像素的平均值
m
S
x
y
m_{S_{xy}}
mSxy和灰度级方差下式计算:
- m S x y = ∑ i = 0 L − 1 r i p S x y ( r i ) m_{S_{xy}} = \sum_{i=0}^{L-1}r_ip_{S_{xy}}(r_i) mSxy=∑i=0L−1ripSxy(ri)
- σ S x y 2 = ∑ i = 0 L − 1 ( r i − m S x y ) 2 p S x y ( r i ) \sigma ^2_{S_{xy}}= \sum_{i=0}^{L-1}(r_i-m_{S_{xy}})^2p_{S_{xy}}(r_i) σSxy2=∑i=0L−1(ri−mSxy)2pSxy(ri)
- 局部平均值是对邻域 S x y S_{xy} Sxy中对平均灰度值的度量,方差(或标准差)是邻域中对比度的度量。在图像处理中使用局部平均值和方差的一个重要特点是提供了开发简单且功能强大的增强技术的灵活性,这种技术基于可预测的且与图像外观相近的统计度量。
栗子?: