直方图规定化过程
- 格式:xls
- 大小:56.50 KB
- 文档页数:2
图像处理基础(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 ,要计算直⽅图的通道个数。
【数字图像处理】直⽅图的均衡与规定化很多情况下,图像的灰度级集中在较窄的区间,引起图像细节模糊。
通过直⽅图处理可以明晰图像细节,突出⽬标物体,改善亮度⽐例关系,增强图像对⽐度。
直⽅图处理基于概率论。
直⽅图处理通常包括直⽅图均衡化和直⽅图规定化。
直⽅图均衡化可实现图像的⾃动增强,但效果不易控制,得到的是全局增强的结果。
直⽅图规定化可实现图像的有选择增强,只要给定规定的直⽅图,即可实现特定增强的效果。
直⽅图均衡化直⽅图均衡化借助灰度统计直⽅图和灰度累积直⽅图来进⾏。
灰度统计直⽅图灰度统计直⽅图反映了图像中不同灰度级出现的统计情况。
灰度统计直⽅图是⼀个⼀维离散函数,可表⽰为h (k )=n k ,k =0,1,...L −1,其中k 为某个灰度级,L 为灰度级的数量,最⼤取256,n k 为具有第k 级灰度值的像素的数⽬。
灰度直⽅图归⼀化概率灰度统计直⽅图的归⼀化概率表达形式给出了对s k 出现概率的⼀个估计,可表⽰为p s (s k )=n k /N ,k =0,1,2..,L −1式中,k 为某个灰度级;L 为灰度级的数量,最⼤取256;s k 为第k 级灰度值的归⼀化表达形式,s k =k /255,故s k ∈[0,1];n k 为具有第k 级灰度值的像素的数⽬;N 为图像中像素的总数,故(n k /N )∈[0,1]。
灰度累计直⽅图灰度累积直⽅图反映了图像中灰度级⼩于或等于某值的像素的个数。
灰度累积直⽅图是⼀个⼀维离散函数,可表⽰为H (k )=k ∑i =0n i ,k =0,1,2..,L −1式中,k 为某个灰度级;L 为灰度级的数量,最⼤取256;n i 为具有第i 级灰度值的像素的数⽬。
累积分布函数可以表⽰为:t k =k ∑i =0p s (s i )相对的,灰度累积直⽅图的归⼀化表⽰如下图:Processing math: 100%原理步骤直⽅图均衡化主要⽤于增强动态范围偏⼩的图像的反差。
图像直方图知识点总结1. 直方图的概念直方图是一种统计图形,是将图像中各个灰度级别的像素数量统计出来后,以灰度级别为横坐标,像素数量为纵坐标绘制成的图形。
直方图能够直观地展示图像中像素的分布情况,可以反映图像亮度的均匀性、对比度等信息。
通过直方图,我们可以了解到图像中的主要亮度分布情况,并据此进行图像的处理。
2. 直方图的特性直方图主要包括以下几个特性:(1)灰度级别:直方图横坐标表示了图像的灰度级别,通常在0-255之间,其中0表示最暗的像素,255表示最亮的像素。
(2)像素数量:直方图纵坐标表示了该灰度级别下的像素数量,能够反映出图像中各个灰度级别的像素分布情况。
(3)峰值:直方图中的峰值表示了图像中主要的亮度分布情况,峰值越高则表示该亮度级别下的像素越多。
(4)对比度:直方图的分布情况能够反映出图像的对比度,对比度越大则直方图中的峰值越明显。
3. 直方图的应用直方图在图像处理中有着广泛的应用,主要包括以下几个方面:(1)图像增强:通过对直方图进行均衡化等处理,可以增强图像的对比度,使图像更加清晰。
(2)图像分割:通过直方图可以找到图像中不同区域的亮度分布情况,从而进行图像的分割处理。
(3)图像压缩:通过对直方图进行统计分析,可以找到图像中重复出现的像素,从而进行有效的图像压缩。
(4)图像识别:通过对直方图进行特征提取,可以对图像进行识别和分类。
4. 直方图均衡化直方图均衡化是一种常用的图像增强方法,通过对图像的直方图进行调整,使得图像的像素分布更加均匀,提高了图像的对比度和视觉效果。
直方图均衡化主要包括以下几个步骤:(1)计算灰度频率:首先需要统计图像中各个灰度级别的频率,得到原始直方图。
(2)计算累积频率:对原始直方图进行累积求和等处理,得到各个灰度级别的累积频率。
(3)灰度映射:根据累积频率进行灰度级别的映射,得到新的直方图。
(4)图像重构:根据新的直方图对图像像素进行重构,得到均衡化后的图像。
直方图规定化直方图规定化是指将一幅图像的像素值分布规定到另一幅图像的像素值分布上的过程。
其基本思想是通过将目标图像的像素值分布函数变换为规定分布函数,再将原始图像的像素值进行相应的变换,从而实现两幅图像的像素值分布逼近或一致。
直方图规定化可以用于图像处理的许多应用,例如图像增强、图像融合、图像匹配等。
下面将详细介绍直方图规定化的原理和实现步骤。
直方图规定化的原理如下:1. 给定一幅原始图像和一幅目标图像,分别计算它们的像素值频率分布函数H1(i)和H2(i)。
2. 对于每一个像素值i,计算原始图像和目标图像的积累密度函数C1(i)和C2(i)。
3. 构造映射关系,将原始图像的像素值映射到目标图像的像素值上。
可以通过计算C1(i)和C2(i)的差值,得到原始图像像素值i在目标图像上的对应像素值j。
4. 使用这个映射关系,对原始图像的每个像素值i进行变换,得到规定化后的图像。
直方图规定化的实现步骤如下:1. 计算原始图像和目标图像的像素值频率分布函数H1(i)和H2(i)。
2. 对原始图像和目标图像的分布函数进行归一化处理,得到归一化分布函数P1(i)和P2(i)。
3. 计算归一化分布函数的积累密度函数C1(i)和C2(i)。
4. 对于每一个像素值i,计算C1(i)和C2(i)之间的差值。
5. 找到C2(i) - C1(i)绝对值的最小值,并记录对应的像素值j。
6. 将原始图像的像素值i映射到目标图像的像素值j。
7. 使用这个映射关系,对原始图像的每个像素值i进行变换,得到规定化后的图像。
直方图规定化要求原始图像和目标图像的像素值范围相同,并且分布函数的积累密度函数单调递增。
如果原始图像和目标图像的像素值范围不同,可以通过直方图均衡化等方法进行一定的预处理。
在实际应用中,直方图规定化是一个重要的图像处理技术,可以根据目标图像的特点调整原始图像的像素值分布,从而实现图像的增强和融合效果。
此外,直方图规定化还可以用于图像匹配,将不同图像的像素值分布规定为一致,方便后续的图像匹配和目标检测等任务。
第章 图像增强 4122.2.4 增强整幅图像的对比度,但它的具体增强效果不易控制,处理的结果总是得到近似均匀分布的直方图。
实际应用中,在不同的情况下,并不总是需要具有均匀直方图的图像,即希望找到灰度变换函数,使原直方图即是找一种变换,使得原图像r 之间的是直()d r 直方图规定化直方图均衡化的优点是能有时要求突出图像中人们感兴趣的灰度范围,图像的直方图变成所要求的特定形状,从而有选择地增强某个灰度值范围内的对比度。
直方图规定化就是针对上述要求提出来的一种直方图修正方法。
实际上,直方图均衡化是直方图规定化中给定直方图为均匀分布的一种特例。
下面仍然从研究连续灰度的概率密度函数入手来讨论直方图规定化的基本思想。
设()r p r 是待增强的原始图像的灰度分布概率密度函数,()z p z 是直方图规定化后的新图像(即希望得到的图像)的灰度分布概率密度函数。
规定化经变换后,变成了具有灰度分布概率密度函数()z p z 的新图像。
如何建立()z p z 和p ()r 联系方图规定化处理的关键。
首先对原始图像进行直方图均衡化处理,即()r 0s T r p ==∫ ()x x 2-16灰度分布概率密度函数为,并对其作直方图均衡化处理,即为 ()z p z 假定已经得到了所希望的规定化后的图像,其也0()()d z u G z p x x ==∫ (2-17)式(2-17)的反变换函数z 1()z G u −= (2-18)根据前面关于连续图像直方图均衡化的讨论,若对原始图像和期望图像都进行一次直方图均衡化处理,将会得到相同的归一化均匀灰度分布的概率密度函数,即()()1s u p s p u ==(2-19) 也就是说,均匀分布的随机变量s 和u 有完全相同的统计特性。
换句话说,在统计意义上说,它们是完全相同的。
为此,可用s 来代替式(2-18)中的u ,即)11()(G u G s −−== z (2-20) 这样,得到的灰度值z 便是所希望的规定化后的图像的灰度值。
数字图像处理实验报告直方图匹配规定化直方图均衡化能够自动增强整个图像的对比度,但它的具体增强效果不容易控制,处理的结果总是得到全局均匀化的直方图。
实际上有时需要变换直方图,使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度。
这时可以采用比较灵活的直方图规定化。
一般来说正确地选择规定化的函数可以获得比直方图均衡化更好的效果。
所谓直方图规定化,就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。
所以,直方图修正的关键就是灰度映像函数。
直方图匹配方法主要有3个步骤(这里设M和N分别为原始图和规定图中的灰度级数,且只考虑N≤M的情况):(1) 如同均衡化方法中,对原始图的直方图进行灰度均衡化:(2) 规定需要的直方图,并计算能使规定的直方图均衡化的变换:(3) 将第1个步骤得到的变换反转过来,即将原始直方图对应映射到规定的直方图,也就是将所有pf(fi)对应到pu(uj)去。
一、A图直方图规定B图Matlab程序:%直方图规定化clear allA=imread('C:\Users\hp\Desktop\A.tif'); %读入A图像imshow(A) %显示出来title('输入的A图像')%绘制直方图[m,n]=size(A); %测量图像尺寸B=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255B(k+1)=length(find(A==k))/(m*n); %计算每级灰度出现的概率,将其存入B中相应位置endfigure,bar(0:255,B,'g'); %绘制直方图title('A图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])C=imread('C:\Users\hp\Desktop\B.tif');%读入B图像imshow(C) %显示出来title('输入的B图像')%绘制直方图[m,n]=size(C); %测量图像尺寸D=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255D(k+1)=length(find(C==k))/(m*n); %计算每级灰度出现的概率,将其存入D中相应位置endfigure,bar(0:255,D,'g'); %绘制直方图title('B图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])S1=zeros(1,256);for i=1:256for j=1:iS1(i)=D(j)+S1(i); %计算B灰度图累计直方图endendcounts=Bfigure,bar(0:255,counts,'r')title('A图像直方图 ')S2=zeros(1,256);for i=1:256for j=1:iS2(i)=counts(j)+S2(i);endend; %"累计"规定化直方图%对比直方图,找到相差最小的灰度级for i=1:256for j=1:255if S1(j)<=S2(i)&S1(j+1)>=S2(i)if abs(S1(j)-S2(i))<=abs(S1(j+1)-S2(i)) T(i)=j;else T(i)=j+1;endendendend%确定变换关系,重组直方图H=zeros(1,256);H(1)=S2(1);for i=2:255if T(i-1)>0for k=(T(i-1)+1):T(i)H(i)=H(i)+D(k);endelse H(i)=0;endendfigure,bar(0:255,H,'g') %显示规定化后的直方图title('A规定B后的直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.6])%显示规定图PA=C; %将各个像素归一化后的灰度值赋给这个像素for i=1:mfor j=1:nfor k=2:255if T(k-1)<=C(i,j)&C(i,j)<=T(k)PA(i,j)=k;break;endendendendfigure,imshow(PA) %显示规定化后的图像title('A规定B后图像')imwrite(PA,'guidinghua.bmp');二、用已知直方图规定A图规定灰度为[zeros(1,49),0.3,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.1,zeros(1,49 ),0.2,zeros(1,49),0.1]Matlab程序:clear allA=imread('C:\Users\hp\Desktop\B.tif'); %读入A图像imshow(A) %显示出来title('输入的A图像')%绘制直方图[m,n]=size(A); %测量图像尺寸B=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255B(k+1)=length(find(A==k))/(m*n); %计算每级灰度出现的概率,将其存入B中相应位置endfigure,bar(0:255,B,'g'); %绘制直方图title('A图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])S1=zeros(1,256);for i=1:256for j=1:iS1(i)=B(j)+S1(i); %计算原灰度图累计直方图endendcounts=[zeros(1,49),0.3,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.1,zer os(1,49),0.2,zeros(1,49),0.1];%规定化直方图figure,bar(1:300,counts,'r')title('规定化直方图')S2=zeros(1,256);for i=1:256for j=1:iS2(i)=counts(j)+S2(i);endend; %"累计"规定化直方图%对比直方图,找到相差最小的灰度级for i=1:256for j=1:256if S1(j)<=S2(i)&S1(j+1)>=S2(i)if abs(S1(j)-S2(i))<=abs(S1(j+1)-S2(i)) T(i)=j;else T(i)=j+1;endendendend%确定变换关系,重组直方图H=zeros(1,256);H(1)=S2(1);for i=2:256if T(i-1)>0for k=(T(i-1)+1):T(i)H(i)=H(i)+B(k);endelse H(i)=0;endendfigure,bar(0:255,H,'g') %显示规定化后的直方图title('规定化后的直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.6])%显示规定图PA=A; %将各个像素归一化后的灰度值赋给这个像素for i=1:mfor j=1:nfor k=2:256if T(k-1)<=A(i,j)&A(i,j)<=T(k)PA(i,j)=k;break;endendendendfigure,imshow(PA) %显示规定化后的图像title('规定化后图像')imwrite(PA,'guidinghua.bmp');。
《数字图像处理》实验报告(二)学号:____________ 姓名:__________ 专业:____ 课序号:__________计算机科学与技术学院实验2直方图均衡化一、实验学时:4学时(本部分占实验成绩的40%)二、实验目的:1、理解直方图均衡化的原理及步骤;2、编程实现图像(灰度或彩色)的直方图均衡化。
三、必须学习和掌握的知识点:直方图均衡化是一种快速有效且简便的图像空域增强方法,在图像处理中有着非常重要的意义,因此要求掌握。
四、实验题目:编程实现灰度图像的直方图均衡化处理。
要求给出原始图像的直方图、均衡化图像及其直方图和直方图均衡化时所用的灰度级变换曲线图。
五、思考题:(选做,有加分)实现对灰度图像的直方图规定化处理。
六、实验报告:请按照要求完成下面报告内容并提交源程序、可执行程序文件和实验结果图像。
1、请详细描述本实验的原理:1.直方图均衡化概述图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。
直方图拉伸和直方图均衡化是两种最常见的间接对比度增强方法。
直方图拉伸是通过对比度拉伸对直方图进行调整,从而“扩大”前景和背景灰度的差别,以达到增强对比度的目的,这种方法可以利用线性或非线性的方法来实现;直方图均衡化则通过使用累积函数对灰度值进行“调整”以实现对比度的增强。
直方图均衡化的英文名称是Histogram Equalization.直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。
这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。
通过这种方法,亮度可以更好地在直方图上分布。
这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。
2基本思想直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
直方图规定化计算直方图规定化是一种图像处理技术,通过对图像的亮度分布进行调整来改变图像的视觉效果。
它可以用于增强图像的对比度和细节,使图像更加清晰和易于观察。
在直方图规定化过程中,我们需要计算原始图像和目标图像的累积分布函数,并将原始图像的像素值映射到目标图像的像素值。
首先,我们需要计算原始图像的直方图。
直方图是一个反映图像亮度分布的统计图,它描述了图像中各个亮度级别的像素数量。
我们可以通过统计图像中每个像素值的出现次数来得到直方图。
然后,我们将直方图进行归一化,以便进行比较和计算。
接下来,我们计算原始图像直方图的累积分布函数(CDF)。
CDF描述了累积到某个亮度级别的像素数量与图像总像素数量之间的关系。
通过计算CDF,我们可以得到原始图像的亮度累积分布。
同样,我们也需要计算目标图像的直方图和CDF。
然后,我们使用原始图像的CDF和目标图像的CDF来计算映射函数。
映射函数将原始图像的像素值映射到目标图像的像素值。
在计算映射函数时,我们可以使用线性插值方法,即通过对两个CDF之间的差异进行比例缩放来得到映射函数。
这样,我们就可以将原始图像的每个像素值映射到目标图像的相应像素值。
最后,我们将经过映射函数处理的原始图像和目标图像进行比较。
通过观察比较后的图像,我们可以看到一些改进的细节和对比度。
如果比较后的图像满足我们的期望,那么我们就可以将规定化后的图像保存下来。
直方图规定化是一种非常有用的图像处理技术,它可以用于改善图像的质量和视觉效果。
通过调整图像的亮度分布,我们可以增强图像的对比度和细节,使其更加清晰和易于观察。
同时,直方图规定化还可以用于图像的风格转换和图像的特征提取等应用领域。
在实际应用中,直方图规定化往往需要一定的计算时间和处理能力。
对于大尺寸的图像和高分辨率的图像,计算直方图和累积分布函数需要耗费较多的时间和计算资源。
因此,在实际应用中,我们需要根据具体需求和计算能力选择合适的图像处理方法和算法,以获得满意的结果。
58表3.3.1所示是以上直方图均衡化的运算步骤和结果(其中第4步的取整表示取方括号中实数的整数部分)。
表3.3.1 直方图均衡化计算列表序号运算步骤和结果1 列出原始图灰度级f,f = 0, 1,…, 7 0 123456 72 列出原始直方图0.020.050.090.120.140.2 0.22 0.163 用式(3.3.4)计算原始累积直方图0.020.070.160.280.420.62 0.84 1.004 取整g = int[(L–1)g f + 0.5]0 0 1 2 3 4 6 75 确定映射对应关系(f→g)0, 1 → 0 2 →13→24→35→ 46 → 67 → 76 计算新直方图0.070.090.120.140.2 0 0.22 0.16由表3.3.1可见,原始直方图的一些不同灰度有可能映射到均衡化直方图的同一个灰度,所以均衡化直方图中实际使用的灰度级数有可能比原始直方图的灰度级数少。
例3.3.3 直方图均衡化效果实例图3.3.5所示是直方图均衡化的一个实例。
图3.3.5(a)和图3.3.5(b)分别为一幅8 bit灰度级的原始图像和它的直方图。
这里原始图像较暗且动态范围较小,反映在直方图上就是其直方图所占据的灰度值范围比较窄且集中在低灰度值一边。
图3.3.5(c)和图3.3.5(d)分别为对原始图进行直方图均衡化得到的结果及其对应的直方图,现在直方图占据了整个图像灰度值所允许的范围。
由于直方图均衡化增加了图像灰度动态范围,所以也增加了图像的对比度,反映在图像上就是图像有较大的反差,许多细节可看得比较清晰了。
但需要注意,直方图均衡化在增强反差的同时也增加了图像的可视粒度,即图像中有许多粗颗粒的像素团出现。
(a)(b)(c)(d)图3.3.5 直方图均衡化实例3.3.2 直方图规定化直方图均衡化的优点是能自动地增强整个图像的对比度,计算过程中没有用户可以调整的参数。