学习笔记(二)——直方图均衡化和匹配

直方图匹配 一、什么叫直方图匹配:    规定处理后的图像的直方图形状,生成特定的直方图。二、   直方图匹配的意义:    当图像的灰度大部分集中在图像的暗端,直接进行直方图均衡会导致图像移向较高的一侧,从而产生一幅褪色的图像。而直方图匹配则能保留图像直方图的大体形状,使其不会被映射到较高端,从而使图像褪色。三、直方图匹配的原理    考虑归一化后在[0,1]区间内的连续灰度级,令r和z分别表示输入图像与输... 阅读详情

本文的学习是基于冈萨雷斯《数字图像处理第二版》这本专著的对应于书中章节3.3

这一篇文章如题,主要是讲直方图均衡化和匹配的一些基本概念。不涉及很多的技术问题专业数学推导,只是为入门图像处理做一个感性的认识,具体应用请朋友们自己发挥创造,欢迎大家一起来交流。

好了言归正传。

直方图统计的概念很早就已经和我们接触了,今天我们统计的对象是数字图像的像素灰度级,正如上一篇博客中介绍的那样,对图像中的每个灰度级进行投票计数。这里定义几个变量:

OK,从定义就可以得到各个变量之间的关系了:

 

根据我们就可以得到归一化的灰度级直方图了。

在上一篇博客中提到了,直方图的分布与图像的亮度对比度是息息相关的,高对比度的图像直方图分布会覆盖很宽灰度级,而且直方图的分布比较均匀。低对比度的图像直方图分布比较窄,而且集中于灰度级的一侧,上图瞅一眼:


上图是灰度级分布窄的图片


上图是灰度级分布宽的图片

OK 开胃小菜上完,来干货

直方图均衡化

既然直方图的分布对图像有那么直观的影响,能不能开发出一种函数变换让原来不那么均匀的直方图,变得均匀一点呢?答案是肯定的。那就是直方图均衡化。

   把输出图像的灰度级用s表示,变换公式就变成了

s = T(rk)

解释一下:这里的均衡化是像素点到对应的像素点变化如图:


每一点的像素经过T(r),对应的输出就是目标的像素灰度级s。在书中对T(r)进行了如下两个条件的规定

(a)T(r)在区间[0,L-1]上是单值且单调递增的

(b)当0≤r≤L-1时,0≤T(r)≤L-1

对于(a)的解释是,如果原来的灰度级高,那么变换之后输出的灰度级也应该比较高,否则黑白颠倒,图像将不能看了。(b)的限制也比较直接,输出的灰度级不能乱来,太大太小都不行,必须在原来的范围之内,否则显示图片会出错。

把一幅图像的灰度级(r或s)看成是一个随机变量,用Pr(r)和Ps(s)表示灰度级为r和s的概率密度,

然后呢一个非常牛逼闪闪的公式就产生了


其中,w是积分假变量。公式的右边是随机变量r的累积分布函数,因为概率密度函数总是为正,这样函数下方的积分面积就会随着r增大而增大,就满足了(a),当积分积到上限(L-1)时函数下方的面积就成了1,满足条件(b)


其中若知道变换T(r)和Pr(r)则s的概率密度可以用概率论的知识得到。


最后证明出输出级s是在L-1的范围内均匀分布是的具体证明截图如下:



这就证明了利用累积分布函数转换灰度级,输出的灰度级s就在[0,L-1]之间服从均匀分布。

 

最后呢对牛逼的公式进行离散化(求积分换成求和)处理就得到了如下公式



    在这里还要强调一点,由于累积分布函数和输入图像的灰度级相乘,不一定得到一个整数,但是输出的灰度级要求整数,于是我们这里四舍五入取整数灰度级。

    这样呢只要一幅输入一幅图像,不需要任何的条件,我们就可以对它进行直方图均衡化,这是一个可以自动的完成的算法。

    说了这么多,用一个例题来总结一下直方图均衡化的功能。

    假设有一个图像4X4的16个像素点,最大灰度级为7,对应的像素点的值如下:

4

5

6

6

5

4

5

5

6

6

5

5

5

5

