图像直方图均衡化的程序设计

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

1 前言

灰度直方图是图像的一种统计表达,它反映了该图中不同灰度级出现的统计概率。由于图像的视觉效果与直方图有对应关系,即直方图的形状和改变对视觉的感知影响很大,因此采用直方图变换的方式可以增强图像。

图像增强是指对图像的某些特征,如边缘、轮廓或对比度等进行强调或尖锐化。当一幅图像曝光不足或过度,造成对比度过小或过大而不能显示具体细节,通过增加这些细节的动态范围改善图像的视觉效果。图像增强可以突出图像中所感兴趣的特征信息,改善图像的主观视觉质量,提高图像的可懂度。

增强的首要目标是处理图像,使其比原始图像更适合于特定应用。图像增强的方法分为两大类:空间域方法和频域方法。“空间域”一词是指图像平面本身,这类方法是以对图像的像素直接处理为基础的。“频域”处理技术是以修改图像的傅氏变换为基础的。一般说来,原始遥感数据的灰度值范围都比较窄,这个范围通常比显示器的显示范围小的多。增强处理可将其灰度范围拉伸到0-255 的灰度级之间来显示,从而使图像对比度提高,质量改善。增强主要以图像的灰度直方图最为分析处理的基础。直方图均衡化能够增强整个图像的对比度,提高图像的辨析程度,算法简单,增强效果好。

2 直方图基础

灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像元的个数。确定图像像元的灰度值范围,以适当的灰度间隔为单位将其划分为若干等级,以横轴表示灰度级,以纵轴表示每一灰度级具有的像元数或该像元数占总像元数的比例值,做出的条形统计图即为灰度直方图。

设r 和S 分别表示归一化了的原图像灰度和经直方图修正后的图像灰度。即

0≤r,S≤1

对[0,1]区间内的任一个r 值都可产生一个S 值,且

S=T(r)

T(r)为变换函数。T(r)满足下列条件:

a. 在 0≤r≤1 区间内是单值单调增加函数;

b. 对于 0≤r≤1,有0≤T(r)≤1。

条件a 保证灰度级从黑到白的次序,而条件b 确保映射后的像素灰度在允许的范围内。

从S 到r 的反变换关系为

r=1-T(S)

1-

T(S)对r 同样满足上述条件。

由概率论知,若Pr(r)和变换函数S=T(r)已知,1-T(S)是单值单调增加函数,则变换后的概率密度函数Ps(S)如下式所示:

Ps(S)=[ Pr(r)dr/dS]r= 1-T(S)

直方图修正从本质上说就是从T(r)入手,调整图像的概率密度函数从而改变图像的特征。

一般来说,如果图像的直方图轮廓线越接近正态分布,则说明图像的亮度接近随机分布,适合用统计方法处理,这样的图像一般反差适中;如果直方图峰值位置偏向灰度值大的一边,图像偏亮;如果峰值位置偏向灰度值小的一边,图像偏暗;峰值变化过陡、过窄,则说明图像的灰度值过于集中,后三种情况均存在反差小、质量差的问题。直方图分析是图像分析的基本方法,通过有目的地改变直方图形态可改善图像的质量。

3 直方图均衡化

大多数原始的遥感图像由于其灰度分布集中在较窄的范围内,使图像的细节不够清晰,对比度较低。为了使图像的灰度范围拉开或使灰度均匀分布,从而增大反差,使图像细节清晰,以达到增强的目的,通常采用直方图均衡化及直方图规定化两种变换。本文主要介绍直方图均衡化并进行实验。

3.1直方图均衡化的概念

直方图均衡化(Histogram Equalization)又称直方图平坦化,实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致相等。这样,原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小的话,会产生粗略分类的视觉效果。

3.2直方图均衡化理论

假设灰度级为归一化至范围[0,1]内的连续量,并令Pr (r)表示某给定图像中的灰度级的概率密度函数(PDF),其下标用来区分输入图像和输出图像的PDF。假设我们对输入灰度级执行如下变换,得到(处理后的)输出灰度级s:

S=T(r)=∫0

r Pr(w)dw

式中w 是积分的哑变量。可以看出,输出灰度级的概率密度函数是均匀的,即

a.当0≤s≤1 时,Ps(s)=1

b.当s 为其他时,Ps(s)=0

换言之,前述变换生成一幅图像,该图像的灰度级较为均衡化,且覆盖了整个范围[0,1]。灰度级均衡化处理的最终结果是一幅扩展了动态范围的图像,它具有较高的对比度。该变换函数只不过是一个累积分布函数(CDF)。

3.3直方图均衡化算法

直方图均衡化算法将原图像的直方图改变为在整个灰度范围内基本均匀地分布的形式,由此扩大了像素灰度的动态范围,从而增强了图像的对比度。直方图均衡化算法步骤为:

S(k=0,1,…,L-1)。

1) 给出原始图像的所有灰度级

k

n。

2) 统计原始图像各灰度级的像素数

k

3) 根据原图像,计算灰度直方图:

()k k n P S n

= (k=0,1,…,L-1) 式中,n 为总像素数,k n 为灰度级k S 的像素数。

4) 计算原始图像的累积直方图:

00()()k

k i E k s i i i n t EH S P S n =====∑∑ (01k S ≤≤,k=0,1,…,L-1)

5) 取整计算:

int[(1)]k k k U N t N

=-+ 6) 确定映射关系:

k k S U →

7) 统计新直方图各灰度级k U 的像素数目k n 。

8) 计算新的直方图:

()k k n P t n

=

4Matlab实现

选择一幅256级的灰度图像,计算该图像的直方图,得到其直方图图形,根据图像直方图的均衡化原理进行直方图均衡化,保存变换后的图像,并显示均衡化后的直方图,程序代码如下:

I=imread('1.bmp');

figure;

subplot(2,2,1),imshow(I);title('原图');

[m,n]=size(I);

GP=zeros(1,256);

for k=0:255

GP(k+1)=length(find(PS==k))/(m*n);

end

subplot(2,2,2),bar(0:255,GP,'g')

title('原图像直方图')

xlabel('灰度值')

ylabel('出现概率')

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

subplot(2,2,3),bar(0:255,GPeq,'b')

title('均衡化后的直方图')

xlabel('灰度值')

相关文档
最新文档