听说:单反穷三代,摄影毁一生。

本节目录

3.1 直方图均衡

3.2 直方图匹配(规定化)

3.3 局部直方图处理

3.4 图像增强中使用直方图

真是感谢雷神,举例子还是以灰度图为主,减负了不少。是因为图像识别的萌芽的年代彩色图片还没有流行吗?

不想抄书,但是对直方图的定义还是直接copy过来。

什么是直方图?

灰度级范围

的数字直方图是离散函数
,其中
是第
极灰度值,
是图像中灰度为
的像素个数。在实践中,经常用乘机
表示的图像像素的总数除以每个分量的个数来归一化直方图(M和N代表一张图的行和列)。因此,归一化的直方图由
给出,其中
。所以归一化后的直方图所有分量和应该为1.

总结来说,直方图可以表示特定灰度值的像素个数,归一化后的直方图表示特定灰度值在一张图中出现概率

3.1 直方图均衡

之所以我们有了教材还需要老师或者博客,我觉得很大的原因是教材为了权威性失去了灵活性。为什么不能让我们带着问题来读?由浅及深呢?我尝试把这一小章反过来写一下。

在了解了什么直方图后,我们先不去着急了解直方图均衡的概念,我们先想:为什么要引入直方图均衡?它能解决我们什么问题?

直接上图,先:

左列为原图;中间一列为直方图均衡后;右列为均衡后的直方图

很显然,直方图均衡可以做到对整体较暗、较亮等对比度低的图片做到全局的对比度增强。

这么厉害,那么它是怎么做到的呢?

如果想到这,就需要了解一下,一张图片如果整体较暗或者较亮的图有什么特征(问题),这样才能对症下药。

经过一系列的化验和仪器扫描,我们发现这些图的直方图有异常:过于集中

从上到下依次为:暗图、亮图、地对比度图和高对比度图

看到这个图,心中就有数了。病症是一张图中的相似灰度等级的像素太过集中。集中在灰度低的地方征途图片就偏暗、高的地方图片就偏亮、集中在中间一处图片就偏灰辨识不清,只有把尽可能所有的像素的灰度值均匀分布在整个灰度级,这样才能得到一张对比度高(清晰)的图片,资源才不会浪费嘛。

知道了问题,就好下药了。抽象的来说,很简单,我要一门技术,可以把一张直方图集中的图片转成分散的。

这门技术就叫做直方图均衡。均衡的意思也很明显,不要搞特殊,雨露均沾,保持生物多样性才是王道。

我们知道了直方图均衡的含义以及宏观上的逻辑是通的。作为专业人士,就该考虑了。如何实现直方图均衡这门技术呢?

科研的法宝:大胆假设,小心求证。我们先把其中一个转换过程放在一块。

如果我们处理后图可以反向得到前图就好了,为什么?因为后面这种转换我们之前有见过啊。还记得上一章讲的对数变化和幂变换不?他们不都是可以把一小段密集输入映射到一大段宽频的输出上吗?

那么,对应这个直方图。抽象一下,如果我们有能找到一个这样的函数,可以做这种变换就好了。直观一点,还是上图:

3bit(8个灰度级)的直方图示例。左侧为原图、中间为转换函数、右侧为转换后

我们设黑图的直方图为上图的

,希望得到的图片的直方图是上图的
,那么我们只要经过转换函数
就好了。即变量
的经过函数
的变换:

完美,我们已经把一个通用的Question变成了一个专业的Puzzle。这个问题就转变成了怎么找到这个转换函数

,或者哪怕先缩小范围,找到它的一些特征也行。
  • 定性分析:

我们先来反推这个T的一些特性:

  1. 首先,限于计算机的存储格式,我们要求输出的灰度等级范围一定要跟输入的等级范围一致。只有在这个范围内做均衡才有意义。这就要求:

规则1:

时,

2. 其次,要做到尽可能的信息不丢失不反转,也便于我们做

的反变换。这就要求

规则2:

在区间
上是严格的单调递增函数。

注:单调好理解,为什么要递增呢?是为了保证输入中原本比

亮的点在转换后要一定要比
亮,如果黑白颠倒了,那还不如不变换呢。

所以大体上

应该是下面的一个函数:

定量分析:

如果要定量分析,我们需要引入一些概率论的内容。

我们想,如果要定量

,肯定要先把
先描绘出来。我们介绍直方图的归一化的时候,就知道了“归一化后的直方图表示特定灰度值在一张图中

出现概率。”,这不就是一个概率密度函数吗?

一幅图像的灰度级可以看成区间

内的随机变量。随机变量的基本描绘是其概率密度函数(PDF)。我们令
分别看成
的概率密度函数。我们由概率论的知识(别问为什么,反正是对的)就可以得到
的关系:
----公式一

由此可以得到图像处理中的特别重要的变换函数如下:

----变换公式

这是啥?

这个不是 输入
的积分吗?它代表的意义不就是从0到
上的密度函数跟x轴围成的面积吗?这,这不就是

r的累积分布函数吗?

这就是说,我们只要确认了

,那么我们都不用算,
就已经定下来了,
的累积分布函数自然会把
转换成我们想要的
。神奇。

好了,公式就这么出来了!我们来验证一下:

  1. 公式右边是随机变量

    的累积分布函数(CDF)。因为PDF总为正,所以对它的积分就是该函数下面的面积,它肯定是一个单调递增函数。

    满足规则二。

  2. 对于一整张图的灰度密度和为1,即PDF跟X轴围成的面积必须是1。这就代表
    的分布范围是
    .

    满足规则一。

