直方图计算与均衡

合集下载

直方图均衡化计算

直方图均衡化计算

直方图均衡化计算直方图均衡化是基于灰度直方图的图像增强的一种方法,还有另外一种方法是直方图规定化。

均衡化的目的是将原始图像的直方图变为均衡分布的的形式,将一非均匀灰度概率密度分布图像,通过寻求某种灰度变换,变成一幅具有均匀概率密度分布的目的图像。

具体原理如下:1、连续灰度级:假定:r代表灰度级,P(r)为概率密度函数。

r值已经过归一化处理,灰度值范围在[0,1]之间。

r与P(r)之间的关系如下:非均匀分布的连续灰度直方图均衡化的目的是将上面的非均匀分布变成如下图所示的均匀分布:均匀分布的连续灰度直方图我们接下来要做的是要找到一种变换S=T(r)使直方图变平直,为使变换后的灰度仍保持从黑到白的单一变化顺序,且变换范围与原先一致,以避免整体变亮或变暗,需要有如下规定:(1)在0 <= r <= 1中,T(r)是单调递增函数,且0 <= T(r) <= 1;(2)反变换r=(s),(s)也为单调递增函数,且0 <= s <= 1。

直方图均衡化变换公式推导图示因为灰度变换不影响像素的位置分布,而且也不会增减像素数目,所以有如下的推导公式:2、离散灰度级:设一幅图像的像素总数为n,分为L个灰度级,其中::表示第K个灰度级出现的个数。

:第K个灰度级出现的概率。

(0<=<=1, k=0,1,2,...,L-1),公式如下:计算的基本步骤如下:(1)求出图像中所包含的灰度级,一般都经过归一化处理,范围在[0,1]之间,也可以定在[0,L-1]之间。

(2)统计各灰度级的像素数目(k=0,1,2,...,L-1)。

(3)计算图像直方图。

(4)计算变换函数,即:(5)用变换函数计算映射后输出的灰度级。

(6)统计映射后新的灰度级的像素数目。

(7)计算输出图像的直方图。

根据上面推导出来的公式以及计算步骤,我们可以结合栗子来加深理解~~~eg:设图像有64*64=4096的像素,有8个灰度级,灰度分布如下所示:由上图我们知道该图像的,和,下一步我们要做的就是通过变换函数求,即:依次可求得,,,,。

图像直方图均衡化原理

图像直方图均衡化原理

图像直方图均衡化原理
图像直方图均衡化是一种常用的图像增强方法,通过调整图像的像素灰度分布,使得图像的对比度增强、细节更加清晰。

其原理主要分为以下几个步骤:
1. 统计像素灰度值的分布:首先,对待处理的图像,统计每个灰度级别的像素点数量,得到原始图像的灰度直方图。

2. 计算累计分布函数:根据灰度直方图,计算每个灰度级别对应的累计分布函数,即该灰度级别及其之前的像素点的累积数量比例。

3. 灰度映射:对于每个像素点,将其灰度值通过累计分布函数进行映射,得到新的灰度值。

通常情况下,可以通过线性映射或非线性映射来实现,使得图像的灰度分布变得更加均匀。

4. 重构图像:将经过灰度映射处理后的灰度值替换原始图像中的对应像素点的灰度值,从而得到均衡化后的图像。

通过图像直方图均衡化处理,可以提高图像的对比度,使暗部和亮部细节更加突出,同时抑制了图像中灰度级别分布不均匀的问题。

这种方法在图像增强、图像分析等领域都有广泛应用。

直方图均衡化原理

直方图均衡化原理

直方图均衡化原理直方图均衡化是一种用于增强图像对比度的经典方法,它通过重新分布图像的像素值来实现增强图像的对比度和亮度。

在本文中,我们将介绍直方图均衡化的原理,包括其基本概念、算法步骤和应用场景。

直方图均衡化的基本概念是通过重新分布图像的像素值,使得原始图像的像素值分布更加均匀,从而增强图像的对比度和亮度。

这种方法的核心思想是将原始图像的灰度直方图进行变换,使得变换后的直方图更加平坦,从而实现对比度的增强。

直方图均衡化的算法步骤可以简单概括为以下几步,首先,计算原始图像的灰度直方图,即统计图像中每个像素值的出现次数;然后,根据原始图像的灰度直方图计算累积分布函数(CDF),用于描述像素值的累积分布情况;接着,根据CDF对原始图像的像素值进行映射,得到变换后的图像;最后,根据映射后的像素值重新构建图像,实现对比度增强。

直方图均衡化的应用场景非常广泛,包括但不限于医学图像处理、遥感图像处理、数字摄影等领域。

在医学图像处理中,直方图均衡化可以帮助医生更清晰地观察病灶,提高诊断准确性;在遥感图像处理中,直方图均衡化可以增强图像的细节信息,提高图像的可视化效果;在数字摄影中,直方图均衡化可以改善照片的曝光不足或曝光过度的问题,提高照片的质量。

总之,直方图均衡化作为一种经典的图像增强方法,具有重要的理论意义和实际应用价值。

通过重新分布图像的像素值,直方图均衡化可以有效地增强图像的对比度和亮度,提高图像的质量和可视化效果。

在实际应用中,我们可以根据具体的需求选择合适的直方图均衡化算法,从而实现对图像的有效增强和优化。

希望本文对直方图均衡化的原理有所了解,对读者有所帮助。

如果您对直方图均衡化还有其他疑问或者需要进一步的了解,欢迎继续阅读相关的文献资料或者咨询相关领域的专业人士。

感谢您的阅读!。

直方图均衡化原理与实现

直方图均衡化原理与实现

直⽅图均衡化原理与实现直⽅图均衡化(Histogram Equalization) ⼜称直⽅图平坦化,实质上是对图像进⾏⾮线性拉伸,重新分配图像象元值,使⼀定灰度范围内象元值的数量⼤致相等。

这样,原来直⽅图中间的峰顶部分对⽐度得到增强,⽽两侧的⾕底部分对⽐度降低,输出图像的直⽅图是⼀个较平的分段直⽅图:如果输出数据分段值较⼩的话,会产⽣粗略分类的视觉效果。

直⽅图是表⽰数字图像中每⼀灰度出现频率的统计关系。