5

6

对其进行直方图均衡化。

步骤如下:

1、 统计直方图,

2、 求出对应的概率密度

3、求累积分布函数

4、求出每个灰度级对应的输出灰度级

5、映射到新的图像

输入灰度级

统计直方图

概率密度

累积分布函数

输出灰度级

4

2

0.125

0.125

0.875=1

5

9

0.5625

0.6875

4.8125=5

6

5

0.3125

1

7

最后输出图像为

1

5

7

7

5

1

5

5

7

7

5

5

5

5

5

7

 

直方图匹配

    上面介绍了对一幅输入图像的直方图进行均衡化的过程,这是一个对图像操作自动增强的过程,但是有时候我们并不想要一个均衡化的直方图,而是想要一个我们指定的直方图,这时候就需要另外一种方法来满足我们的需要,这就是直方图的匹配。

   对于直方图匹配的思想书本中介绍了一些算是比较严谨的推导证明过程,但是对于一般的理解来说会比较困难。那么开始一边推导一边解释吧:

   首先定义r 、z分别表示输出图像的灰度级和输出图像的灰度级。

    Pz(z)是指定的要输出灰度级的概率密度,它是已知的。定义s和v是一个中间过渡图像的灰度级。则有直方图均衡化的伟大公式



       为了建立输入和输出的关系,让s = v(关键就是为啥他们要相等呢?)我们回过头来想想改变直方图的本质就知道了。看图



     其实就是把原来的灰度级在新的灰度级坐标轴上面重新排列一下,但是对应的灰度级在哪个地方呢?我们要寻找一个关系来匹配一下,于是呢就联想到了累积分布函数身上来。于是呢我们就得到了求解输出灰度级的一种办法。

    1、先求的出输出想要输出的每个灰度级的累积分布函数ZCDF(由于灰度级是离散的,所以呢求解出来就大大的简单了)

   2、求出输入图像的灰度级的累积分布函数RCDF,这样也很简单吧

   3、用输入图像的累积分布函数RCDF去和目标累积分布函数ZCDF去匹配,这个过程中可能不会有一个百分百的相等,但是我们可以匹配一个最接近的输出灰度级。(哪有完美存在呢?你说是不是)逐个进行之后,就把输入图像的灰度级在目标的坐标轴上排列好了。

   4、最后和直方图均衡化的最后一步一样,逐个像素进行映射

 


博客转自:http://www.cnblogs.com/xujianqing/

直方图匹配定义、步骤及代码实现 本文介绍了直方图匹配的定义、实现步骤及代码实现 阅读详情

相关推荐

数字图像处理均衡化、规定化例题及解题思路

数字图像处理均衡化、规定化例题及解题思路

qq_52155014的博客 1万+

直方图匹配(Histogram Matching)

直方图匹配(Histogram Matching),也被称为直方图规定化(Histogram Specification)或直方图修正(Histogram Equalization),是一种图像处理技术,用于调整图像的直方图,以使其与某个目标直方图相匹配。同时,您可以使用更复杂的方法和工具,如直方图均衡化、自适应直方图均衡化等,来改进图像的亮度和对比度调整效果。直方图匹配的目标是改变图像的像素值分布,从而使其在视觉上更接近目标直方图。:根据累积分布函数的关系,将原始图像的像素值映射到目标直方图的像素值。

qq_51753728的博客 5935

【matlab图像处理】直方图均衡化操作

【路漫漫其修远兮,吾将上下而求索】 今天介绍图像的直方图均衡化操作。本内容参考自《实用MATLAB图像和视频处理》第9章。

learning CV 3万+

【OpenCV】直方图应用:直方图均衡化,直方图匹配,对比直方图

前面介绍了 数字图像灰度直方图,现在来尝试直方图的应用。 直方图均衡化 直方图均衡化(Histogram Equalization)是直方图最典型的应用,是图像点运算的一种。对于一幅输入图像,通过运算产生一幅输出图像,点运算是指输出图像的每个像素点的灰度值由输入像素点决定,即: 直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数过程。

小魏的修行路 7万+

matlab直方图拉伸、均衡化和匹配

