直方图均衡化(Histogram Equalization)是数字图像处理领域经典的增强图像对比度(Image Contrast)的方法。

其主要思想是将一副图像的直方图分布变成近似均匀分布,从而增强图像的对比度。

·1 直方图是什么?

我的理解是:直方图是一个自变量为离散的灰度级的函数

函数表达式:h(rk)=nk

自变量rk是第k级灰度值,nk是图像中灰度为rk的像素个数

实际操纵中常常把直方图归一化,即p(rk)=nk/MN

M和N是图像的行数和列数,nk/MN是像素在所有像素所占的比例,这样来看,直方图p(rk)就是灰度级rk在图像中出现的概率的估计,所有分量之和为1。

·2什么是对比度?

我的理解是:对比度就是图像中从黑到白之间可辨的灰度级层数

对比度高,图像的层次感越强,图像越鲜明;对比度越低,图片的层次感越低,图片越单薄。

·3 直方图均衡原理

前提假设:r表示待处理图像每一点的灰度,r取值区间【0,L-1】 L=256 r=0表示黑色,r=L-1表示白色

定义变换函数:s=T®;

附加条件:

①T(r)严格单调递增

②T(r)取值区间【0,L】

表示对图像每个具有r灰度的像素产生一个输出值T®=s.

条件①中要求T(r)严格单调是为了保证T®有反函数

条件②保证反变换时输出灰度范围与输入灰度范围一致

定义反函数 :r=T^(-1)s);

学过概率论应该清楚,描绘变量r、s的基本描绘子是其概率密度函数,这里定义pr(r)和ps(s)分别为r和s的概率密度函数。

如果pr(r)和T(r)都清楚,那么: ps(s)=pr(r)|dr/ds|

即输出灰度值s的概率密度由输入r的概率密度和变换函数决定

构造s=T(r)=(L−1)∫0rp(w)dws=T(r)=(L-1)\int_{0}^{r}p(w)dws=T(r)=(L−1)∫0r​p(w)dw

w是积分假变量公式右边是r的分布函数,当式子中的上限r=L-1时,积分值为1,即s最大值是L-1。

则得到以下关系:
dsdr=dT(r)dr=(L−1)d(∫0rp(w)dw)dr=(L−1)p(r)\frac{ds}{dr} =\frac{dT(r)}{dr} =(L-1)\frac{d(\int_{0}^{r}p(w)dw )}{dr} =(L-1)p(r)drds​=drdT(r)​=(L−1)drd(∫0r​p(w)dw)​=(L−1)p(r)

带入(c)式得到:
p(s)=p(r)∣dsdr∣=p(r)∣1(L−1)p(r)∣=1L−1p(s)=p(r)|\frac{ds}{dr}| =p(r)|\frac{1}{(L-1)p(r)} |=\frac{1}{L-1}p(s)=p(r)∣drds​∣=p(r)∣(L−1)p(r)1​∣=L−11​

这是一个均匀概率密度函数,同时是一个恒等式。不要忘了s是输出灰度值。

这样,我们用式(d)的变换,每输入一个灰度值r就能得到一个概率密度为常数的灰度值s,即实现了灰度值均衡,而且这个变换T(r)与p(r)无关,这个变换函数的离散形式为直方图均衡函数。

·4 直方图均衡效果

直方图均衡化就是将一副图像的灰度直方图由窄变宽,由不规则变得平均,但由于实际的灰度值输入一定是离散的,所以生成的均衡后的直方图也不会完全平均。

不过直方图均衡对于低对比度图片的增强效果还是十分明显的,正如我们开篇的那两张经典花粉图像一样。

完整代码请点击
数字图像处理实验二直方图均衡C语言.zip

或关注公众号:凡古一往
后台回复:直方图均衡 获取

【数字图像处理】直方图均衡浅析