直⽅图能给出图像灰度范围、每个灰度的频度和灰度的分布、整幅图像的平均明暗和对⽐度等概貌性描述。

灰度直⽅图是灰度级的函数, 反映的是图像中具有该灰度级像素的个数, 其横坐标是灰度级r, 纵坐标是该灰度级出现的频率( 即像素的个数) pr( r) , 整个坐标系描述的是图像灰度级的分布情况, 由此可以看出图像的灰度分布特性, 即若⼤部分像素集中在低灰度区域, 图像呈现暗的特性; 若像素集中在⾼灰度区域, 图像呈现亮的特性。

图1所⽰就是直⽅图均衡化, 即将随机分布的图像直⽅图修改成均匀分布的直⽅图。

基本思想是对原始图像的像素灰度做某种映射变换, 使变换后图像灰度的概率密度呈均匀分布。

这就意味着图像灰度的动态范围得到了增加, 提⾼了图像的对⽐度。

图1 直⽅图均衡化通过这种技术可以清晰地在直⽅图上看到图像亮度的分布情况, 并可按照需要对图像亮度调整。

另外,这种⽅法是可逆的, 如果已知均衡化函数, 就可以恢复原始直⽅图。

设变量r 代表图像中像素灰度级。

对灰度级进⾏归⼀化处理, 则0≤r≤1, 其中r= 0表⽰⿊, r= 1表⽰⽩。

对于⼀幅给定的图像来说, 每个像素值在[ 0,1] 的灰度级是随机的。

⽤概率密度函数来表⽰图像灰度级的分布。

为了有利于数字图像处理, 引⼊离散形式。

在离散形式下, ⽤代表离散灰度级, ⽤代表 , 并且下式成⽴:其中, 0≤≤1, k=0, 1, 2, …, n-1。

式中为图像中出现这种灰度的像素数, n是图像中的像素总数, ⽽就是概率论中的频数。

《直方图的均衡化》课件

《直方图的均衡化》课件

直方图均衡化的效果评估
直方图均衡化的效果可以通过比较处理前后的直方图、对比度和视觉效果来 评估,通常希望处理后的图像具有更均匀的像素值分布和更好的对比度。
结论和总结
直方图的均衡化是一种有效的图像增强技术,在图像处理和计算机视觉中具有广泛的应用,能够改善图 像的质量和视觉效果。
《直方图的均衡化》PPT 课件
直方图的均衡化是什么
直方图的均衡化是一种图像增强技术,通过调整图像的亮度分布,使得图像中的像素值更均匀地分布在 整个灰度范围内,从而改善图像的对比度和视觉效果。
直方图的基本概念
直方图是用于表示图像中像素值分布的统计图,横坐标表示像素值,纵坐标 表示该像素值对应的像素数量。
直方图的均衡化原理
直方图均衡化的原理是通过对图像的像素值进行变换,使得原始图像的像素值分布更均匀,同时增强图 像的对比度。
直Байду номын сангаас图均衡化的应用场景
直方图均衡化广泛应用于图像增强、图像处理、计算机视觉等领域,可以改 善图像的质量、增强图像的细节和对比度。
直方图均衡化的步骤
直方图均衡化的步骤包括计算原始图像的像素值累计分布函数、对像素值进 行映射,以及将映射后的像素值替换到原始图像中。

图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配)

图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配)

图像处理基础(8):图像的灰度直⽅图、直⽅图均衡化、直⽅图规定化(匹配)本⽂主要介绍了灰度直⽅图相关的处理,包括以下⼏个⽅⾯的内容:利⽤OpenCV 计算图像的灰度直⽅图,并绘制直⽅图曲线直⽅图均衡化的原理及实现直⽅图规定化(匹配)的原理及实现图像的灰度直⽅图⼀幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的⼀个重要特征。

图像的灰度直⽅图就描述了图像中灰度分布情况,能够很直观的展⽰出图像中各个灰度级所占的多少。

图像的灰度直⽅图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率。

不过通常会将纵坐标归⼀化到[0,1]区间内,也就是将灰度级出现的频率(像素个数)除以图像中像素的总数。

灰度直⽅图的计算公式如下:p (r k )=n kMN其中,r k 是像素的灰度级,n k 是具有灰度r k 的像素的个数,MN 是图像中总的像素个数。

OpenCV 灰度直⽅图的计算直⽅图的计算是很简单的,⽆⾮是遍历图像的像素,统计每个灰度级的个数。

在OpenCV 中封装了直⽅图的计算函数calcHist ,为了更为通⽤该函数的参数有些复杂,其声明如下:void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,OutputArray hist, int dims, const int* histSize,const float** ranges, bool uniform = true, bool accumulate = false );该函数能够同时计算多个图像,多个通道,不同灰度范围的灰度直⽅图.其参数如下:images ,输⼊图像的数组,这些图像要有相同⼤⼤⼩,相同的深度(CV_8U CV_16U CV_32F ).nimages ,输⼊图像的个数channels ,要计算直⽅图的通道个数。

直方图均衡化

直方图均衡化
• 基本思想是把原始图的直方图变换为均匀分 布的形式,这样就增加了像素灰度值的动态 范围,从而达到增强图像整体对比度的效果
直方图均衡化
0≤r≤1 • T (r) 满足下列两个条件: (1) 在区间0≤r≤1中为单值且单调递增 (2)当0≤r≤1时,0≤ ≤1 • 条件(1)保证原图各灰度级在变换后仍保
定义(2):
一个灰度级在范围[0,L-1]的数字图像的直 方图是一个离散函数
p(rk ) nk rk / n
n 是图像的像素总数
nk是图像中灰度级为rk的像素个数
rk是第 个灰度级, = 0,1,2,…,L-1
比较两种定义
h(rk ) nk
p(rk ) nk / n
其中,定义(2)
定义(1) 定义(2)
直方图均衡化
对于离散值:
pr
(rk
)
nk n
已知变换函数的离散形式为:
sk 称作直方图均衡化
将输入图像中灰度级为 rk(横坐标)的像素映射到
输出图像中灰度级为 s k(横坐标)的对应像素
得到:
即:
sk
T(rk )
k j0
pr (rj )
k j0
nj n
• 使函数值正则化到[0,1]区间,成为实数函数
• 函数值的范围与象素的总数无关
• 给出灰度级 rk 在图像中出现的概率密度统