问题分析 内容 1:图像增强显示 编写一个灰度拉伸函数,实现功能:将原始图像的灰度值以线性方式拉伸到 0-255 之间。 读取./data/flower.tif 文件,显示原始图像、原始图像的直方图,然后分别采用上述步骤中编写的函数、imadjust 函数以实现图像增强,并显示图像增强后的效果以及相应的图像直方图。 读取./data/mars_moon.tif 文件,显示原始图像、原始图像的直方图,阅读imadjust 函数,理解 gamma 参数的意义,然后设置不同的 gamma 值进行图像增

白发空垂三千丈 4975

OpenCV 直方图概念,直方图均衡化原理详解

直方图(Histogram)是一种图表,用于显示数据集的分布情况。它通过将数据范围划分为若干个连续的区间(称为“桶”或“箱”—bins),然后统计每个区间内的数据点数量,以条形图的形式展示这些数量。横轴表示数据的取值范围,纵轴表示每个区间内数据点的数量或频率。

weixin_46999174的博客 2169

c++ opencv 图像处理:直方图处理(直方图均衡化,直方图匹配(规定化))

文章目录前言一、直方图(histogram)二、直方图处理1.直方图均衡化2.直方图匹配(规定化)3.局部直方图处理4.直方图统计量增强图像三、opencv函数总结 前言 数字图像处理c++ opencv(VS2019 opencv4.53)持续更新 一、直方图(histogram) 非归一化直方图: h(rk)=nkh(r_k)=n_k h(rk​)=nk​ 其中rkr_krk​为图像像素灰度值,比如常见的0-255,nkn_knk​为图像中某一灰度级的像素个数。 归一化直方图: p(rk)=h(r.

刘燚的博客 2万+

【matlab图像处理】直方图均衡化

【路漫漫其修远兮,吾将上下而求索】 今天介绍图像的直方图均衡化。本内容参考自《实用MATLAB图像和视频处理》第9章。

learning CV 5568

直方图均衡化算法、直方图匹配算法 C++ 代码

这两天一直在研究云光匀色算法才了解到了直方图匹配算法,想要了解这个算法又要先了解直方图均衡化算法,通过网上查找了很多资料,没有现成C++代码,经过仔细思考和实验后大概复现了该算法。特此记录,以备查阅 参考链接如下: 1、匀光匀色–直方图匹配算法实现与应用 2、基于OpenCV的直方图匹配 3、直方图均衡化的数学原理先介绍一下基本概念 原始数据 底图影像 直方图匹配匀光匀色效果从上图可以看出原始影像与模板颜色不一致,经过直方图匹配匀光匀色后颜色一致性较好。先看看直方图均衡算法原理知识: 先在根据上

静以修身,简以养德 3826

【CV面试】直方图与直方图均衡化

直方图、直方图均衡化、自适应直方图均衡化和直方图匹配

钱多多先森 3254

【生物识别模组介绍】静脉识别模组

静脉识别技术是依据流动的静脉血液中的血红蛋白对近红外光有所吸收,通过近红外光照射手指、手掌、面部、腕部呈现的分布图像,再使用特定的算法对图像进行特征提取、分析比对,从而进行身份认证识别。静脉结构相同几率为34亿分之一,每个人的静脉结构具有独特性,而且静脉特征图像自成年后终身不变,不受外部环境、疾病等影响,是人体最稳定的生物特征之一。商务合作联系:newmagicmission@gmail.com图1.0。

upupDay's blog 900

直方图均衡化以及直方图匹配

图像处理之直方图均衡化、直方图匹配

保持分享欲 2223

openEuler 22.03 安装 openGauss 5.0.2 部署手册

openEuler 22.03 安装 openGauss 5.0.2 部署手册

全国服务器高效代维 1424

OpenCV学习笔记(九)——直方图的操作(直方图归一化、直方图比较、直方图均衡化、直方图匹配、图像模板匹配cv.matchTemplate())

目录1 直方图归一化2 直方图比较3 直方图均衡化4 直方图匹配5 直方图反向投影6 图像模板匹配 直方图能够反应图像灰度值等统计特性,但是这个结果只统计了数值,是初步统计结果,OpenCV4 可以对统计结果进行进一步的操作以得到更多有用的信息,例如求取同结果的平均概率分布,通过直方图统计结果对两张图像中的内容进行不叫。本文主要介绍直方图归一化、直方图比较、直方图均衡化和直方图匹配等直方图操作与实际应用。 1 直方图归一化 2 直方图比较 3 直方图均衡化 4 直方图匹配 5 直方图反向投影 6 图像模板匹

a1016249126的博客 1万+

LoRa无线通信技术介绍(六)SX127X芯片收发程序讲解

接收LORA芯片SX127X的收发程序。

DT程序员的博客 1751

专栏二十:如何选择你的单细胞亚群的分辨率--ROGUE

ROGUE这是继chooseR后第二个计算单细胞亚群分辨率的内容,其实关于代码的运行很简单,网上已经有不少教程,重复这些就没意思了,这里主要是结合探讨一下这个算法。

m0_58549466的博客 981

从零开始学cv-8:直方图操作进阶:直方图匹配,局部直方图均衡化,彩色直方图均衡化

在上一篇文章中,我们探讨了直方图的基本概念,并详细讲解了如何利用OpenCV来查看图像直方图,以及如何实现直方图均衡化。在此基础上,本篇将继续深入,介绍直方图均衡化的高级应用,包括直方图匹配、局部直方图均衡化以及彩色图像的直方图均衡化技术。

HanWenKing的博客 1661

1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务

本文基于 SAP Cloud Application Programming 编程模型的 OData 服务开发教程的第一步,简述了 SAP Business Technology Platform 里 Business Application Studio 开发工具的打开方式,创建 Dev Space 以及 CAP 项目的创建步骤,以及如何通过 schema.cds 和 service.cds 分别创建 OData 模型和 OData 服务,最后通过 ports preview 打开 OData 服务预览页

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1798

图像灰度直方图的均衡化和规定化 matlab

图像灰度直方图的均衡化和规定化 matlab灰度直方图均衡化均衡化步骤:代码实现:结果对比:规定化:定义:作用:做法:主要映射方法:结果对比: 灰度直方图 灰度直方图:反映了该图像中不同灰度级出现的统计情况。 举例如下: 均衡化 均衡化:就是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。 将图像的灰度直方图表示为一个

weixin_46582817的博客 9736

【WRF后处理】基于wrf-python处理wrf运行结果wrfout_d01

基于wrf-python处理wrf运行结果wrfout_d01

WW、forever的博客 5209

ethernet eth0: Could not attach to PHY

整个流程看下来就是MAC connect PHY的过程失败了,失败的具体原因根据config_init,上图(bcm54xx_config_init) ,从此方向入手去定位原因;我这里的问题是has_gmac4没有置1,根据 has_gmac4: uses GMAC4 core.按照上面的调用逻辑,添加了部分打印,定位到__phy_read接口返回失败。stmmac_mdio_read 大部分都是linux的标准接口。最终取决于平台用的是哪家的phy,调用config_init。

无线互联&网络介绍 2702

OpenCV学习 基础图像操作(十四):直方图均衡化和直方图规定化

直方图操作是基于像素统计的基础图像操作,被广泛运用于调整图像的对比度,并由此衍生出很多变种和该经的方式.

fan1102958151的博客 3281

基于 C# 实现 RTSP 摄像头监控分屏系统:从流媒体获取到多画面显示

通过本文的讲解,我们介绍了如何在 C# 中实现 RTSP 摄像头监控分屏系统。我们使用了FFmpeg和VLC两种不同的方法来获取和解码 RTSP 流,并通过PictureBox控件和控件实现了分屏布局。两种解码方案都非常强大,可以根据实际需求选择最适合的方案。通过这种方式,您可以轻松地在 C# 中集成 RTSP 流,并将多个摄像头的视频流实时显示在同一屏幕上,进行监控和分析。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2309
上一篇: 学习笔记(一)——图像的灰度级和动态范围
下一篇: 图像灰度变换及实现
GoodShot
博客等级 码龄22年 968粉丝 281原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值