《数字图像处理(第三版)》 第三章 数字图像处理 笔记4 (直方图处理 - 直方图匹配)

第 3 章 灰度变换与空间滤波

3.3 直方图处理

3.3.2 直方图匹配(规定化)

直方图均衡能自动地确定变换函数,该函数寻求产生有均匀直方图的输出图像,需要自动增强时,这是一个好方法。

但是在某些情况下,采用均匀直方图的基本增强并不是最好的方法。有时我们希望处理后的图像具有规定的直方图形状可能更有用,这种用于产生处理后有特殊直方图的方法称为 直方图匹配直方图规定化

设连续灰度 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) 是我们希望输出图像所具有的指定概率密度函数。

s s s 是一个具有如下特性的随机变量:

s = T ( r ) = ( L − 1 ) ∫ 0 r p r ( ω )   d ω ( 1 ) s = T(r) = (L-1) \int_0^r {p_r(\omega)} \, {\rm d} \omega \qquad (1) s=T(r)=(L1)0rpr(ω)dω(1)

s s s 是通过直方图均衡算法映射出的输出图像中的灰度级。式中, ω \omega ω 为积分假变量。

接着定义一个具有如下特性的随机变量 z z z

G ( z ) = ( L − 1 ) ∫ 0 z p z ( t )   d t = s ( 2 ) G(z) = (L-1) \int_0^z {p_z(t)} \, {\rm d} t = s \qquad (2) G(z)=(L1)0zpz(t)dt=s(2)

z z z 是通过直方图匹配算法映射出的输出图像中的灰度级。式中, t t t 为积分假变量。由这两个等式可得 G ( z ) = T ( r ) G(z) = T(r) G(z)=T(r) ,因此 z z z 必须满足下列条件:

z = G − 1 [ T ( r ) ] = G − 1 ( s ) ( 3 ) z = G^{-1}[T(r)] = G^{-1}(s) \qquad (3) z=G1[T(r)]=G1(s)(3)

总结一下,可通过下列步骤,由一幅给定图像得到一幅其灰度级具有指定概率密度函数的图像:

  1. 由输入图像得到 p r ( r ) p_r(r) pr(r) ,并由式 (1) 求得 s s s 的值。
  2. 使用式 (2) 中指定的 PDF 求得变换函数 G ( z ) G(z) G(z)
  3. 求得反变换函数 z = G − 1 ( s ) z = G^{-1}(s) z=G1(s);因为 z z z 是由 s s s 得到的,所以该图像是 s s s z z z 的映射,而后者正是我们期望的值。
  4. 首先用式 (1) 对输入图像进行均衡得到输出图像;该图像的像素值是 s s s 值。对均衡后的图像中具有 s s s 值得每个图像执行反映射 z = G − 1 ( s ) z = G^{-1}(s) z=G1(s),得到输出图像中的相应像素。当所有像素都处理完后,输出图像 PDF 将等于指定的 PDF。

在实践中,常见的困难是寻找 T ( r ) T(r) T(r) G − 1 G^{-1} G1 的有意义表达式。所幸的是,在处理离散量时,问题可大大简化。


离散形式

式 (1) 的离散形式是直方图均衡变换,即:

s k = T ( r k ) = ( L − 1 ) ∑ j = 0 k p r ( r j ) = L − 1 M N ∑ j = 0 k n j ,   k = 0 , 1 , 2 , ⋯   , L − 1 ( 4 ) s_k = T(r_k) = (L-1)\sum_{j=0}^k{p_r(r_j)} = \frac{L-1}{MN}{\sum_{j=0}^k{n_j}}, \, k=0, 1, 2, \cdots, L-1 \qquad (4) sk=T(rk)=(L1)j=0kpr(rj)=MNL1j=0knj,k=0,1,2,,L1(4)

式中 M N MN MN 是图像的像素总数, n j n_j nj 是具有灰度值 r j r_j rj 的像素值, L L L 是图像中可能的灰度级数。类似地,给出一个规定的 s k s_k sk 值,式 (2) 的离散形式涉及计算变换函数

G ( z q ) = ( L − 1 ) ∑ j = 0 q p z z i ( 5 ) G(z_q) = (L-1)\sum_{j=0}^q{p_z{z_i}} \qquad (5) G(zq)=(L1)j=0qpzzi(5)

对一个 q q q 值,有

G ( z q ) = s k ( 6 ) G(z_q) = s_k \qquad (6) G(zq)=sk(6)

式中, p z ( z i ) p_z(z_i) pz(zi) 是规定直方图的第 i i i 个值。与前面一样,用反变换找到期望的值 z q z_q zq

z q = G − 1 ( s k ) ( 7 ) z_q = G^{-1}(s_k) \qquad (7) zq=G1(sk)(7)

