【图像处理】直方图均衡与匹配

2019-12-11  本文已影响0人  W__hisky

灰度直方图

灰度直方图: 图像灰度直方图描述的是图像各个灰度级的统计特性,横坐标表示各级灰度值,纵坐标表示各级灰度值在图像中对应的像素个数。

比如灰度级范围为[0,L-1]的数字图像的灰度直方图可以如下离散函数来表示:

h(r_{k})=n_{k}

其中,rk表示第k级灰度值,nk表示图像中灰度为rk的像素个数,k=0,1,...,L-1。


归一化灰度直方图

归一化灰度直方图:横坐标表示各级灰度值,纵坐标表示各级灰度值在图像中出现的概率统计。归一化直方图的纵坐标分量之和应等于1。

p(r_{k})=n_{k}/MN

其中,rk表示第k级灰度值,nk表示图像中灰度为rk的像素个数,M与N表示图像的行和列,p(rk)表示灰度级rk在图像中出现的概率值,k=0,1,...,L-1。


累积直方图

累计直方图:代表图像组成成分在灰度级的累计概率分布情况,每一个概率值代表小于等于此灰度值的概率。

c(r_{k})=\sum_{i=0}^{k}n_{i}/MN=\sum_{i=0}^{k}p(r_{i})

其中,rk表示第k级灰度值,nk表示图像中灰度为rk的像素个数,M与N表示图像的行和列,p(rk)表示灰度级rk在图像中出现的概率值,c(rk)表示累积值,k=0,1,...,L-1。

从上图可以看出,在暗图像中,灰度直方图的分量集中在灰度级的低端;在亮图像中,灰度直方图的分量集中在灰度级的高端;低对比图图像具有较窄的灰度直方图;高对比度图像中灰度直方图的分量覆盖很宽的灰度级范围,且像素的分布没有太不均匀,只有少量垂线比其它高许多。


直方图均衡

直方图均衡:是将当前的灰度分布通过一个变换函数,变换为范围更宽、灰度分布更均匀的图像,也就是将原图像的直方图修改为在整个灰度区间内大致均匀分布,因此扩大了图像的动态范围,增强了图像的对比度。

直方图均衡化的步骤:

s_{k}=T(r_{k})=(L-1)c(r_{k})=(L-1)\sum_{i=0}^{k}p(r_{i})=\frac{(L-1)}{MN}\sum_{i=0}^{k}n_{i}

其中,rk表示第k级灰度值,nk表示图像中灰度为rk的像素个数,M与N表示图像的行和列,p(rk)表示灰度级rk在图像中出现的概率值,c(rk)表示累积值,k=0,1,...,L-1,sk表示输出图像的灰度级,(L-1)表示图像的最大灰度级比如255。

示例

已知一幅大小为64×64像素的3位图像的灰度分布以及归一化灰度直方图值如下表所示,求均衡后的归一化灰度直方图?

rk nk p(rk)
r0 790 0.19
r1 1023 0.25
r2 850 0.21
r3 656 0.16
r4 329 0.08
r5 245 0.06
r6 122 0.03
r7 81 0.02

由于该图像是3位图像,所以L=23=8,直接运用直方图均衡化公式,可得:
s_{0}=T(r_{0})=(8-1)\sum_{i=0}^{0}p(r_{i})=7p(r_{0})=1.33
s_{1}=T(r_{1})=(8-1)\sum_{i=0}^{1}p(r_{i})=7[p(r_{0})+p(r_{1})]=3.08
s_{2}=T(r_{2})=(8-1)\sum_{i=0}^{2}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})]=4.55
s_{3}=T(r_{3})=(8-1)\sum_{i=0}^{3}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})+p(r_{3})]=5.67
s_{4}=T(r_{4})=(8-1)\sum_{i=0}^{4}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})+p(r_{3})+p(r_{4})]=6.23
s_{5}=T(r_{5})=(8-1)\sum_{i=0}^{5}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})+p(r_{3})+p(r_{4})+p(r_{5})]=6.65
s_{6}=T(r_{6})=(8-1)\sum_{i=0}^{6}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})+p(r_{3})+p(r_{4})+p(r_{5})+p(r_{6})]=6.86
s_{7}=T(r_{7})=(8-1)\sum_{i=0}^{7}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})+p(r_{3})+p(r_{4})+p(r_{5})+7p(r_{6})+7p(r_{7})]=7.00
将所求得的s值近似为相近的整数,即:
s_{0}=1.33≈1
s_{1}=3.08≈3
s_{2}=4.55≈5
s_{3}=5.67≈6
s_{4}=6.23≈6
s_{5}=6.65≈7
s_{6}=6.86≈7
s_{7}=7.00≈7
这些整数就是均衡后的直方图的值,可以看到,通过直方图均衡操作,原先的8个灰度级变为了5个灰度级,即:

根据归一化灰度直方图的计算公式,使用MN=64×64=4096去除这些数即可得到均衡后图像的归一化灰度直方图,将其绘制出来如下(图3)所示。

图1.原始图像的归一化灰度直方图;图2.直方图均衡化变换函数;图3.均衡后图像的归一化灰度直方图

直方图匹配

直方图匹配:对于某些应用,采用直方图均衡的基本增强并不是最好的方法,特别地,有时我们希望处理后的图像具有规定的直方图形状,这种用于产生处理后有特殊直方图的方法称为直方图匹配或直方图规定化。

直方图匹配的步骤:

s_{k}=v_{q}

由于:

v_{q}=G(z_{q})

通过反变换可变形得到下式:

z_{q}=G^{-1}(v_{q})=G^{-1}(s_{k})=G^{-1}(T(r_{k}))