完美。

拓展一下:

我们还可以对转换函数对输入

求导:

把求导结果代入导公式一:

这是啥?雷神说这是一个均匀概率密度函数。

把图画出来

这个真神奇,任意一个随机的密度函数

经过变换公式这么一倒腾,而且这个公式只取决于
,都变成了均匀分布PDF了。均匀分布的特征不就是我们在宏观直方图上期望的尽可能的分布在各个灰度值上吗?

真神奇,因为数字图像中的

的表达是:

让我们记住这个对应的离散的变换公式:

灰度值取值范围_第三章 灰度变换与空间滤波-(三)直方图之直方图均衡相关推荐

  1. 数字图像识别笔记(第三章-灰度变换与空间滤波)

    title: 数字图像识别笔记(第三章-灰度变换与空间滤波(1)) categories: 数字图像识别 tags: 数字图像识别 date: 2020/10/1 20:33 mathjax: tru ...

  2. 数字图像处理 第三章 灰度变换与空间滤波

    空间域处理主要分为灰度变换和空间滤波两类.灰度变换对图像的单个像素进行操作,主要以对比度和阈值处理为目的.空间滤波涉及改善性能的操作,如通过图像中每个像素的领域处理来锐化图像. 1.背景知识 空间域增 ...

  3. 冈萨雷斯数字图像处理第三章灰度变换与空间滤波算法 c++

    3.2一些基本的灰度变换函数 具体有 1.图像反转函数 2.对数变换函数 3.幂次(伽马)变换函数 4.分段线性变换函数(对比拉伸.灰度切割.位图切割) 3.2.1图像反转函数 1.数学原理 灰度级范 ...

  4. 空间滤波_第三章 灰度变换与空间滤波-(六)锐化空间滤波器之拉普拉斯算子...

    我们知道的东西是有限的,我们不知道的东西则是无穷的.----拉普拉斯 普拉斯算子 既然我们知道了二阶微分是对图像锐化处理的一大利器,我们本节就来讨论二阶微分在数字图像领域的实际应用. 拉普拉斯在就为我 ...

  5. 空间滤波_第三章 灰度变换与空间滤波-(六)锐化空间滤波器之非锐化掩蔽

    知识使人自由,印刷术使知识自由. 按照书中的顺序,我们插入一章非微分模式下的锐化的方法,非锐化掩蔽. 这种方法在印刷术和出版界已经用了好多年了,具体的过程: 模糊原图像 从原图像中减去模糊图像(产生的 ...

  6. Session存值取值问题及取不到值的问题

    Session存值取值问题及取不到值的问题 一.存值(相当于map) request.getSession().setAttribute("key", value); 二.取值 r ...

  7. Kali Linux 网络扫描秘籍 第三章 端口扫描(三)

    第三章 端口扫描(三) 作者:Justin Hutchens 译者:飞龙 协议:CC BY-NC-SA 4.0 3.13 Dmitry 连接扫描 另一个可以对远程系统执行 TCP 连接扫描的 替代工具 ...

  8. 数字图像处理--冈萨雷斯第4版--第三章 灰度变换

    数字图像处理--冈萨雷斯第4版--第三章 灰度变换 第三章 灰度变换 3.1 背景 3.1.1 灰度变换和空间滤波基础 3.1.2 本章例子说明 3.2 一些基本的灰度变换函数 3.2.1 图像反转 ...

  9. 第三章 ContextCapture 19 空三处理

    第三章 ContextCapture 19 空三处理 前言 之前一直在工作比较忙就没有更新,这次挑选了一组简单的照片用来演示. 一.导入相片 工程建立好后如图所示,我们需要建立一个区块,将照片导入到区 ...

最新文章

  1. linux 下如何升级CMAKE?(安装指定版本cmake)(高版本cmake)(不删除之前的,可以用软连接)
  2. 为什么我的elec352稍微有点崩
  3. 一文搞定深度优先搜索(DFS)与广度优先搜索(BFS)【含完整源码】
  4. 【css3】旋转倒计时
  5. 理解 shared_ptr实现copy-on-write(COW)
  6. xfce 安装文泉驿字体
  7. 移动手机号服务密码重置
  8. Mysql 讲解所有的约束类型
  9. 云查毒:避免恶意程序入侵的正确姿势
  10. 昆仑通态触摸屏保存历史曲线_mcgs历史数据保存到U盘
  11. 定积分的基本性质3 保序性
  12. Java从入门到精通章节练习题——第六章
  13. 户外耳机品牌哪个好、最新的户外耳机品牌排行
  14. Method类的使用
  15. C和C++混合编程(error C2059: syntax error : 'string')
  16. 福布斯发布“亚洲30岁以下杰出青年榜”,中国获奖者近1/4来自AI行业
  17. 空间点到直线距离的一种解法
  18. ClamAv开源杀毒引擎详解
  19. mybatis里的when和otherwise用法
  20. Air780E连接点灯科技-LuatOS

热门文章

  1. SpringBoot之项目启动
  2. 小程序读取几种不同格式json数据(小程序json解析)
  3. 【Python】政府工作报告词云
  4. sqlmap源码入门笔记系列
  5. python标准库之re
  6. pytorch 全局变量_Pytorch如何通过深度学习展现全局
  7. coreldraw x8段落_CorelDRAW X8中文版从入门到精通
  8. spring中使用scala的maven打包配置
  9. Oracle(四):PL/SQL、存储函数、存储过程、触发器
  10. 保险条款精解(二) 丢车——如何将损失降到最低点?