图像直方图的定义举例
直方图均衡化
• 直方图应用举例——直方图均衡化 • 希望一幅图像的像素占有全部可能的灰度级 且分布均匀,能够具有高对比度
• 使用的方法是灰度级变换:s T (r)
持从黑到白(或从白到黑)的排列次序
• 条件(2)保证变换前后灰度值动态范围的 一致性

直方图均衡的基本原理及流程

直方图均衡的基本原理及流程

直方图均衡的基本原理及流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!直方图均衡化是一种提高图像对比度的图像处理方法,它的基本原理是通过调整图像的灰度级分布,使得图像的直方图尽可能均匀地分布,从而达到增强图像中细节的目的。

灰度直方图绘制及直方图均衡化

灰度直方图绘制及直方图均衡化

昆明理工大学(数字图像处理)实验报告 实验名称: 灰度直方图绘制及直方图均衡化 专 业: 电子信息科学与技术 姓 名: 学 号: 成 绩:[实验目的]1、加强对灰度直方图及直方图均衡化的理解。

2、掌握直方图均衡化方法。

[实验内容]1、编程实现图像的灰度直方图。

2、实现直方图均衡化。

[实验原理]灰度直方图:1、直方图概念:灰度直方图表示图像中每种灰度出现的频率。

2、直方图的作用: 反映一幅图像的灰度分布特性3、直方图的计算: nk 为图像中出现rk 级灰度的像素数,n 是图像像素总数,而 nk/n 即为频数。

直方图均衡化:1、算法思想:通过函数变换,对在图像中像素个数多的灰度 级进行展宽,而对像素个数少的灰度级进行缩减。

从而达 到清晰图像的目的。

2、变换后每一个r 都对应一个s ,变换函数须满足二个条件 :(1)T 单值单增函数。

(2)对 有 则有: [实验步骤]离散情况下的直方图均衡化的算法:1)、列出原始图像的灰度级2)、统计各灰度级的像素数目 10-≤≤L r 1)(0-≤≤L r T 10)(1-≤≤=-L s s T r 1,...2,1,010,)(-=≤≤=l k r Nn r P k k k3)、计算原始图像直方图各灰度级的频数4)、计算累积分布函数5)、计算映射后的输出图像的灰度级。

6)、用的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。

创建相应的菜单并建立相应的消息响应函数:添加一个灰度直方图显示框。