可以总结 直方图规定化 过程如下:

  1. 计算给定图像的直方图 p r ( r ) p_r(r) pr(r) ,并用它寻找式 (4) 的直方图均衡变换。把 s k s_k sk 四舍五入为范围 [ 0 , L − 1 ] [0, L-1] [0,L1] 内的整数。
  2. 用式 (5) 对 q = 0 , 1 , 2 , ⋯   , L − 1 q = 0, 1, 2, \cdots, L-1 q=0,1,2,,L1 计算变换函数 G G G 的所有值,其中 p z ( z i ) p_z(z_i) pz(zi) 是规定直方图的值。把 G G G 的值四舍五入为范围 [ 0 , L − 1 ] [0, L-1] [0,L1] 内的整数。将 G G G 的值存储在一个表中。
  3. 对每个值 s k s_k sk k = 0 , 1 , 2 , ⋯   , L − 1 k = 0, 1, 2, \cdots, L-1 k=0,1,2,,L1 ,使用步骤 2 存储的 G G G 值寻找相应的 z q z_q zq 值,以使 G ( z q ) G(z_q) G(zq) 最接近 s k s_k sk ,并存储这些从 s s s z z z 的映射。当满足给定 s k s_k sk z q z_q zq 值多于一个时(即映射不唯一时),按惯例选择最小的值
  4. 先对输入图像进行均衡,然后使用步骤 3 找到的映射把该图像中每个均衡后的像素值 s k s_k sk 映射为直方图规定化后的图像中的相应 z q z_q zq 值,形成直方图规定化后的图像。如连续情况那样,均衡输入图像的中间步骤是概念上的。合并两个变换函数 T T T G − 1 G^{-1} G1 可跳过这一步。

对照图像进行步骤说明

在这里插入图片描述

如上图所示为直方图规定化的示意图。(A) 图为原图像的灰度值的概率密度函数曲线图,通过积分得到其累计分布函数为 (B) 图中的红色曲线;© 图为期望得到的图像的灰度值的概率密度函数曲线图,通过积分得到其累积分布函数为 (B) 图中的黑色曲线;令 s = T ( r ) s = T(r) s=T(r) v = G ( z ) v = G(z) v=G(z),通过令 v k = s j v_k = s_j vk=sj 得到 s s s v v v 的映射关系,从而就能得到原图像中的灰度值 r j r_j rj 与直方图规定化后得到的图像灰度值 z k z_k zk 之间的映射关系。

即:设 G − 1 G^{-1} G1 存在,用下列步骤可由输入图像得到一个由规定概率密度函数的图像:

  1. 求得变换函数 T ( r ) T(r) T(r)
  2. 求得变换函数 G ( z ) G(z) G(z)
  3. 求得反变换函数 G − 1 G^{-1} G1
  4. 对输入图像所有像素应用式 z = G − 1 ( s ) = G − 1 [ T ( r ) ] z = G^{-1}(s) = G^{-1}[T(r)] z=G1(s)=G1[T(r)] 得到输出图像;

以上步骤得到的新图像灰度级具有事先规定的概率密度函数 p z ( z ) p_z(z) pz(z)

数字图像直方图规定化的实现
  1. 对于数字图像,灰度级 r j {r_j} rj s j {s_j} sj z j   ( j = 0 , 1 , 2 , ⋯   , L − 1 ) {z_j} \, (j=0, 1, 2, \cdots, L-1) zj(j=0,1,2,,L1) 的每一个集合为 L × 1 L \times 1 L×1 维的一维阵列;
  2. 所有从 r r r z z z 的映射都是给定像素值和这些阵列间的简单查表过程;
  3. 计算每个 r j r_j rj 对应的 s j = T ( r ) s_j=T(r) sj=T(r) ;计算每个 z j z_j zj 对应的 v j = G ( z ) v_j = G(z) vj=G(z)
  4. 对每一个 s j s_j sj ,寻找最接近的 v k v_k vk 。该 v k v_k vk 对应的 z k z_k zk 就是 r j r_j rj 应映射为的灰度值。

实例

在这里插入图片描述

如图所示是一幅火星表面的探测图,右图为该图像对应的灰度直方图。通过直方图均衡算法得到下图:

在这里插入图片描述

因为直方图均衡算法是自动的,它根据像素值在原图像中的频率将像素值变换到新图像中对应的像素值,所以在这幅原图像中,暗区域对应的低像素值数量较大,对应的占比也较大,所以在直方图均衡转化后像素值到了较高的水平,如图中所示是大于在 170 左右,而直方图均衡算法中,灰度值是递增的,所以变换后的整幅图像的像素值都较高,从而使得变换后的图像偏亮,这样就损失了很多图像信息。

所以,可以看到某些应用用均匀直方图的基本增强并不是最好的方法。

在这里插入图片描述

上图是我们所期望的图像的灰度直方图,可以看到这个折线图与原图像的灰度直方图轮廓相近。

在这里插入图片描述

通过直方图规定化,得到上图所示图像,其直方图如下图所示:

在这里插入图片描述

要强调直方图规定化在大多数时候都是试凑过程,对于任何一个给定的增强任务都必须借助于实际分析。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值