机器人视觉初级系列(7) - 图像直方图均衡化(续)

在上一篇文章中直接给出图像直方图均衡化的基本思想和实例代码,这一篇文章给自己深入了解直方图均衡化具体的实现数学原理。


直方图均衡化原理

这里写图片描述

这里写图片描述

累积分布函数CDF原理

其中图像直方图均衡化中最常用方法(即opencv里使用的方法)是累积分布函数CDF。在基本图形分析中,CDF可能是最不出名且最不受待见的工具。相对于直方图和KDE,它们没有太多直观上的吸引力,但CDF能够让我们对数据做出定量的描述,这是我们常常需要却又很难从直方图获得的。

连续情况下,非均匀概率密度函数 Pr(r) 经过变换函数 T(r) 转换为均匀概率分布函数 Ps(s) 的情况。其中 r 为变换前的归一化灰度值,0r1 T(r) 为变换函数。 S(r) 为变换后的灰度值,也归一化为 0S1

这里写图片描述

对于 s=T(r) 假定:
(1) 在 0r1 区间内, T(r) 为单调递增函数,且满足 0T(r)1
(2) 变换 r=T1(S) 存在, 0S1 ,也满足类似(1)的条件, 0r1 0T(r)1

条件(1)保证原图中各灰度级在变换后仍保持以黑 \to 白(白 黑)的排列次序,避免整个图像变亮或变暗;
条件(2)保证变换前后在灰度值动态范围内的一致性。反变换也满足这2个条件。

对于连续的函数, Pr(r) Ps(s) 分别是灰度 r s 的概率密度函数,可知:

Ps(s)=Pr(r)drds

直方图均衡化的目的是保证每个灰度级的概率密度相等,即是一个常数:

Ps(s)=1L

L 是均衡化后灰度的变化范围,在这里归一化为1,即:

Ps(s)=1ds=P+r(r)drs=Pr(r)dr

此式表明,当变换函数为原图像密度函数的分布函数时,能达到直方图均衡化目的。

对于离散的情况有:

sk=j=0knjn

看到这里我懵逼了,不要问,千万不要问我。看下面的例子:

设有一副 6464 的图像,8bit灰度图像(图中有8个灰度值),那么这幅图像有4096个像素点,灰度级分布在在 pr(rk)

这里写图片描述

r0=0,n0=790,pr(0)=0.19
r1=1/7,n0=1023,pr(1)=0.25
r2=2/7,n2=850,pr(2)=0.21
r3=3/7,n3=656,pr(3)=0.16
r4=4/7,n4=329,pr(4)=0.08
r5=5/7,n5=245,pr(5)=0.06
r6=6/7,n6=122,pr(6)=0.03
r7=1,n5=81,pr(7)=0.02

ri 灰度级数, ni 灰度级数的像素点总数, pi 非均匀概率密度函数。根据变换函数公式可计算出 sk 如下:

s0=pr(rj)=0.19

s1=pr(rj)=pr(r0)+pr(r1)=0.19+0.25=0.44

同样可得: s2=0.65,s3=0.81,s4=0.89,s5=0.95,s6=0.98,s7=1.00
由于原始图像的灰度只有8级,因此上述各需以1/7为量化单位进行舍入运算,得到:

s0=1/7,s1=3/7,s2=5/7,s3=6/7
s4=6/7,s5=1,s6=1s7=1

这里写图片描述

由此可见,实际上只存在5个灰度级, si 为5个灰度级 Nsi 为与之对应的像素数, Pr(si) 为均衡后累计分布概率:

s0=1/7,Ns0=790,Pr(s0)=0.19
s1=3/7,Ns1=1023,Pr(s1)=0.25
s2=5/7,Ns2=850,Pr(s2)=0.21
s3=6/7,Ns3=985,Pr(s3)=0.24
s4=1,Ns4=448,Pr(s4)=0.11

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值