【OpenCV基础】第二十一课:直方图均衡化

1.图像直方图

假设有图像数据 8 × 8 8\times 8 8×8,像素值范围0~14共15个灰度等级:

统计得到各个等级出现次数及直方图:

2.直方图均衡化

直方图均衡化(Histogram Equalization)是一种增强图像对比度的方法。其主要思想是将一副图像的直方图分布变成近似均匀分布,从而增强图像的对比度。均衡化前后的图像直方图:

举例说明下直方图均衡化的过程,假设现在有一个8位的 8 × 8 8\times 8 8×8灰度图像:

该灰度图像的灰度值出现次数如下表所示,为了简化表格,出现次数为0的值已经被省略:

累积分布函数(cdf)如下所示,与上一表格类似,为了简化,累积分布函数值为0的灰度值已经被省略:

如表格所示,灰度值最小值为52,最大值为154。通常,直方图均衡化算式如下:

h ( v ) = r o u n d ( c d f ( v ) − c d f m i n c d f m a x − c d f m i n × ( L − 1 ) ) h(v)=round \left( \frac{cdf(v) - cdf_{min}}{cdf_{max}-cdf_{min}} \times (L-1) \right) h(v)=round(cdfmaxcdfmincdf(v)cdfmin×(L1))

累积分布函数最小值 c d f m i n cdf_{min} cdfmin在本例中为1,最大值 c d f m a x cdf_{max} cdfmax在本例中为64,而 L L L则是灰度级数(如本例中,图像为8位深度,则灰度级数共有 2 8 = 256 2^8=256 28=256级数,这也是最常见的灰度级数)。则对于本例的直方图均衡化算式为:

h ( v ) = r o u n d ( c d f ( v ) − 1 63 × 255 ) h(v)=round \left( \frac{cdf(v)-1}{63} \times 255 \right) h(v)=round(63cdf(v)1×255)

例如,灰度为78的像素的累积分布函数为46,均衡化后,灰度值变化为:

h ( 78 ) = r o u n d ( 46 − 1 63 × 255 ) = r o u n d ( 0.714286 × 255 ) = 182 h(78)=round \left( \frac{46-1}{63} \times 255 \right) = round (0.714286 \times 255)=182 h(78)=round(63461×255)=round(0.714286×255)=182

直方图均衡化后,图像的灰度值变化如下表所示:

全尺寸图像效果:

3.API

void equalizeHist( InputArray src, OutputArray dst );

⚠️输入图像必须是8位的单通道图像。

4.代码地址

  1. 直方图均衡化

5.参考资料

  1. 直方图均衡化(wiki百科)

想要获取最新文章推送或者私聊谈人生,请关注我的个人微信公众号:⬇️x-jeff的AI工坊⬇️

个人博客网站:https://shichaoxin.com

GitHub:https://github.com/x-jeff


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值