直方图匹配(规定化)

直方图匹配

直方图均衡技术,可以自动地确定变换函数,而产生具有均匀直方图的输出图像。但是不同图像出现的问题不尽相同,有时根据图像的某种缺陷,我们需要得到处理后具有特殊直方图的图像。均衡化这样单一的方法显然不能成为万能钥匙。

直方图匹配,又称直方图规定化。与直方图均衡化不同,直方图均衡试图使输出图像具有一个平坦的直方图,而直方图匹配是为了得到一个特定的直方图。


基本原理

直方图规定化的基本思路是:对原图像直方图和目标直方图都做均衡化,变成相同的归一化的均匀直方图。然后以此均匀直方图为媒介,再对原图像做均衡化的逆运算。

设原图像和输出图像的灰度变量分别为 r z,并令 pr(r) pz(z) 表示他们所对应的概率密度函数,分别对 r z作如下变换:

T(r)=(L1)r0pr(w)dwG(z)=(L1)z0pz(w)dw

由于两个式子都为均匀化变换,可得 T(r)=G(z) ,因此 z 满如下条件:
z=G1[T(r)]

在实践中,一个困难是寻找 T(r) G1 的有意义的表达式。在处理离散变量时,问题可以大大简化。下面的方法仅为了得到一个近似的直方图。为方便起见,我们重写公式如下:
sk=T(rk)=(L1)j=0kpr(rj)=L1MNj=0knj,k=0,1,...,L1

其中 MN 是图像的像素总数, nj 是具有灰度值 rj 的像素数, L 是图像中可能的灰度级数。类似地,对目标直方图随机变量的计算变换函数
G(zq)=(L1)i=0qpz(zi)

对一个 q 值,有
zq=G1(sk)

实际操作过程中,我们不需要计算 G 的反变换。因为我们处理的图像灰度级是整数(如8比特图像的灰度级是0到255)。我们可以将G变换存储在一个表中,然后根据给定的 sk 值,查找存储在表中最匹配的 zq 值。

实现过程

  1. 计算原图像的直方图 pr(r) ,并寻找直方图均衡变换,得到 sk 并四舍五入为范围[0,L-1]内的整数。
  2. q=0,1,...,L1 计算变换 G 的所有值,其中pz(zi)是规定直方图的值。把 G 的值四舍五入为范围[0,L-1]内的整数,并存储在一个表中。
  3. 对每个值s0,s1,...,sL1,使用步骤2中存储的 G 值寻找相应的zq值,以使 G(zq) 最接近 sk ,并存储这些 sk zq 的映射。
  4. 对输入图像进行均衡化,然后使用步骤3找到的映射把该图像中的每个均衡后的像素值 sk 映射为直方图规定化后的图像中的相应值 zq ,形成直方图规定化后的图像。

计算例子

设输入为大小为64x64像素的3比特数字图像,其灰度分布、直方图值、均衡化后的值(四舍五入)为:

rk nk pr(rk) sk=7kj=0pr(rj)
r0=0 7900.191
r1=1 10230.253
r2=2 8500.215
r3=3 6560.166
r4=4 3290.086
r5=5 2450.067
r6=6 1220.037
r7=7 810.027

设规定直方图为:

zq pz(zq) G(zq)=7qj=0pz(zj)
r0=0 0.000
r1=1 0.000
r2=2 0.000
r3=3 0.151
r4=4 0.202
r5=5 0.305
r6=6 0.206
r7=7 0.157

将所有的 sk 值映射到相应的 zq 值:

sk zq
1 3
3 4
5 5
6 6
7 7

如图显示了变换过程:
这里写图片描述
虽然图(d)的最终结果并不完全与规定的直方图匹配,但达到了将灰度明确移向灰度级高端的目的。

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值