直方图直方图均衡化增强共21页文档
直方图
在c语言中,也用一个数组来存储直方图。如:float
fhistogram[256];数组中的元素fhistogram[1]表示"灰度级
为1的像素点的频数",
即:
fhistogram[1]
nk
n
其中n k 表示该图片中有n k 个像素点的灰度级为k,n
表示“该图片中像素点的总个数” 。
尽管灰度直方图不能表示出某灰度值在什么位置, 更不能直接显示图像内容,但是具有统计特性的直方图 却能描述该图像的灰度分布特性,使人们从中得到诸如 总体明亮程度、对比度等与图像质量有关的灰度分布概 况,成为一些处理方法的重要依据。
数字图像直方图统计
选择菜单View->Graph->Image ,做如下设置:
选择菜单 View->Graph>Time/Frequency,做如下设置
数字图像直方图统计
开始
用不同参数调用 构造图像的函数 产生图像
调用直方图统计 子程序统计直方
图
循环
直方图统计子 程序
初始化直方图统计数组(赋 0值)
统计图像中各种灰度值(取值 0255)的像素个数
计算各种灰度值的像素个数占 全部图像像素的百分比
重复五次 直方图统计结束
实验二 数字图像均衡化增强
直方图均衡化图像增强的原理
图像增强处理技术是数字图像处理的基本内容之一。图像增强是 指按特定的需要突出一幅图像中的某些信息,同时,削弱或去除某 些不需要的信息的处理方法。
两个具有不同灰度值的相邻区域之间总存在边缘,边缘是灰
度值不连续的结果,这种不连续性通常可以利用求导数的方法方 便地检测到,一般常用一阶导数和二阶导数来检测边缘。边缘检 测的基本思想是首先利用边缘增强算子,突出图像中的局部边缘, 然后定义像素的“边缘强度”,通过设置门限的方法提取边缘点 集。常用的边缘检测算子有Robert算子、Sobel算子、LOG算子 和Canny算子。
梯度算子
梯度算子是一阶导数算子。对于图像函数f(x,y),它的
梯度定义为一个向量:
f
f
(x,
y)
本周实验课主要内容
一、数字图像直方图统计 1. 什么是图像和像素点 2. 什么是直方图
二、数字图像直方图均衡化增强 1. 什么是直方图均衡化 2. 图像增强的原理
三、数字图像边缘检测(Sobel算子) 1. 什么是图像边缘检测 2. Sobel算子的原理及实现方法
实验一 数字图像直方图统计
图像和像素点
一幅图像由若干个像素点组成。每个像素点的明暗程度/亮度信息都 可以用灰度级(0~255)来表示。不同的明暗程度的若干个像素点就组 成了一幅完整的图像。如一张320*240的灰度图像,表示该图像有320 行,每行有240个像素点。
(a)原始图像 (b)图a局部放大(c)图b局部放大
c语言中,用一个数组来保存一张图像。 如unsigned int dbimage[80*80]表示“一张6400(即80*80)个像素点 的灰度图像”。而数组元素dbimage[1]表示“第二个像素点的灰度级”。 在.bmp文件中,开始1078个字节是用来设置“bmp格式”,1078个 字节之后的数据才是图像像素点的“灰度级”信息,并且先存图片的 最后一行,最后存图片的第一行。
具体方法是:
直方图均衡化的原理
灰度直方图的计算十分简单,依据定义在离散形式下有下面的 公式成立:
(1)
p (k ) n k k 0 ,1 ,2 ...L 1其 中 L 1 2 5 5 n
公式中:n k 为图像中出现灰度为k的像素数,n是图像像素总数
,而 n k n 即为频数 。
(2)计算累积直方图各项:tki k0n ni i k0pi,k0,1,L1
直方图
直方图是图像的一种统计表达,由一系列高度不等的纵向条纹表示 数据分布的情况。
灰度直方图是灰度级的函数,它表示图象中具有每种灰度级的像 素的个数,反映图象中每种灰度出现的频率。它描述了图像中各种 灰度(对于像素深度为 8 位的图像共有0-255 共256 种取值)在整个 图像中占有的比例。
如下图所示,灰度直方图的横坐标是灰度级,纵坐标是该灰度级 出现的频率(该灰度级的像素个数除以整幅图片的像素个数)。灰 度直方图是图象的最基本的统计特征。
选择菜单View->Graph>Image,做如下设置:
数字图像直方图均衡化增强
实验三 数字图像边缘检测
边缘检测
边缘能勾划出目标物体,使观察者一目了然,边缘蕴含丰富 的内在信息(方向、阶跃性质和形状等)。从本质上说,图像边缘 是图像局部特征不连续性(灰度突变、颜色突变和纹理结构突变 等)的反映,它标志着一个区域的终结和另一个区域的开始。
利用直方图统计的结果,通过使图像的直方图均衡的方法称为直 方图均衡化,直方图均衡化可以达到增强图像显示效果的作用。其 基本思想是把原始图像的直方图变换成均匀分布的形式,这样就增 加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果 。
通过直方图统计,可以观察出,图像中各种亮度所占的比例大都 分布不均匀,设法增加在直方图统计中所占比例高的像素和其他占 的比例少的像素之间的亮度差,可以提高图像的显示效果。简单来 说,直方图增强的方法就是压缩直方图中比例少的像素所占用的灰 度范围,多出来的灰度空间按照统计比例分配给直方图中比例高的 像素使用。这种方法主要是针对人眼对灰度差别越大的图像更容易 分辨的特点而做的增强。
(3)取整扩展:tkinL t [ 1 )t(k 0 .5 ]
(4原理
例如:如果原始图像中某个像素点的灰度级为2,经过直方 图均衡化之后该像素点的灰度级就变成166。
数字图像直方图均衡化增强
选择菜单View->Graph>Image,做如下设置:
选择菜单View->Graph>Image,做如下设置:
边缘提取首先检测出图像局部特征的不连续性,然后再将这
些不连续的边缘像素连成完备的边界。边缘的特征是沿边缘走向 的像素变化平缓,而垂直于边缘方向的像素变化剧烈,所以,从 这个意义上说,提取边缘的算法就是检测出符合边缘特性的边缘 像素的算子。目前提取边缘常采用边缘算子法、曲面拟合法和模 板匹配法等方法。
图像增强——直方图均衡化
图像增强——————直方图均衡化摘要图像增强是指按特定的需要突出一幅图像的某些信息,削弱或消除不需要信息的处理方法。
处理的结果使图像更适合于人的视觉特性或机器的识别系统。
本文主要采用直方图均衡化、中值滤波的方法对图像进行处理,通过对处理结果进行比较,从而加深对图像增强的理解及应用。
一、图像增强在获取图像的过程中,由于多种因素的影响导致图像无法达到令人满意的视觉效果。
对原始图像做一些改善,从而实现人眼观察或者机器自动分析、识别的目的的行为,就叫做图像增强。
图像增强的主要内容⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎧⎪⎪⎪⎩⎪⎪⎪⎨⎧⎪⎪⎩⎪⎪⎨⎧⎪⎩⎪⎨⎧⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧⎩⎨⎧⎪⎪⎩⎪⎪⎨⎧⎩⎨⎧代数运算彩色变换增强彩色平衡假彩色增强常规处理彩色图像增强伪彩色增强彩色增强同态滤波增强低通滤波高通滤波频率域图像锐化图像平滑局部运算局部统计法规定化均衡化直方图修正法灰度变换点运算空间域图像增强二、直方图均衡化1.直方图均衡化是通过累积函数对灰度值进行调整以实现对比度的增强,具体地说就是把给定图像的直方图分布改变成近似均匀分布的直方图。
2.直方图均衡化的过程如下:①计算原图像的灰度直方图;②计算原图像的灰度累积分布函数,进一步求出灰度转换表; ③根据灰度转换表,将原图像各灰度级映射为新的灰度级。
3.直方图均衡化的优点:扩张了像素值的动态范围。
直方图均衡化后,图像的概率密度函数近似服从均匀分布,灰度几乎是均匀的分布在整个范围内,图像明暗分明,对比度很大,图像比较清晰明亮,很好的改善了原始图的视觉效果。
2.1原理及计算过程先讨论连续图像的均衡化问题。
设变量r 和s 代表原图像灰度和经直方图修正后的的图像灰度。
在图像中,像素的灰度级可作归一化处理,这样r,s 的值将限定在下述范围之内:0≤r,s ≤1,r=0代表黑,r=1代表白,可以对[0,1]区间内的任一个值进行如下变换:s=T(r)变换函数T 应满足下列条件:(1)在0≤r ≤1区间内T[r]单值单调增加; (2)对于0≤r ≤1,有0≤s ≤1。
利用直方图均衡化和直方图规定化对图像进行增强
利用直方图均衡化和直方图规定化对图像进行增强利用直方图均衡化和直方图规定化对图像进行增强4.1 利用直方图均衡化对图像进行增强通过灰度变换将一幅图像转换为另一幅具有均衡直方图的图像,即在一定灰度范围内具有相同的象素点数的图像的过程。
其“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。
直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。
主要缺点:1、变换后图像的灰度级减少,某些细节消失;2、某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。
算法如下:为讨论方便,以r 和s 分别表示归一化了的原图像灰度和经直方图修正后的图像灰度。
即1,0≤≤s r在[0,1]内设有变换S=T(r)且该函数单调递增,1)(0≤≤r T ,于是有反变换)(1s T r -=有概率论知,如果已知随即变量r 的概率密度)(r p r ,而随机变量s 是r 的函数。
则s 的概率密度)(s p s 可以有)(r p r 求出。
[])()()()()(1s T ds d r p ds dr r p dr r p ds d s p r r r r s -∞-===?从上式可以看出通过变换函数)(r T 可以控制图像灰度级的概率密度函数,从而改变图像灰度层次,这就是直方图修正技术的基础。
因为归一化规定 1)(=s p s有1式有 dr r p ds r )(=两边积分得 dr r p r T s rr )()(0?==上式就是所求得的变换函数。
它表明当变换函数)(r T 是原图像直方图累积分布函数时,能达到直方图均衡化的目的。
离散形式可表示为:∑∑=====ki i k i i r k k n n r p r T s 00)()(可见均衡后的各像素的灰度值k s 可直接由原图像的直方图算出。
图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)
图像增强算法(直⽅图均衡化、拉普拉斯、Log、伽马变换)⼀、图像增强算法原理图像增强算法常见于对图像的亮度、对⽐度、饱和度、⾊调等进⾏调节,增加其清晰度,减少噪点等。
图像增强往往经过多个算法的组合,完成上述功能,⽐如图像去燥等同于低通滤波器,增加清晰度则为⾼通滤波器,当然增强⼀副图像是为最后获取图像有⽤信息服务为主。
⼀般的算法流程可为:图像去燥、增加清晰度(对⽐度)、灰度化或者获取图像边缘特征或者对图像进⾏卷积、⼆值化等,上述四个步骤往往可以通过不同的步骤进⾏实现,后续将针对此⽅⾯内容进⾏专题实验,列举其应⽤场景和处理特点。
本⽂章是⼀篇综合性⽂章,算是⼀篇抛砖引⽟的⽂章,有均衡化、提⾼对⽐度、降低对⽐度的算法。
1.1 基于直⽅图均衡化的图像增强图像对⽐度增强的⽅法可以分为两种:直接对⽐度增强⽅法,间接对⽐度增强⽅法。
直⽅图拉伸和直⽅图均衡化是常见的间接对⽐度增强⽅法。
直⽅图拉伸是利⽤对⽐度拉伸对直⽅图进⾏调整,扩⼤前景和背景灰度的差别,这种⽅法可以通过线性和⾮线性的⽅法来实现,其中ps中就是利⽤此⽅法提⾼对⽐度;直⽅图均衡化则是利⽤累积函数对灰度值进⾏调整,实现对⽐度的增强。
直⽅图均衡化处理原理:将原始图像的灰度图从⽐较集中的某个灰度区间均匀分布在整个灰度空间中,实现对图像的⾮线性拉伸,重新分配图像像素值。
算法应⽤场景:1、算法的本质是重新分布图像的像素值,增加了许多局部的对⽐度,整体的对⽐度没有进⾏太⼤改变,所以应⽤图像为图像有⽤数据的对⽐度相近是,例如:X光图像,可以将曝光过度或曝光不⾜照⽚进⾏更好的显⽰,或者是背景及前景太亮或太暗的图像⾮常有⽤。
2、算法当然也有缺点,具体表现为:变换后的图像灰度级减少,某些细节减少;某些图像有⾼峰值,则处理后对⽐度不⾃然的过分增强。
算法实现特点:1、均衡化过程:直⽅图均衡化保证在图像像素映射过程中原来的⼤⼩关系保持不变,即较亮的区域依旧较亮,较暗的依旧较暗,只是对⽐度增加,不能明暗颠倒;保证像素映射函数的值域在0和255之间。
图像增强--直方图均衡化
程序课程设计报告2012年 7 月 9 日图像增强专业:*****班级:*****题目:图像增强小组成员: ***指导教师:***时间:2012年6月-7月摘要:图像增强是图像处理的一个重要分支, 它对图像整体或局部特征能有效地改善;直方图是图像处理中最重要的基本概念之一,它能有效地用于图像增强。
本文主要探讨了直方图的理论基础,直方图均衡化的概念及理论,同时用MATLAB语言加以实现, 给出标准的数字图像在各种处理前与处理后的对照图像及直方图。
实验结果表明, 用直方图均衡化的算法, 能有效改善灰度图像的对比度差和灰度动态范围,使处理后的图像视觉效果得以改善。
关键词:图像增强直方图均衡化Abstract: Image enhancement is an important branch of image processing, its image as a whole or partial characteristics can effectively improve. Histogram is one of the most important basic concepts of image processing, it can effectively be used for image enhancement. This paper mainly discusses the theoretical basis of the histogram, histogram equalization, the concepts and theories. We use the MATLAB language and give the standard digital images in various treatment and processing of the control image and histogram. The experimental results show that the histogram equalization algorithm can effectively improve the poor contrast and gray scale dynamic range of the grayscale image, the visual effects of the processed image can be improved. Keywords: Image enhancement Histogram Equalization1 引言图像增强是图像处理中的基本内容之一,在图像处理中占有非常重要的地位。
第三四直方图及直方图的规定化和均衡化PPT学习课件
f (sk )
rk
1
p
r
0
p sk 0
dr
s
ds
2020/2/26
sk ds rk p r dr
0
0
9
直方图均衡原理
• 连续模型下直方图均衡公式:
T rk
rk p r dr
0
• 离散化:
T rk
k
p rj
• 概率分布函数:
2020/2/26
f (rk )
rk p r dr ;
0
f (sk )
sk p s ds
0
8
直素面积 =
原图像在[0,rk]灰 度级范围内像素
f面(rk积) 。0rk p r dr =
sk T rkps
• 步骤3:求步骤2的反变换 ,将原始直方图对 应映射到规定直方图
zk G1(sk ) G1[T (rk )] k 0,1, 2,..., L 1
2020/2/26
17
直方图规定化
zk G1(sk ) G1[T (rk )] k 0,1, 2,..., L 1
分布均匀。
5
直方图均衡
• 基本思想:
– 将原始图直方图变换为在整个灰度范围内均匀分布。
• 目的:
– 增加像素灰度值的动态范围,增强图像整体对比度。
• 思路:
– –
寻要找求灰h%(度sk 映) 为射函均数匀T分(·布),。有
sk T rk
2020/2/26
6
直方图均衡原理
• 灰度映射函数T(·),有sk T rk
数字图像处理 实验 直方图均衡化实现图像增强
XXXXXXXX大学(数字图形处理)实验报告实验名称直方图均衡化实现图像增强实验时间年月日专业姓名学号预习操作座位号教师签名总评一、实验目的:掌握直方图均衡化的原理。
掌握直方图均衡化实现图像增强的实现方法。
二、实验原理:直方图是统计像数统计图,如设一张灰度图或一个通道,值0~255。
直方图如果按。
255个区分的话。
统计出来的就是,值为。
0的有几个像数,值为1的有机个像数,这样的一张表。
那么均衡化的意思就是。
这样表要均衡。
不直不于。
0有上万个像数,1只有1 个。
正常,直方图本身可以用小于255个区。
比如10个,那么这样相对图中的点就有一个映射,这时值0-9统计落在第一个区,值为10-19落第二个区。
这样的结果就会出来,10个区,10个统计数区。
这时。
你均衡就是让10区的统计数据都不会差很多。
表现出来的就是一张图上的颜色分布相对均衡。
总的来说直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。
三、实验内容:利用直方图均衡化实现图像增强。
在资源编辑器中,在主菜单下添加一名为“直方图均衡化”的菜单步骤如前面实验。
实验代码如下:if(m_DibHead->biBitCount!=8){MessageBox("当前版本仅支持256色位图的操作!","系统提示!",MB_ICONINFORMA TION|MB_OK);return;}zftjh(m_Image,m_DibHead->biWidth,m_DibHead->biHeight);Invalidate();其中函数zftjh的实现代码如下: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];}}原图为下图的左边部分,均值化以后的图为右边的部分:。
直方图均衡化算法-Read.PPT
0.5
S=kr+b 0
0.5
1
(d)反转函数
(d)反转效果
(c)变换结果
图6-21 不同线性灰度变换 效果的比较
非线性单调点变换
L-1
s
0 r
图6-22非线性点运算
T(r)=r+kr(L-r)
L-1
(6-34)
S型函数
指数变换
s=cy
(6-38)
c和y为常数。
当 1时,具有扩展低亮度区、压缩高亮度区的
输出图像灰度概率密度数学模型
均匀 (Uniform)
指数 (Exponitial)
瑞利 (Raleigh)
双曲线 (立方根) (Hyperbolic)
双曲线(对数)
转移函数
直方图规定化算法
设Pf(fi)原始图像直方图,Pz(zi)期望输出图像的直方图, fj, zi [0,L-1]。
1.分别对 Pf(fj), Pz(zi)作均衡化处理, fj gm, zi yn;
gi=INT[(gmax-gmin)c(f)+gmin+0.5] 6.统计映射后各灰度级的象素数目ni, i=0,1,…,p-1; 7.计算输出图像直方图Pg(gi)= nj/n,i=0,1,…,p-1; 8.用fj和gi的映射关系,修改原始图像灰度级,获得直方图近似均匀分布 的输出图像。
Байду номын сангаас
典型直方图变换的转移函数
2.在 gm yn 处组合, Pf(fi) Pz(zi)。 gm=T(fj), yn=G(zi), gm yn, zi=G-1[T(fj)]
6.2.4小结
■ 点运算是对图像的灰度级进行变换; ■ 点运算可用于光度学校正、显示校正、图像增强和直方图
《直方图的均衡化》课件
直方图均衡化的效果评估
直方图均衡化的效果可以通过比较处理前后的直方图、对比度和视觉效果来 评估,通常希望处理后的图像具有更均匀的像素值分布和更好的对比度。
结论和总结
直方图的均衡化是一种有效的图像增强技术,在图像处理和计算机视觉中具有广泛的应用,能够改善图 像的质量和视觉效果。
《直方图的均衡化》PPT 课件
直方图的均衡化是什么
直方图的均衡化是一种图像增强技术,通过调整图像的亮度分布,使得图像中的像素值更均匀地分布在 整个灰度范围内,从而改善图像的对比度和视觉效果。
直方图的基本概念
直方图是用于表示图像中像素值分布的统计图,横坐标表示像素值,纵坐标 表示该像素值对应的像素数量。
直方图的均衡化原理
直方图均衡化的原理是通过对图像的像素值进行变换,使得原始图像的像素值分布更均匀,同时增强图 像的对比度。
直Байду номын сангаас图均衡化的应用场景
直方图均衡化广泛应用于图像增强、图像处理、计算机视觉等领域,可以改 善图像的质量、增强图像的细节和对比度。
直方图均衡化的步骤
直方图均衡化的步骤包括计算原始图像的像素值累计分布函数、对像素值进 行映射,以及将映射后的像素值替换到原始图像中。
利用直方图均衡化进行图像的增强[正文、开题、任务、翻译]
BI YE SHE JI 利用直方图均衡化进行图像的增强院(系):计算机科学与工程专业:计算机科学与技术班级:学生:学号:指导教师:任务书1.毕业设计(论文)题目:利用直方图均衡化进行图像的增强2.题目背景和意义:图像增强是数字图像处理技术中最基本的内容之一,是图像预处理方法之一,图像预处理是相对于图像识别、图像理解而言的一种前期处理,直方图均衡化就是把一已知灰度概率分布的图像经过一种变换,使之演变成一副具有均匀灰度概率分布的新图像。
清晰柔和的图像的直方图分布比较均匀。
为了使图像变得清晰,通常可以通过变换使图像的灰度动态范围增大,并且让灰度频率较小的灰度级经变换后,其频率变得大一些,使变换后的图像灰度直方图在较大的动态范围内趋于均化。
直方图均衡化处理是一种修改图像直方图的方法,它通过对直方图进行均衡化修正,可使图像的灰度间距增大或灰度均匀分布、增大反差,使图像的细节变得清晰。
本课题就是利用直方图均衡化进行图像的增强。
3.设计(论文)的主要内容(理工科含技术指标):主要内容有:(1)了解、熟悉并掌握图像直方图、图像增强的概念。
(2)给一副图像,能够得到图像的直方图,并能够对图像进行直方图的均衡化,进而对图像进行增强,掌握其原理并实现其过程。
(3)完成不同色彩空间下均衡化效果的优劣对比,给出一个较好的均衡化算法。
(4)完成1.5万字毕业论文,完成与课题相关的外文资料的翻译。
4.设计的基本要求及进度安排(含起始时间、设计地点):本次课题从2012年12月开始,在校内完成,具体的进度安排如下:第1~3周:查阅书籍资料,学习相关软件,准备开题报告。
第4周:分析设计任务,设计总体方案,研究算法。
第5~12周:模块设计、完成3000个单词以上的相关外文资料翻译;中期总结。
第13~15周:模块设计、系统调试。
第16~17周:系统测试、撰写毕业论文第18周:对论文排版和打印,制光盘;论文答辩。
5.毕业设计(论文)的工作量要求① 实验(时数)*或实习(天数):② 图纸(幅面和张数)*:③ 其他要求:指导教师签名:年月日学生签名:年月日系(教研室)主任审批:年月日说明:1本表一式二份,一份由学生装订入附件册,一份教师自留。
直方图均衡化
直⽅图均衡化今天学习了下直⽅图均衡化的原理。
先来看看维基百科上的⼀个例⼦: 从这张未经处理的灰度图可以看出,其灰度集中在⾮常⼩的⼀个范围内。
这就导致了图⽚的强弱对⽐不强烈。
直⽅图均衡化的⽬的,就是使得灰度分布尽可能平均地“填满”整个灰度空间(0~255),就是做到直⽅图的上界是⼀条平⾏于X轴的直线(理想化)。
有了这个⽬标之后,开始推导。
这个推导过程从连续函数出发。
第⼀步:建⽴⼀个从灰度r到s的映射s=T(r)第⼆步:将均衡化后的直⽅图的分布H B 表⽰成原图灰度分布H A 的函数 --> H B(s)=H A(r)/T(r),原理见下。
第三步:理想化的灰度分母应为常数,得T(r)=k*H A(r),不妨另:k=C/A o .(A o为所有像素数)第四步:两边同时积分(0->L),由密度函数的归⼀化条件得 : s=T(L)=C,因为s取值也是0->L,所以C=L。
第五步:把连续函数写成离散形式以适应计算机的处理。
(写出来⼤概就是这样,⾃⼰也能理解,但是总是感觉怪怪的) 可以看出,直⽅图均衡化只是将直⽅图进⾏了伸缩变换,或者说是⼀个搬移。
将变化律低的部分挤压,将变化率⾼的部分拉伸,得到⼀个两边变化陡峭中间平滑的灰度分布(单峰的话就很明显)。
可以看看维基百科上直⽅图均衡化之后的例⼦: 通过观察可以发现,由于中间部分灰度被拉伸了,灰度的取值变得不是很“连续”。
这个就是直⽅图均衡化的⼀个缺点吧。
(其实是离散的问题)———————————————————————————————————————————————————————————————————————————————闲着⽆聊搞了个最简单的直⽅图均衡化⼩程序,⼤家可以⾃⼰拿去试⼀下。
接下来的计划是做⾃适应直⽅图均衡化和对⽐对限制的直⽅图均衡化。
代码:#include <iostream>#include <string>#include <io.h>#include <opencv2/opencv.hpp>#include<math.h>#include<cv.h>using namespace std;using namespace cv;void main(int argc, char** argv){//变量定义//图⽚类IplImage *src , *dst;IplImage *histframesrc , *histframedst;CvSize size;//直⽅图类CvHistogram *histo_src , *histo_dst;int scale;float histmin,histmax;int bins=256;float range[]={0,255};float *ranges[]={range};//杂家int i,j,k,m,n; //循环变量……⽽已float s_r[256]; //S(r)映射函数//---------------------------------------------------------------src=cvLoadImage("11.jpg",0); //图⽚变量初始化cvShowImage("src",src);size=cvGetSize(src);dst=cvCreateImage(size,8,1);histo_src=cvCreateHist(1,&bins,CV_HIST_ARRAY,ranges); //直⽅图初始化histo_dst=cvCreateHist(1,&bins,CV_HIST_ARRAY,ranges);cvCalcHist(&src,histo_src,0,0); //计算直⽅图cvNormalizeHist(histo_src,1); //归⼀//累加,求S(r)映射s_r[0]=cvQueryHistValue_1D(histo_src,0);for(i=1;i<=255;i++){s_r[i]=s_r[i-1]+cvQueryHistValue_1D(histo_src,i);}//当然要把是S(r)归⼀到255啦for(i=0;i<=255;i++){s_r[i]=cvRound(s_r[i]*255);}//遍历图像并由sr关系进⾏直⽅图均衡化啦CvScalar s;for(m=0;m<size.height;m++){for(n=0;n<size.width;n++){s=cvGet2D(src,m,n);i=s.val[0];i=s_r[i];s.val[0]=i;cvSet2D(dst,m,n,s);}}//计算dst直⽅图cvCalcHist(&dst,histo_dst,0,0);cvNormalizeHist(histo_dst,1);//SHOWOFF⼀下啦cvShowImage("dst",dst);scale=1;//画出src和dst的直⽅图histframesrc=cvCreateImage( cvSize(bins*scale,256),8,1);histframedst=cvCreateImage( cvSize(bins*scale,256),8,1);//src的cvGetMinMaxHistValue(histo_src , &histmin , &histmax , 0 , 0 );for(int i = 0; i < bins; i++){/** 获得直⽅图中的统计次数,计算显⽰在图像中的⾼度 */float bin_val = cvGetReal1D(histo_src->bins,i);bin_val=bin_val*255/histmax;s.val[0]=cvRound(bin_val);cvRectangle(histframesrc,cvPoint(i*scale,256),cvPoint((i+1)*scale,256-bin_val),s,-1,8,0); }cvShowImage("src's hisogram",histframesrc);//dst的cvGetMinMaxHistValue(histo_dst , &histmin , &histmax , 0 , 0 );for(int i = 0; i < bins; i++){/** 获得直⽅图中的统计次数,计算显⽰在图像中的⾼度 */float bin_val = cvGetReal1D(histo_dst->bins,i);bin_val=bin_val*255/histmax;cout<<bin_val<<"\t";s.val[0]=cvRound(bin_val);cvRectangle(histframedst,cvPoint(i*scale,256),cvPoint((i+1)*scale,256-bin_val),s,-1,8,0); }cvShowImage("dst's hisogram",histframedst);//输出sr试⼀下for(i=0;i<=255;i++)cout<<s_r[i]<<"\n";for(;;)if(cvWaitKey(0)==27)break;}结果:(直⽅图变得平缓了但是中间部分变得稀疏了)。