调出资源视图窗口,添加ID为IDD_DIALOG4的对话框资源,设计如图:创建对话框类CDialog_ZFT并按下表关联对应变量:资源类型资源ID 关联变量类型图片控件IDC_zft CStatic绘制文本框IDOK intvoid CDialog_ZFT::OnOK(){CWnd *pwnd=GetDlgItem(IDC_zft);CDC *mydc=pwnd->GetDC();for(int i=0;i<count;i++){mydc->MoveTo(i+10,220);mydc->LineTo(i+10,220-data[i]*180/m_fmax);}/**************直方图****************/void CDLView::OnZft(){// TODO: Add your command handler code here if(m_DibHead==NULL){MessageBox("请打开一幅图像");return;}long w,h;w=m_DibHead->biWidth;h=m_DibHead->biHeight;int i ,j;float h1[256],h2[256];float fmax=0.0;for(i=0;i<256;i++)h1[i]=0;for(i=0;i<h;i++){for(j=0;j<w;j++){h1[*(m_Image+i*w+j)]++;}}for(i=0;i<256;i++){h2[i]=h1[i]*1.0/w/h;if(fmax<h2[i])fmax=h2[i];}CDialog_ZFT zft;zft.data=h2;zft.count=256;zft.m_fmax=fmax;zft.DoModal();}/**************直方图均衡化***************/zftjh(unsigned char *lpDib,long lWidth,long lHeight) {unsigned char *lpsrc;long lresult(0);long i,j;unsigned char bMap[256];long lCount[256];for(i=0;i<256;i++)lCount[i]=0;for(i=0;i<lHeight;i++)for(j=0;j<lWidth;j++){lpsrc=lpDib+i*lWidth+j;lCount[*lpsrc]++;}for(i=0;i<256;i++){lresult=0;for(j=0;j<=i;j++)lresult+=lCount[j];bMap[i]=(lresult*255)/lHeight/lWidth;}for(i=0;i<lHeight;i++)for(j=0;j<lWidth;j++){lpsrc=lpDib+i*lWidth+j;*lpsrc=bMap[*lpsrc];}}void CDLView::OnZftjunh(){// TODO: Add your command handler code hereif(m_DibHead->biBitCount!=8){MessageBox("当前版本仅支持256色位图的操作!","系统提示!",MB_ICONINFORMATION|MB_OK);return;}zftjh(m_Image,m_DibHead->biWidth,m_DibHead->biHeight);Invalidate();}[实验结果]原图均衡化后[实验总结]通过对比图像可知,变换后直方图趋向平坦,灰级减少,灰度合并。

直方图均衡化的本质和作用

直方图均衡化的本质和作用
和均衡化。
具体实现方法是首先计算每个像素点周围的局部阈值, 然后根据阈值将像素点的灰度值分为两类或多类,最 后对每类像素点进行直方图均衡化。
优点是能够更好地处理具有特定分布和噪声的图像; 缺点是计算复杂度较高,且阈值的选择对结果影响较
大。
感谢您的观看
THANKS
01
直方图均衡化通过拉伸图像的对比度,使得图像的 细节更加突出,提高了图像的视觉效果。
02
通过扩展像素值的动态范围,直方图均衡化使得图 像中的亮部和暗部细节都得到更好的展示。
03
对比度的提高有助于增强图像的层次感和立体感, 使得图像更加生动逼真。
增强图像的细节信息
01 直方图均衡化通过拉伸像素值的动态范围,使得 图像中的细节信息得到更好的展示。
02 对于低对比度图像,直方图均衡化能够增强其细 节表现,提高图像的分辨率。
03 在医学影像、卫星遥感等领域,增强细节信息对 于后续的分析和识别至关重要。
改善图像的视觉效果
01
直方图均衡化能够改善图像的视觉效果,使得图像更加清晰、 自然。
02
通过调整像素值的分布,直方图均衡化能够消除图像中的噪声
和干扰,提高图像的质量。
直方图均衡化的本质和作用
目 录
• 直方图均衡化的定义 • 直方图均衡化的本质 • 直方图均衡化的作用 • 直方图均衡化的优缺点 • 直方图均衡化的实现方法
01
直方图均衡化的定义
直方图均衡化的概念
直方图均衡化是一种图像处理技术, 通过拉伸图像的灰度直方图,使其均 匀分布在整个灰度级别范围内,从而 提高图像的对比度和动态范围。
改善视觉效果有助于提高图像的辨识度和可读性,使得图像更
03
加易于分析和处理。

简述直方图均衡化的基本原理。

简述直方图均衡化的基本原理。

简述直方图均衡化的基本原理。

直方图均衡化是图像处理领域广泛使用的一种技术,它主要用来平衡图像中各个亮度区域。

它可以改善图像的质量,提高图像的局部对比度,而且,这种技术很简单,易于实现。

1.什么是直方图均衡化直方图均衡化是一种用于改善图像质量的算法,能够提高图像的局部对比度和细节,这也是为什么会有这么大的流行度的原因之一。

按照其基本思想,直方图均衡化的目的是改善图像中暗部和亮部的区分度,使其直方图更平坦,从而改善图像的局部对比度。

2.直方图均衡化的原理直方图均衡化是基于直方图概率分布转换(HDPT)实现的,它使原本呈现出偏好的直方图(例如不均衡或不清晰)变得更加均匀。

具体来说,直方图均衡化通过对图像的每个像素的亮度值进行重新映射,以实现直方图的均衡化。

首先,计算出每个像素的累积直方图(CDH),并将其映射到(0,255)的范围内。

然后,将每个像素的亮度值重新映射为与 CDH应的亮度值,从而实现直方图的均衡化。

3.方图均衡化的优势直方图均衡化具有很多优点,下面列举其中几点:(1)改善图像质量:直方图均衡化可以提高图像的局部对比度,可以改善图像的质量;(2)易于实现:直方图均衡化算法非常简单,它只需要更改图像的像素值,而不需要昂贵的计算资源;(3)对不同亮度区域均衡:直方图均衡化可以使不同亮度区域之间的光照差异更加均衡,从而提高图像的整体质量;(4)减少图像噪声:由于直方图均衡化可以改变图像中各个亮度区域之间的差异,因此可以减少图像噪声的影响,从而提高图像质量。

4.直方图均衡化的应用直方图均衡化主要用于图像处理,有助于改善图像的质量,尤其是失真或模糊的图像。

此外,它还可以用于多媒体处理,如视频传输,视频压缩,图像压缩等,以提高这些多媒体文件的质量。

此外,直方图均衡化还可以用于计算机视觉,机器学习等领域。

以上是关于直方图均衡化的基本原理和其相关应用的简单介绍。

随着技术的进步,直方图均衡化将会得到更加深入的研究,以提高图像处理技术的效率和质量。

直方图均衡化原理

直方图均衡化原理

直方图均衡化原理直方图均衡化是一种用于增强图像对比度的方法,它通过重新分布图像的灰度级来实现这一目的。

在本文中,我们将详细介绍直方图均衡化的原理及其在图像处理中的应用。

首先,让我们来了解一下直方图。

直方图是一种统计图,它显示了图像中每个灰度级的像素数量。

通过观察直方图,我们可以了解图像的对比度、亮度和灰度分布情况。

在一副理想的图像中,直方图应该均匀地分布在整个灰度级范围内,这意味着图像具有良好的对比度和亮度平衡。

然而,在实际应用中,许多图像的直方图并不均匀,这就需要使用直方图均衡化来改善图像的质量。

直方图均衡化的原理非常简单,它的核心思想是将原始图像的直方图进行拉伸,使得图像的灰度级分布更加均匀。

具体来说,直方图均衡化包括以下几个步骤:1. 统计原始图像的直方图,得到每个灰度级的像素数量。

2. 计算每个灰度级的累积分布函数(CDF),用于描述图像中低灰度级和高灰度级的像素分布情况。

3. 根据CDF对原始图像的每个像素进行灰度级的映射,使得图像的灰度级分布更加均匀。

4. 生成均衡化后的图像,即将映射后的灰度级应用到原始图像上。

通过这些步骤,直方图均衡化可以有效地增强图像的对比度和亮度平衡,使得图像更加清晰和易于分析。

此外,直方图均衡化还可以应用于图像压缩、图像增强、图像分割等领域,具有广泛的应用价值。

需要注意的是,直方图均衡化也存在一些局限性。

首先,如果图像的动态范围很窄,直方图均衡化可能会导致图像的细节丢失。

其次,对于一些特定的图像,直方图均衡化可能会产生不自然的效果,因此需要根据具体情况进行调整和优化。

总的来说,直方图均衡化是一种简单而有效的图像增强方法,它通过重新分布图像的灰度级来增强图像的对比度和亮度平衡。

在实际应用中,可以根据具体情况选择合适的图像增强方法,以达到最佳的效果。

希望通过本文的介绍,读者们能够更加深入地了解直方图均衡化的原理及其在图像处理中的应用,为相关领域的研究和实践提供一定的参考和帮助。

直方图均衡化方法

直方图均衡化方法

直方图均衡化方法
直方图均衡化是一种用来增强图像对比度的技术,它通过重新分布图像像素的灰度级来拉伸图像的动态范围。

下面介绍一种基本的直方图均衡化方法:
1. 计算原始图像的灰度直方图:统计每个灰度级出现的像素数量。

2. 计算原始图像的累积分布函数(CDF):将每个灰度级的像素数量加到前一个灰度级的像素数量上,得到一个累积的像素数量曲线。

3. 计算均衡化后的累积分布函数:将CDF映射到新的像素值范围上,通常是0到255。

4. 计算均衡化后的灰度级映射表:将均衡化后的CDF映射到0到255的范围上。

5. 根据映射表,对原始图像的每个像素进行像素值替换:将原始像素值替换为对应的均衡化后的像素值。

6. 输出均衡化后的图像。

通过这个方法,直方图均衡化可以使得图像的像素值更均匀地分布在整个灰度级范围内,从而增强图像的对比度。

直方图均衡化计算公式

直方图均衡化计算公式

直方图均衡化计算公式直方图均衡化(色调均化)“图像(Image)>调整(Adjust)”菜单的功能色调均化(Equalize)Photoshop菜单:图像>调整>色调均化公式:(公式中Sk表示均衡化后的灰度值,∑表示总与,nj是原图中某个灰度色阶j 的像素数量,j的范围是0~k,N是图像像素总数。

)“色调均化”命令重新分布图像中像素的亮度值,以便它们更均匀地呈现所有范围的亮度级。

使用此命令时,Photoshop尝试对图像进行直方图均衡化(Histogram Equalization),即在整个灰度范围中均匀分布每个色阶的灰度值。

当扫描的图像显得比原稿暗,而您想平衡这些值以产生较亮的图像时,能够使用“色调均化”命令。

配合使用“色调均化”命令与“直方图”命令,能够看到亮度的前后比较。

使用“色调均化”命令:1. 选择菜单图像>调整>色调均化。

2. 假如已选择一个图像区域,在弹出的对话框中选择要均化的内容,然后点按“好”。

•“仅色调均化所选区域”只均匀地分布选区的像素。

•“基于所选区域色调均化整个图像”基于选区中的像素均匀分布所有图像的像素。

原理直方图均衡化是一种灰度变换算法,因此我们重点研究灰度图像的直方图均衡化。

绝对的均匀图A是一个黑白灰均匀渐变,0~255的每一个色阶的灰度数量都是相同的。

图B 的是图A的像素打乱了顺序随机分布的,每种灰度的数量都与图A的相同,因而它的直方图也与图A的相同。

图A与图B的直方图。

每种灰度数量是相同的,直方图呈一个黑色矩形。

近似的均匀关于通常的图像,由于每种灰度的像素数量并不相同,我们没办法把每种灰度的分量调得像图A、B那么均匀,但是能够做到近似的均匀。

也就是说,把直方图横向平均分成几份之后,使每一份的像素数量大致相等。

下面是一幅图片的直方图,共有19200个像素,从左到右平均分成三份。

均衡化之后,每份的像素数量都在6400左右。

手工调整方法我们拍摄或者扫描的照片往往会由于光线太强或者太弱,使图像对比度减弱,细节分辨不清。

直方图均衡算法(HistogramEqualized)

直方图均衡算法(HistogramEqualized)

直⽅图均衡算法(HistogramEqualized)Lab1: Histogram Equalization1. 实验环境(C++)操作系统版本 MacOS Catalina 10.15OpenCV4.0 (imgcodecs | core | highgui | imgproc)Cmake-3.14Clang-1100.0.33.82. 实验步骤1. Calculate the histogram H for src2. Normalize the histogram.std::array<double, 256> calNormalizedHist(cv::Mat& source) {std::array<double, 256> acc{0};// Calculate the histogram H for srcfor(int i = 0; i < source.rows; i++)for (int j = 0; j < source.cols; j++)acc[ source.ptr<uchar>(i)[j]] ++;// Normalize the histogram.for(int i = 0; i < acc.size(); i++)acc[i] /= source.rows * source.cols;return acc;}3. Compute the integral of the histogram: H'4. Transform the image using H′ as a look-up table:(x,y)=H′( (x,y))∗255void equalizeHist(cv::Mat& source, cv::Mat& result) {source.copyTo(result);auto hist = calNormalizedHist(source);// Compute the integral of the histogram: H'for(int i = 1; i < 256; i++) hist[i] += hist[i-1];// Transform the image using H′ as a look-up table: (x,y)=H′( (x,y)) * 255for(int i = 0; i < source.rows; i++)for (int j = 0; j < source.cols; j++)result.ptr<uchar>(i)[j] = hist[source.ptr<uchar>(i)[j]] * 255;}5. Test Code:cv::Mat cv, lab, m = cv::imread("../data/lena.png", cv::IMREAD_GRAYSCALE);cv::equalizeHist(m, cv);equalizeHist(m, lab);cv::imwrite("../out/m.png", m);cv::imwrite("../out/cv.png", cv);cv::imwrite("../out/lab.png", lab);cv::imwrite("../out/cv-m.png", abs(cv-m));cv::imwrite("../out/lab-m.png", abs(lab-m));cv::imwrite("../out/lab-cv.png", abs(lab-cv));cv::imwrite("../out/hist.m.png", drawHist(calNormalizedHist(m)));cv::imwrite("../out/hist.cv.png", drawHist(calNormalizedHist(cv)));cv::imwrite("../out/b.png", drawHist(calNormalizedHist(lab)));cv::imwrite("../out/acchist.m.png", drawHist(calNormalizedHist(m), true));cv::imwrite("../out/acchist.cv.png", drawHist(calNormalizedHist(cv), true));cv::imwrite("../out/b.png", drawHist(calNormalizedHist(lab),true));3. 实验结果image: Origin image: OpenCV image: Result dif: Origin&OpenCV dif: Result&Origin dif: Result&OpenCV Hist: Origin Hist: OpenCV Hist: ResultAccHist: Origin AccHist: OpenCV AccHist: Result###4. 实验结果分析明显本⽂实现的算法与OpenCV实现的⾼度⼀致(不考虑指令集优化: SIMD|SEE4 etc.)由Histogram与Accumulate Histogram上看, 连续变量的均匀分布意味着概率分布函数满⾜线性分布, 与理论推导得出的性质⼀致从直⽅图直观观察和算法分析, 易知基于直接灰度映射(点对点映射)的经典直⽅图均衡算法会导致灰阶的减少.因⽽加剧⾊带(Banding)现象:Lookup-Table H′在定义上不是单射所以这个意义上, 直⽅图的均衡是⼀个可以把相邻柱⼦合并的挪动柱⼦的游戏~5 Attachment本部分是附加部分, 主要回答实验课程上与⽼师的⼀个⼩⼩的 argument:怎么得到均衡后的直⽅图 ?⽐较常见的⽅法: 图像均衡后再统计⼀次直⽅图⽐较少⽤的⽅法: 直接均衡原直⽅图std::array<double, 256> equalizeHist(std::array<double, 256>&& hist) {std::array<double, 256> hist_eq{0}, hist_acc{0};hist_acc[0] = hist[0];// Compute the integral of the histogram: H'for(int i = 1; i < 256; i++) hist_acc[i] = hist_acc[i-1] + hist[i];for(int i = 0; i < 256; i++)hist_eq[hist_acc[i]*255] += hist[i];return hist_eq;}先计算均衡后的直⽅图再均衡图像对吗?不对, 均衡是⼀种⽅法, 可以直接均衡图像然后计算新的直⽅图, 也可以直接均衡直⽅图, 两直⽅图⼀致直⽅图均衡的均衡指什么?均衡⼀种概率变换, 可以将线性的⽬标概率分布函数拓展到任意的分布函数:Transformation between two distribution funtion.5.* 下⾯给出指定累计直⽅图的均衡结果的部分例⼦y=x2AccHist Image Hist:Hist: Directly-y=x5AccHist Image Hist:Hist: Directly-y=sin(x)AccHist Image Hist:Hist: Directly-y=√2x−x2AccHist Image Hist:Hist: Directly-y=e x−1AccHist Image Hist:Hist: Directly #include <iostream>#include <opencv2/imgcodecs.hpp>#include <opencv2/imgproc.hpp>#include <opencv2/highgui.hpp>#include <array>cv::Mat drawHist(std::array<double, 256>&& acc, bool accumulate = false) {if(accumulate) for(int i = 1; i < acc.size(); i++) acc[i] += acc[i-1];double max_v = *std::max_element(acc.begin(), acc.end());cv::Mat visual = cv::Mat::zeros(256, 256, CV_8UC3);for(int i = 0; i < 256; i++)cv::line(visual, cv::Point(i, 256.0*(1-acc[i]/max_v)), cv::Point(i, 256), 255);return visual;}std::array<double, 256> calNormalizedHist(cv::Mat& source) {std::array<double, 256> acc{0};// Calculate the histogram H for srcfor(int i = 0; i < source.rows; i++)for (int j = 0; j < source.cols; j++)acc[ source.ptr<uchar>(i)[j]] ++;// Normalize the histogram.for(int i = 0; i < acc.size(); i++)acc[i] /= source.rows * source.cols;return acc;}std::array<double, 256> equalizeHist(std::array<double, 256>&& hist,std::function<double(double)> && f=[](double x){return x;}) {std::array<double, 256> hist_eq{0};std::array<int, 256> H{0};double sum = 0;for(int i = 0, j = 0; i < 256; i++)for(;sum < f(i/255.0); j++) {sum += hist[j]; H[j] = i;}for(int i = 0; i < 256; i++)hist_eq[H[i]] += hist[i];return hist_eq;}// Only for single channelvoid equalizeHist(cv::Mat& source, cv::Mat& result,std::function<double(double)> && f=[](double x){return x;}) {source.copyTo(result);auto hist = calNormalizedHist(source);std::array<int, 256> H{0};// Compute the integral of the histogram: H'double sum = 0;for(int i = 0, j = 0; i < 256; i++)for(;sum < f(i/255.0); j++) {sum += hist[j]; H[j] = i;}// directly gray mapping// Transform the image using H′ as a look-up table: (x,y)=H′( (x,y)) * 255for(int i = 0; i < source.rows; i++)for (int j = 0; j < source.cols; j++)result.ptr<uchar>(i)[j] = H[source.ptr<uchar>(i)[j]];}int main() {cv::Mat m = cv::imread("../data/lena.bmp", cv::IMREAD_GRAYSCALE);cv::Mat cv, lab;cv::equalizeHist(m, cv);equalizeHist(m, lab);cv::imwrite("../out/m.bmp", m);cv::imwrite("../out/cv.bmp", cv);cv::imwrite("../out/lab.bmp", lab);cv::imwrite("../out/cv-m.bmp", abs(cv-m));cv::imwrite("../out/lab-m.bmp", abs(lab-m));cv::imwrite("../out/lab-cv.bmp", abs(lab-cv));cv::imwrite("../out/hist.m.bmp", drawHist(calNormalizedHist(m)));cv::imwrite("../out/hist.cv.bmp", drawHist(calNormalizedHist(cv)));cv::imwrite("../out/b.bmp", drawHist(calNormalizedHist(lab)));cv::imwrite("../out/b_direct.bmp", drawHist(equalizeHist(calNormalizedHist(m))));cv::imwrite("../out/acchist.m.bmp", drawHist(calNormalizedHist(m), true));cv::imwrite("../out/acchist.cv.bmp", drawHist(calNormalizedHist(cv), true));cv::imwrite("../out/b.bmp", drawHist(calNormalizedHist(lab),true));{auto f = [&](std::string f_name, std::function<double(double)>&& f) {cv::Mat m_f;equalizeHist(m, m_f, std::move(f));cv::imwrite("../out/lab."+f_name+".bmp", m_f);cv::imwrite("../out/hist."+f_name+".bmp", drawHist(calNormalizedHist(m_f)));cv::imwrite("../out/acchist."+f_name+".bmp", drawHist(calNormalizedHist(m_f), true));cv::imwrite("../out/hist."+f_name+"_direct.bmp",drawHist(equalizeHist(calNormalizedHist(m), std::move(f)))) ; };f("x^2", [](double x){return x*x;});f("sin(x)", [](double x){return sin(3.1415926 * 0.5 * x);});f("sqrt(x*(2-x))", [](double x){return sqrt(x*(2-x));});f("exp(x-1)", [](double x){return std::exp(x-1);});f("x^5", [](double x){return std::pow(x,5);});}// cv::imshow("lena", m);// cv::imshow("lena: equalizeHist", cv);// cv::imshow("lena: equalizeHist zlb", lab);////// cv::imshow("origin", drawHist(calNormalizedHist(m)));// cv::imshow("cvHist", drawHist(calNormalizedHist(cv), true));// cv::imshow("zlbHist", drawHist(calNormalizedHist(lab), true));// cv::waitKey();return 0;}Processing math: 100%。

直方图均衡化实验报告

直方图均衡化实验报告

直方图均衡化实验报告直方图均衡化实验报告引言:直方图均衡化是一种常用的图像处理技术,它可以增强图像的对比度和细节,使得图像更加清晰明亮。

本实验旨在通过实际操作验证直方图均衡化的效果,并探讨其在不同场景下的应用。

实验步骤:1. 图像获取与预处理:选择一张高对比度的彩色图像作为实验对象,通过图像处理软件将其转换为灰度图像。

确保图像的亮度范围适中,避免过亮或过暗的情况。

2. 直方图均衡化算法:实现直方图均衡化算法的代码,可以使用Python等编程语言。

算法的核心思想是将原始图像的像素值映射到新的像素值,使得新图像的直方图均匀分布在整个灰度范围内。

3. 实验结果展示:将经过直方图均衡化处理后的图像与原始图像进行对比展示。

通过观察图像的对比度、亮度和细节等方面的变化,评估直方图均衡化算法的效果。

实验结果与分析:经过直方图均衡化处理后,图像的对比度明显增强,细节更加清晰可见。

原本过亮或过暗的区域得到了适当的修正,使得整个图像的亮度分布更加均匀。

同时,图像中的细节也得到了突出,使得观察者能够更好地识别和分析图像中的内容。

在实际应用中,直方图均衡化可以用于图像增强、目标检测、图像匹配等领域。

例如,在安防监控系统中,直方图均衡化可以提高图像的对比度,使得目标物体更加明显,有利于目标检测和识别。

在医学图像处理中,直方图均衡化可以增强图像的细节,有助于医生对病灶的判断和诊断。

然而,直方图均衡化也存在一些局限性。

首先,直方图均衡化是一种全局操作,对整个图像进行处理,可能会导致某些局部细节的损失。

其次,直方图均衡化对于亮度变化较大的图像效果较差,可能会导致过度亮化或过度暗化的问题。

因此,在实际应用中,需要根据具体情况选择合适的图像处理方法。

结论:通过本次实验,我们验证了直方图均衡化在图像处理中的有效性。

直方图均衡化可以增强图像的对比度和细节,使得图像更加清晰明亮。

然而,直方图均衡化也存在一些局限性,需要根据具体情况选择合适的图像处理方法。

直方图处理(均衡化与匹配)解析

直方图处理(均衡化与匹配)解析
s T (r ) pr (r )dr
0 r
上式表明,当变换函数为r的累积直方图函数 时,能达到直方图均衡化的目的。
对于离散的数字图像,用频率来代替概率 , 则 变换函数T(rk)的离散形式可表示为:
sk T (rk ) pr (rj )
j 0 j 0 k k
nj n
上式表明,均衡后各像素的灰度值 sk 可直接由 原图像的直方图算出。
一幅图像的sk与rk之间的关系称为该图像的累积灰 度直方图。
Pr(rk) 1.0 S(rk)
rk 1.0 1.0
rk
直方图均衡化的计算 直方图均衡化过程(算法):
(1) 列出原始图灰度级rk;
0 1 1 2
0 1 1 2
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
k rk , k 0,1, , L 1 L 1 求得:rk=0,1/7,2/7, …, 6/7
3.3 直方图处理
一、灰度直方图 直方像图反映了图的像素的灰度分布是反映一幅图像 中的灰度级与出现这种灰度级的像素的概率之间关系 的图形。 直方图的横坐标为灰度级(用r表示),纵坐标是具 有该灰度级的像素个数或出现此灰度级的概率P(rk)。 设N(=a×b)为一幅图像中像素总数,nk为第k级灰 度的像素数;r k表示第k个灰度级。则: P(rk)= nk /N (归一化后k级灰度像素数) 定义:反映各灰度级出现频数的分布情况,进而反映 图像对(清晰)度,但不反映各灰度级的空间位置分 布。

简述直方图均衡化的基本原理。

简述直方图均衡化的基本原理。

简述直方图均衡化的基本原理。

直方图均衡化是图像处理的一种基本技术,它可以改变图像的对比度和亮度,使其看起来更加饱满和生动。

这一技术的主要目的是将图像的灰度像素转换成具有分布均匀的非线性像素,从而增强图像的整体视觉效果。

此外,它还可以改善图像的景深和清晰度,从而使其更加清晰明了。

直方图均衡化技术的原理是,它基于图像的直方图,将图像中的灰度像素值(具有范围从0到255的灰度级)调整到更均匀的分布水平,从而提高图像的对比度和亮度。

这种技术将像素的分布表示为直方图,它通过拉伸或压缩灰度级来改善图像的对比度和亮度,使其看起来更加饱满和生动。

一般来说,直方图均衡化的步骤主要有三步:(1)计算直方图。

首先,需要计算输入图像的灰度直方图,以确定该图像中灰度级的分布范围。

(2)拉伸直方图。

其次,根据输入图像的灰度直方图,使用相应的均衡化函数(lut)将其灰度级调整到更均匀的分布水平。

(3)输出结果。

最后,将输出的结果数据存储到图像文件中,即完成了直方图均衡化。

通过直方图均衡化,可以将图像从一个较低的对比度和亮度水平转换到更高的对比度和亮度水平,从而改善图像的整体视觉效果。

它的使用范围非常广泛,在日常的照片处理、影片制作等行业,都可以看到它的身影。

直方图均衡化的另一个常用应用场景是图像去噪,它可以有效的削弱图像中的噪音,同时也能改善图像的景深和清晰度。

这一技术非常有效,可以帮助人们有效地提高照片和视频的质量,使其看起来更加清晰明了。

从本质上讲,直方图均衡化是一种统计学方法,它可以把图像的灰度分布从一种不均衡的分布转换到一种较为均衡的分布,从而达到增强对比度和亮度,改善整体视觉效果的效果。

因此,直方图均衡化在图像处理中具有非常重要的意义。

总之,直方图均衡化是一种既简单又有效的图像处理方法。

它有效的改善了图像的对比度和亮度,使其看起来更加饱满和生动。

它还可以有效地削弱图像中的噪音,改善图像的景深和清晰度,使其更加清晰明了。

实验报告2:直方图的均衡

实验报告2:直方图的均衡

实验报告1.数字图像直方图均衡的算法原理直方图均衡的主要原理是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布,通过将不同灰度值的像素数量进行统计,并将图像的像素值进行重新分配,把一定范围的像素过于密集的灰度值重新分配到较广的灰度区域内,使得整体灰度范围内每个灰度值的像素数量基本相同。

2.数字图像直方图均衡的算法步骤I.设均衡前图像在(x,y)处灰度值为f(x,y),均衡后图像的灰度值为g(x,y)II.设直方图变换函数为g(x,y)=M(f(x,y))III.令M(t)在(0,L-1)上单调递增,且使得f(x,y)和g(x,y)均属于(0,L-1)。

IV.计算每个灰度级的频数p(x,y)=f(x,y)/NV.此时计算累计分布函数C(x,y)=Σp(x,y)VI.利用M(t)计算均衡后的灰度级:g(x,y)=INT[(gmax-gmin)C(x,y)+gmin+0.5]3.MATLAB代码对RGB通道独立地进行直方图均衡的代码实现:RGB=imread('yuanban.jpg');R=RGB(:,:,1);G=RGB(:,:,2);B=RGB(:,:,3);subplot(4,2,1),imshow(RGB);title('原始真彩色图像');subplot(4,2,3),imshow(R);title('真彩色图像的红色分量');subplot(4,2,4), imhist(R);title('真彩色图像的红色分量直方图');subplot(4,2,5),imshow(G);title('真彩色图像的绿色分量');subplot(4,2,6), imhist(G);title('真彩色图像的绿色分量直方图');subplot(4,2,7),imshow(B);title('真彩色图像的蓝色分量');subplot(4,2,8), imhist(B);title('真彩色图像的蓝色分量直方图');r=histeq(R);g=histeq(G);b=histeq(B);figure,subplot(3,2,1),imshow(r);title('红色分量均衡化后图像');subplot(3,2,2), imhist(r);title('红色分量均衡化后图像直方图');subplot(3,2,3),imshow(g);title('绿色分量均衡化后图像');subplot(3,2,4), imhist(g);title('绿色分量均衡化后图像直方图');subplot(3,2,5), imshow(b);title('蓝色分量均衡化后图像');subplot(3,2,6), imhist(b);title('蓝色分量均衡化后图像直方图');figure,newimg = cat(3,r,g,b);imshow(newimg,[]);title('均衡化后分量图像还原输出原图');4.均衡效果对比:原图:Matlab直方图均衡后效果图:PS均衡后效果图:差别:原图颜色较暗,并且大部分区域灰度值偏低,仅有部分地方灰度值较亮。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

直方图计算与与均衡
一、实验要求:
1.读入给定的图像文件
2.求输入图像文件的直方图,并且利用MATLAB画出来
3.设计算法完成直方图的均衡,并利用MATLAB输出
4.将直方图均衡后的文件以图像形式输出
5.观察比较均衡前后图像与直方图的区别
二、实验原理
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。

直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。

直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。

(I)直方图均衡化的过程:
1)列出原始图像和变换后图像的灰度级(L是灰度级的个数);
2)统计员图像中各灰度级的像素个数;
3)计算原始图像直方图P(i)=Ni/N;
4)计算累计直方图P(j)=P(1) + P(2) + P(3) +…+ P(i);
5)利用灰度值变换函数计算变换后的灰度值,兵四舍五入取整;j=INT[(L-1)Pj+0.5]
6)确定灰度变换关系i→j,据此将原图像的灰度值f(m,n)=i修正为g(m,n)=j;
7)统计变换后个灰度级的像素个数Nj;
8)计算变换后图像的直方图Pj=Nj/N
(II)图像均衡化后的缺点:
1)变换后图像的灰度级减少,某些细节消失;
2)某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。