直方图均衡[附C实现代码]相关推荐

  1. 【机器视觉案例】(5) AI视觉,手势调节物体尺寸,附python完整代码

    各位同学好,今天和大家分享一下如何使用opencv+mediapipe完成远程手势调节图片尺寸的案例.先放张图看效果.当拇指和食指竖起时,根据食指间的连线的长度自由缩放图片尺寸.图片的中点始终位于指尖 ...

  2. 【机器视觉案例】(5) AI视觉,远程手势控制虚拟计算器,附python完整代码

    各位同学好,今天和大家分享一下如何使用MediaPipe+Opencv完成虚拟计算器,先放张图看效果.FPS值为29,食指和中指距离小于规定阈值则认为点击按键,为避免重复数字出现,规定每20帧可点击一 ...

  3. 【MediaPipe】(4) AI视觉,远程手势调节电脑音量,附python完整代码

    各位同学好,今天和大家分享一下如何使用MediaPipe完成手势调节电脑音量,先放张图看效果. 注意!! 本节需要用到手部关键点的实时跟踪,我已经在之前的文章中详细写过了,本节会直接使用,有疑问的同学 ...

  4. 【深度学习】(2) 数据加载,前向传播2,附python完整代码

    生成数据集: tf.data.Dataset.from_tensor_slices(tensor变量) 创建一个数据集,其元素是给定张量的切片 生成迭代器: next(iter()) next() 返 ...

  5. 【机器学习入门】(13) 实战:心脏病预测,补充: ROC曲线、精确率--召回率曲线,附python完整代码和数据集

    各位同学好,经过前几章python机器学习的探索,想必大家对各种预测方法也有了一定的认识.今天我们来进行一次实战,心脏病病例预测,本文对一些基础方法就不进行详细解释,有疑问的同学可以看我前几篇机器学习 ...

  6. 【机器学习入门】(10) 特征工程:特征抽取,字典特征抽取、文本特征抽取,附完整python代码

    各位同学好,今天和大家介绍一下python机器学习中的特征工程.在将数据放入模型之前,需要对数据的一些特征进行特征抽取,方法有: (1) 字典特征抽取 DictVectorizer(),(2) 文本特 ...

  7. 【机器学习入门】(8) 线性回归算法:正则化、岭回归、实例应用(房价预测)附python完整代码和数据集

    各位同学好,今天我和大家分享一下python机器学习中线性回归算法的实例应用,并介绍正则化.岭回归方法.在上一篇文章中我介绍了线性回归算法的原理及推导过程:[机器学习](7) 线性回归算法:原理.公式 ...

  8. 【机器学习入门】(5) 决策树算法实战:sklearn实现决策树,实例应用(沉船幸存者预测)附python完整代码及数据集

    各位同学好,今天和大家分享一下python机器学习中的决策树算法,在上一节中我介绍了决策树算法的基本原理,这一节,我将通过实例应用带大家进一步认识这个算法.文末有完整代码和数据集,需要的自取.那我们开 ...

  9. 【机器学习入门】(3) 朴素贝叶斯算法:多项式、高斯、伯努利,实例应用(心脏病预测)附python完整代码及数据集

    各位同学好,今天我和大家分享一下朴素贝叶斯算法中的三大模型.在上一篇文章中,我介绍了朴素贝叶斯算法的原理,并利用多项式模型进行了文本分类预测. 朴素贝叶斯算法 -- 原理,多项式模型文档分类预测,附p ...

最新文章

  1. ​cglib实现动态代理构建带参数的代理实例
  2. lintcode: k Sum 解题报告
  3. Ctrl+shift+f不起作用的原因
  4. iOS再现安全漏洞 “1970变砖”问题仍未解决
  5. Windows常用的网络命令
  6. 针对新手的Java EE7和Maven项目–第8部分
  7. 【深度学习】Batch Normalization详解
  8. 华为发布企业服务云化转型战略 未来5年投资5亿美金建设服务能力(2017年09月06日)
  9. 高级网络营销师黄杰告诉你:怎样建网站?网站建设只需三步
  10. windows mysql 和linux mysql解决乱码问题
  11. 用户画像之ID-Mapping
  12. 记-----租房七大注意事项
  13. 2016年360校招笔试题
  14. Accelerated Proximal Gradient Method/FISTA
  15. TIOBE 2015年6月编程语言排行榜
  16. 语音控制Office,这个功能一定要体验
  17. POS58票据热敏打印机,怎么用ESC/POS命令控制打印
  18. 杭州西湖.湖中音乐喷泉[录象]
  19. 乘坐北京地铁费用计算
  20. 第2章 有限域、向量空间、有限几何和图论 -1

热门文章

  1. maven 集成 CXF
  2. 第四次scrum冲刺
  3. 374. Guess Number Higher or Lower
  4. mysql查询锁表及解锁
  5. Python抓取单个网页中所有的PDF文档
  6. 分布式选举协议:Paxos
  7. Flume Channel
  8. vb杨辉三角代码编写_「二次开发」——基于VB.NET的NX UG软件二次开发基础
  9. (34)VHDL实现T触发器
  10. (61)FPGA译码器实现(function)