原理部分转载于:直方图均衡化算法原理与实现
bin的理解和直观展示见 part2

part1 直方图均衡化算法原理

我们知道提高图像对比度的变换函数f(x)需要满足以下条件:

  1. f(x)在0<=x<=L−1上单调递增(不要求严格单调递增),其中L表示灰度级(L=256)
  2. f(x)的范围是[0,L−1]

我们知道当图像直方图完全均匀分布的时候,此时图像的熵是最大的(随机变量每个值的概率都相同时,概率最大),图像对比度是最大的。所以,理想情况下,图像经过变换函数f(x)

变换后,直方图能够均匀分布,此时对比度是最大的。

那问题来了?怎样的变换函数具有如此神奇的功能呢?[1]P74中给出了答案。
在图像处理中,有一个重要的函数,能够满足上面的条件:

英文原版中P145中的表述为:

其中px(x)表示概率密度函数,在离散的图像中,表示直方图的每个灰度级的概率(在图像中,灰度级就可以看成是一个随机变量,而直方图就是该随机变量的概率密度函数),由概率论的知识,我们可以知道,变换函数f(x)其实就是连续型随机变量x的分布函数,表示的是函数下方的面积。

分布函数的两个性质:1.单调不减 2.值域为[0,1],我们可以知道f(x)满足条件1和2

有人可能会有这个疑问?图像是离散的,为什么可以用连续的来表示呢?从数学角度来看,离散是连续的一种特例(图像就是一个很好的例子)。

下面我们证明变换后的直方图是均匀的。
由概率论知识,变换后的概率密度:

由变上限函数求导法则可知

反函数的导数等于原函数导数的倒数,所以

所以

看到了吧,变换后的概率密度函数是一个均匀分布,对于图像来说,就是每个灰度级概率都是相等的,达到了我们的目的。
下面我们需要将这个变换函数转换为图像中的表达,图像中,我们可以知道,可以使用求和代替积分,差分代替微分,所以上述的变换函数就是:

其中h(xi)表示直方图中每个灰度级像素的个数, w和 h分别表示图像的宽和高。

参考文献

 《数字图像处理》第3版,冈萨雷斯

点击查看:直方图均衡化的步骤

part2 直方图均衡化算法原理

bin的含义:计算颜色直方图需要将颜色空间划分为若干小的颜色区间,即直方图的bin,通过计算颜色在每个小区间内德像素得到颜色直方图,bin越多,直方图对颜色的分辨率越强,但增加了计算机的负担。
由下面的对比可以很容易理解bin的含义,途中一个柱体就代表一个bin,bin越多,表示越精细。

bin为10

bin为128

直方图均衡化算法原理及bins的理解相关推荐

  1. 限制对比度自适应直方图均衡化算法原理、实现及效果

    一.自适应直方图均衡化(Adaptive histgram equalization/AHE) 1.简述 自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术.和普通的直方图均衡算 ...

  2. 直方图均衡化算法原理详解

    算法 经典算法 下面以一幅3*2像素的简单图片(图C)为例,来说明灰度直方图均衡化的算法. (图C) 图C的直方图: 注意看百分位(Percentile)这一项.一般软件的百分位是 当前色阶的像素数量 ...

  3. 一些常用的直方图均衡化算法

    直方图均衡化(HE) 直方图均衡化是常用的图像增强的方法.通过一种映射改变图像中的灰度值,增加图像灰度值的动态范围从而增加图像的对比度.过度曝光的图像中的灰度值主要集中在高亮度的范围内,而曝光不足的图 ...

  4. 红外图像直方图均衡化算法理解

    1.红外图像直方图均衡化背景与目的 红外相机探测器的输出模式有模拟量和数字量,模拟量输出的需要用ADC转换,因而红外相机输出的数据位数一般都在12位到16位,对应的灰度级基本在2^12~2^16级而人 ...

  5. 图像直方图均衡化算法 python实现

    一. 直方图均衡化: 直方图均衡化是使图像直方图变得平坦的操作.直方图均衡化能够有效地解决图像整体过暗.过亮的问题,增加图像的清晰度. 具体流程如下所示.其中S是总的像素数,Zmax是像素的最大取值( ...

  6. Python实现图像直方图均衡化算法

    title: "Python实现图像直方图均衡化算法" date: 2018-06-12T17:10:48+08:00 tags: [""] categorie ...

  7. openCV中直方图均衡化算法的理解

    直方图均衡化就是调整灰度直方图的分布,即将原图中的灰度值映射为一个新的值.映射的结果直观表现是灰度图的分布变得均匀,从0到255都有分布,不像原图那样集中.图像上的表现就是对比度变大,亮的更亮,暗的更 ...

  8. opencv基础---直方图均衡化(原理equalizeHist)

    直方图均衡化的作用是图像增强. 有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布. 第一个问题.均衡化过程中,必须要保证两个条件:①像素无论怎么映射, ...

  9. 线性变换,分段线性变换,伽马变换,直方图正规化,直方图均衡化,局部自适应直方图均衡化的原理以及python代码

    1.基础概念 1.1 图像灰度直方图 灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数或者占有率.图像的对比度是通过灰度级范围来度量的,而灰度级范围可通过观察灰度直方图得到,灰度 ...

最新文章

  1. js实现返回顶部功能的解决方案
  2. python 魔法函数 __add___PythonI/O进阶学习笔记_2.魔法函数
  3. SAP云平台里Run index.html和Run as SAP Fiori Launchpad的区别
  4. JavaFX 2:如何加载图像
  5. 17-mysql-数据定义语言-ddl
  6. [.Net 4.0]泛型的协变,以及高阶函数对泛型的影响 Part 1
  7. java序列化层数_java序列化详解
  8. 数据库工作笔记016---SqlServer2016_日期处理_ntext和text区别_开启远程连接_查看系统COm组件_Browser服务无法启动_导出数据_字符串前加N
  9. 独立站引流真的那么难吗?
  10. Android学习小Demo(12)TodoList实现ListView的分组实现
  11. 设置phpMyAdmin连接本机已存在数据库
  12. Python Poetry管理包安装速度慢的解决办法
  13. uCharts 图表
  14. 匈牙利命名法为何被淘汰_体育午报:15年魔咒破除!国足淘汰赛终迎一胜
  15. OllyDBG V1.10聆风听雨汉化版
  16. n-gram代码实现源码
  17. 《伟大是熬出来的》冯仑与年轻人闲话人生之三
  18. matlab飞机大战小游戏(第二版)
  19. rtx3080和rtx3080ti性能差距 rtx3080和rtx3080ti 参数对比哪个好
  20. 《火车头采集器采集网页数据》火车头配置规则采集信息文章数据。

热门文章

  1. Fanuc发那科法兰克数控系统采集初探c#
  2. 写轮眼常见的一些问题
  3. linux 批量解压gz文件夹,linux 批量解压gz bz2文件
  4. QT学习之QString的arg方法
  5. 无盘服务器读写盘设置,无盘服务器读写盘设置
  6. opencv 最小二乘法拟合曲线
  7. 概率论与数理统计习题
  8. STI、LOD与WPE概念2:减少或避免WPE/STI效应对IP模块设计的影响
  9. 数字电路基础与Quartus-ll入门
  10. python的arp欺骗_python arp欺骗