直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。

这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。

通过这种方法,亮度可以更好地在直方图上分布。

这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展
常用的亮度来实现这种功能。

三、实验思路:
图一(直方图计算与均衡流程图)四、实验代码
clc;
clear;
X=imread('ccc.png');%
I=rgb2gray(X);%灰度化
[m,n]=size(I);
GP=zeros(1,256);
for k=0:255
GP(k+1)=length(find(I==k))/(m*n);%得到每个像素出现的概率end
S1=zeros(1,256);
for i=1:256
for j=1:i
S1(i)=GP(j)+S1(i);%得到像素的分布函数
end
end
S2=round(S1*256+0.5);%得到四舍五入的整数
for i=1:256
GPeq(i)=sum(GP(find(S2==i)))
end
figure(1);
subplot(2,2,1);SI=imhist(I);SI=SI/(m*n);bar(0:255,SI,'b'); xlim([0, 256])title('系统设计原图像直方图');
xlabel('灰度值');ylabel('出现概率');%系统直方图
subplot(2,2,2);bar(0:255,GP,'b');
title('自己设计原图像直方图');xlabel('灰度值');
ylabel('出现概率');xlim([0, 256])
subplot(2,2,3);bar(0:255,GPeq,'b');%自己绘制直方图
title('均衡后图像直方图');xlabel('灰度值');ylabel('出现概率'); xlim([0, 256])
subplot(2,2,4);bar(0:255,S2);title('函数直方图非线性均衡曲线')
II=I;
for i=0:255
II(find(I==i))=S2(i+1);
end
figure(2);
subplot(1,2,1);imshow(I);title('原图像');
subplot(1,2,2);imshow(II);title('均衡后图像');
五、实验结果与分析
图二直方图对比曲线
由图二可以发现自己设计的直方图与matlab自带的直方图显示数据相同,说明设计流程与结果都没有错误。

从原图像直方图可以发现大部分灰度级像素都是集中在90-150这个范围,这使得图像对比度不能够很好的体现,为了使图像更加直观容易理解,我将直方图进行了均衡,第四幅图是用来进行非线性均衡的曲线,将横轴与纵轴的映射关系颠倒,使得原来占灰度级概率大的区域得到拉伸,灰度级概率小的区域进行压缩,让图像的对比更加鲜明。

从第三幅图形可以发现均衡之后的灰度级大部分是均匀分布,对原图像有非常鲜明的改经,但是总体亮度没有改变。

图三均衡前后对比图像
从图片对比中可以发现在均衡后的图像轮廓更加清晰,左边原图对于草的直观印象就是一堆,看不出明显的差别,但是右边均衡之后的图像草的颜色出现了不同,有草与草之间出现的白色空隙,单独一颗草的杂乱轮廓。

路面也出现了坑坑洼洼的地形,将细节部分更加清晰表现出来。

六、思考题
1、在图像经过直方图均衡之后是否出现了背景增强?有什么解决办法?
答:直方图均衡之后会出现背景增强。

为了减少因为均衡技术而带来的不好背景增强,可以采用局部直方图均衡算法和限制对比度自适应直方图均衡化方法。

相关文档
最新文档