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


灰度直方图

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

比如灰度级范围为[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。

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


直方图均衡

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

直方图均衡化的步骤:

  • 计算原图像的灰度直方图p(rk);
  • 计算原图像的累积直方图c(rk);
  • 计算图像新的像素值,如下

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个灰度级,即:

  • 原先的第0灰度级被映射为了第1灰度级,再由上表可知,在均衡后的图像中有790个像素具有该值;
  • 原先的第1灰度级被映射为了第3灰度级,在均衡后的图像中有1023个像素具有该值;
  • 原先的第2灰度级被映射为了第5灰度级,在均衡后的图像中有850个像素具有该值;
  • 原先的第3、4灰度级被映射为了第6灰度级,在均衡后的图像中有(656+329)=985个像素具有该值;
  • 原先的第5、6、7灰度级被映射为了第7灰度级,在均衡后的图像中有(245+122+81)=448个像素具有该值.。

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

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

直方图匹配

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

直方图匹配的步骤:

  • 对原始图像的灰度直方图进行均衡化,得到一个变换函数sk=T(rk),其中sk是均衡化后的灰度级,rk是原始灰度级。
  • 对规定的直方图进行均衡化,得到一个变换函数vq=G(zq),其中vq是均衡化后的灰度级,zq是规定化的灰度级。
  • 上面都是对同一图像的均衡化,其结果应该是相等的。

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时的所有值是一件很简单的事情。实际计算步骤如下:

  • 对原始图像的灰度直方图进行均衡化,将sk四舍五入为[0,L-1]内的整数。
  • 对规定的直方图进行均衡化,将vq的值四舍五入为[0,L-1]内的整数。
  • 对于每一个sk值,都寻找相应的vq值,使得vq最接近sk,进而可得sk到zq的映射。当满足sk的zq值多于一个时,我们选择最小的zq值进行映射。
  • 根据得到的sk与zq的映射关系,即可将原始直方图均衡后的灰度级映射为规定化后的灰度级,形成直方图规定化后的图像。

示例

已知一幅大小为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,实际上就是将原始直方图均衡后的灰度级映射为规定化后的灰度级,详细过程如下:

  • 原始直方图均衡后的第1灰度级被映射为了第3灰度级,在直方图均衡后的图像中有790个像素具有该值;
  • 原始直方图均衡后的第3灰度级被映射为了第4灰度级,在直方图均衡后的图像中有1023个像素具有该值;
  • 原始直方图均衡后的第5灰度级被映射为了第5灰度级,在直方图均衡后的图像中有850个像素具有该值;
  • 原始直方图均衡后的第6灰度级被映射为了第6灰度级,在直方图均衡后的图像中有(656+329)=985个像素具有该值;
  • 原始直方图均衡后的第7灰度级被映射为了第7灰度级,在直方图均衡后的图像中有(245+122+81)=448个像素具有该值;

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

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

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


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

左图.原始影像;中图.直方图均衡后的结果;右图.直方图匹配后的结果
左图.原始影像的直方图;中图.直方图均衡后图像的直方图;右图.直方图匹配后图像的直方图
  • 由于原始影像的直方图中有大量像素灰度接近0,直接进行直方图均衡时,其结果是把非常窄的暗像素区间映射到输出图像灰度级的高端。
  • 由于原始影像的直方图中有大量像素灰度接近0,所以可以修改原始图像的直方图,使其不再有这一属性。即采用直方图匹配的方法来改善原始影像,人为规定一个直方图,该直方图保持了原有直方图的基本形状,但在图像灰度暗区的灰度值有更平滑的过度。
  • 比较以上结果可以看出,对于该问题,直方图匹配的效果比直方图均衡要好。应该注意,原始直方图的细小改变会使图像的外观得到显著改进。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354