像这样,通过均衡化作为中间结果,将得到原始灰度级rk和规定化后灰度级zq之间的映射关系。

但是在实践中,我们并不需要计算G的反变换,因为我们处理的灰度级是整数,比如8位图像的灰度级是0-255,利用vq=G(zq)式计算q=0,1,2,...,L-1时的所有值是一件很简单的事情。实际计算步骤如下:

示例

已知一幅大小为64×64像素的3位图像的灰度分布、归一化灰度直方图值如表1所示,规定的归一化灰度直方图值如表2所示,求规定后的归一化灰度直方图?

表1.原始图像的灰度分布、归一化灰度直方图值

rk nk p(rk)
r0 790 0.19
r1 1023 0.25
r2 850 0.21
r3 656 0.16
r4 329 0.08
r5 245 0.06
r6 122 0.03
r7 81 0.02

表2.规定的归一化灰度直方图值

zq p(zq)
z0 0.00
z1 0.00
z2 0.00
z3 0.15
z4 0.20
z5 0.30
z6 0.30
z7 0.15

首先对原始图像的灰度直方图进行均衡化,再将sk四舍五入为[0,L-1]内的整数,可得:
s_{0}=T(r_{0})=(8-1)\sum_{i=0}^{0}p(r_{i})=7p(r_{0})=1.33≈1
s_{1}=T(r_{1})=(8-1)\sum_{i=0}^{1}p(r_{i})=7[p(r_{0})+p(r_{1})]=3.08≈3
s_{2}=T(r_{2})=(8-1)\sum_{i=0}^{2}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})]=4.55≈5
s_{3}=T(r_{3})=(8-1)\sum_{i=0}^{3}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})+p(r_{3})]=5.67≈6
s_{4}=T(r_{4})=(8-1)\sum_{i=0}^{4}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})+p(r_{3})+p(r_{4})]=6.23≈6
s_{5}=T(r_{5})=(8-1)\sum_{i=0}^{5}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})+p(r_{3})+p(r_{4})+p(r_{5})]=6.65≈7
s_{6}=T(r_{6})=(8-1)\sum_{i=0}^{6}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})+p(r_{3})+p(r_{4})+p(r_{5})+p(r_{6})]=6.86≈7
s_{7}=T(r_{7})=(8-1)\sum_{i=0}^{7}p(r_{i})=7[p(r_{0})+p(r_{1})+p(r_{2})+p(r_{3})+p(r_{4})+p(r_{5})+7p(r_{6})+7p(r_{7})]=7.00≈7

对规定的直方图进行均衡化,并将vq的值四舍五入为[0,L-1]内的整数,可得:
v_{0}=G(r_{0})=(8-1)\sum_{i=0}^{0}p(z_{i})=7p(z_{0})=0.00≈0
v_{1}=G(r_{1})=(8-1)\sum_{i=0}^{1}p(z_{i})=7[p(z_{0})+p(z_{1})]=0.00≈0
v_{2}=G(r_{2})=(8-1)\sum_{i=0}^{2}p(z_{i})=7[p(z_{0})+p(z_{1})+p(z_{2})]=0.00≈0
v_{3}=G(r_{3})=(8-1)\sum_{i=0}^{3}p(z_{i})=7[p(z_{0})+p(z_{1})+p(z_{2})+p(z_{3})]=1.05≈1
v_{4}=G(r_{4})=(8-1)\sum_{i=0}^{4}p(z_{i})=7[p(z_{0})+p(z_{1})+p(z_{2})+p(z_{3})+p(z_{4})]=2.45≈2
v_{5}=G(r_{5})=(8-1)\sum_{i=0}^{5}p(z_{i})=7[p(z_{0})+p(z_{1})+p(z_{2})+p(z_{3})+p(z_{4})+p(z_{5})]=4.55≈5
v_{6}=G(r_{6})=(8-1)\sum_{i=0}^{6}p(z_{i})=7[p(z_{0})+p(z_{1})+p(z_{2})+p(z_{3})+p(z_{4})+p(z_{5})+p(z_{6})]=5.95≈6
v_{7}=G(r_{7})=(8-1)\sum_{i=0}^{7}p(z_{i})=7[p(z_{0})+p(z_{1})+p(z_{2})+p(z_{3})+p(z_{4})+p(z_{5})+7p(z_{6})+7p(z_{7})]=7.00≈7

将如上计算结果统计到表格中:

zq vq=G(zq)
z0 0
z1 0
z2 0
z3 1
z4 2
z5 5
z6 6
z7 7

对于每一个sk值,都寻找相应的vq值,使得vq最接近sk,根据vq与zq的关系,进而可得sk到zq的映射,如下所示:

sk vq=G(zq) zq
1 1 3
3 2 4
5 5 5
6 6 6
7 7 7

将sk映射为zq,实际上就是将原始直方图均衡后的灰度级映射为规定化后的灰度级,详细过程如下:

根据归一化灰度直方图的计算公式,使用MN=64×64=4096去除这些数即可得到规定后图像的归一化灰度直方图,将其绘制出来如下(图d)所示。

图a.原始图像的归一化灰度直方图;图b.规定的直方图;图c.直方图规定化变换函数;图d.规定后图像的归一化灰度直方图

从结果可以看出,如上(图d)所示的最终结果并不完全与规定的直方图匹配,但我们达到了将灰度明确地移向灰度级高端的目的。


直方图均衡与直方图匹配的比较

左图.原始影像;中图.直方图均衡后的结果;右图.直方图匹配后的结果 左图.原始影像的直方图;中图.直方图均衡后图像的直方图;右图.直方图匹配后图像的直方图
上一篇 下一篇

猜你喜欢

热点阅读