综合课程设计_图像直方图均衡化的程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专业综合课程设计任务书
学生姓名: 吕义斌专业班级: 电信1102 班
指导教师: 李达工作单位: 信息工程学院
题目1:图像直方图均衡化的程序设计
初始条件:
(1)提供实验室机房及其matlab软件;
(2)数字图像处理的基本理论学习。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):
(1)选择并读取一幅256级的灰度图像,利用matlab设计程序;
(2)设计计算该图像的直方图的程序(不能用matlab提供的库函数),并显示直方图图形;
(3)根据图像直方图的均衡化原理编写图像直方图均衡化程序(不能使用matlab的库函数),保存变换后的图像,并显示均衡化后的直方图;
(4)用matlab库函数对该图像进行直方图均衡化,并显示均衡化后的直方图;(5)对两种不同方法所得到的直方图均衡化的结果进行分析;
(6)要求阅读相关参考文献不少于5篇;
(7)根据课程设计有关规范,按时、独立完成课程设计说明书。
时间安排:
(1) 布置课程设计任务,查阅资料,确定方案四天;
(2) 进行编程设计一周;
(3) 完成课程设计报告书三天;
指导教师签名: 年月日
系主任(或责任教师)签名: 年月日
目录
1.概述 (1)
2.灰度级直方图及直方图均衡化 (1)
2.1直方图定义 (1)
2.2直方图均衡化思想方法 (1)
2.3直方图均衡化算法 (3)
3. Matlab 程序实现 (4)
4.结果分析 (6)
5.心得体会 (7)
参考文献 (8)
1.概述
图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。
直方图拉伸和直方图均衡化是两种最常见的间接对比度增强方法。
直方图拉伸是通过对比度拉伸对直方图进行调整,从而“扩大”前景和背景灰度的差别,以达到增强对比度的目的,这种方法可以利用线性或非线性的方法来实现;直方图均衡化则通过使用累积函数对灰度值进行“调整”以实现对比度的增强。
直方图均衡化(Histogram Equalization )是图像处理领域中利用图像直方图对对比度进行调整的方法。
这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。
通过这种方法,亮度可以更好地在直方图上分布。
这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。
2.灰度级直方图及直方图均衡化
2.1直方图定义
灰度级直方图是图像的一种统计表达,它反映了图像中不同灰度级出现的统计概率。
灰度级[0,L-1]范围的数字图像的直方图具有如下离散函数:
k n k h =)( (2.1) 式中,k 是k 级灰度,k n 是图像中灰度级为k 的像素个数。
进行归一化,则概率
n n k p k r =)(,n 为图像中像素的总数。
由于图像的视觉效果与直方图有对应关系,即直方图的形状和改变对视觉的感知影响很大,因此采用直方图变换的方式可以增强图像。
2.2直方图均衡化思想方法
图像直方图描述图像中各灰度级出现的相对频率,基于直方图的灰度变换,可以调整图像直方图到一个预定的形状。
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。
直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。
一些图像由于其灰度分布集中在较窄的区间,对比度很弱,图像细节看不清楚。
此时,可采用图像灰度直方图均衡化处理,使得图像的灰度分布趋向均匀,图像所占有的像素灰度间距拉大,进而加大图像反差,改善视觉效果,达到增强的目的。
从人的视觉特性来考虑,一幅图像的直方图如果是均匀分布的,该图像色调给人的感觉会比较协调。
假定原始图像灰度级r 归一化在0~1之间,即10≤≤r 。
)(r p r 为原始图像灰度分布的概率密度函数,直方图均衡化处理实际上就是寻找一个灰度变换函数T ,使得变换后的灰度值满足)(r T s =,其中,s 归一化为10≤≤s ,建立r 与s 之间的映射关系,
要求处理后图像灰度分布的概率密度函数1)(=s p s ,即变换后概率密度为[]1,0
上的均匀分布,期望所有灰度级出现概率相同。
直方图均衡变换函数如图2.1所示。
)
(r T r
s
)
(k k r T s =0
t
k
r 1
图2.1 直方图均衡变换函数
从图2.1中可以看出在灰度变换的dr 和ds 区间内,像素点个数是不变的,因此有:
⎰
⎰
++=dr
r r ds
s s s r j j
j j
ds s p dr r p )()( (2.2)
当0→dr ,0→ds ,略去下标j ,有)
()
(s p r p dr ds s r = 。
由于)(r T s = ,1)(=s p s ,则
)()(r p dr
r dT dr ds r == ,最终得到直方图均衡化的灰度变换函数为: ⎰==r
r dr r p r T s 0
)()( (2.3)
式(2.3)是原始图像灰度r 的累积分布函数。
对于数字图像离散情况,其直方图均衡化处理的计算步骤如下:
1)统计原始图像的直方图,n n
r p k k r =)( ,k r 是归一化的输入图像灰度级。
2)计算直方图累积分布函数曲线,∑
∑=====k
j j k
j j r k k n
n r p r T s 0
)()( 。
3)用累积分布函数作为变换函数进行图像灰度变换。
根据就计算得到的累积分布函数,建立输入图像与输出图像灰度级之间的对应关
系,即重新定位累积分布函数k s (与归一化灰度等级k r 比较,寻找最接近的一个作为原灰度级k 变换后的新灰度级)。
2.3直方图均衡化算法
直方图均衡化算法将原图像的直方图改变为在整个灰度范围内基本均匀地分布的形式,由此扩大了像素灰度的动态范围,从而增强了图像的对比度。
直方图均衡化算法步骤为:
1) 给出原始图像的所有灰度级)1,...,2,1,0(-=L k S k
2) 统计原始图像各灰度级的像素数k n 。
3) 根据原图像,计算灰度直方图:
)1,......,2,1,0()(-==L k n
n
S P k
k (2.4) 式中,n 为总像素数,
k
n 为灰度级
k
S 的像素数。
4) 计算原始图像的累积直方图:
)
1,...,1,0,10()()(0
0-=≤≤===∑∑==L k s S P n n S EH t k i k
i s k
i i
K E (2.5)
5) 取整计算:
i n t [(1)
]
k k k
U N t N =-+ (2.6)
6) 确定映射关系:
k k U S →
7) 统计新直方图各灰度级k U 的像素数目k n 。
8) 计算新的直方图:
()k
k n P t n =
(2.7)
3.Matlab 程序实现
选择一幅256级的灰度图像,计算该图像的直方图,得到其直方图图形,根据图像直方图的均衡化原理进行直方图均衡化。
根据计算图像的直方图原理及图像直方图的均衡化原理编写Matlab程序代码(不用matlab提供的库函数)如下:I=imread('village.bmp');
figure;
I=rgb2gray(I);
Ps=double(I);
[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,1),imshow(I);title('原图');
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);
I1=I;
for i=0:255
I1(find(I==i))=S2(i+1);
end
subplot(2,2,3),imshow(I1)
title('均衡化后图像')
for i=1:256
GPeq(i)=sum(GP(find(S2==i)));
end
subplot(2,2,4),bar(0:255,GPeq,'g')
title('均衡化后的直方图')
xlabel('灰度值')
ylabel('出现概率')
imwrite(I1,'countryside.bmp');
程序运行后得到的图像及其直方图结果如图3.1所示。
图3.1 图像及直方图
用matlab库函数对该图像进行直方图均衡化,并显示均衡化后的直方图,程序代码如下:
I=imread('village.bmp');
figure;
I=rgb2gray(I);
subplot(2,2,1),imshow(I);
title('原图');
subplot(2,2,2),imhist(I);
title('原图像直方图');
[J,T]=histeq(I,256);
subplot(2,2,3),imshow(J);
title('均衡化后图像');
subplot(2,2,4),imhist(J);
title('均衡化后的直方图');
程序运行后得到图像及直方图结果如下图3.2所示。
图3.2图像及直方图结果
4.结果分析
由图3.1和图3.2所示,原图显示的图像及其直方图可知这幅图像最为突出的特点是较模糊且动态范围较低。
直方图的宽度相对于整个灰度范围来说非常狭窄,图像质量比较差,地物可分性较差;在Matlab 环境下进行直方图的均衡化,对图像的亮度范围进行拉伸,以提高对比度。
经过直方图均衡化,图像的对比度明显提高,直方图在整个亮度标度上显著扩展,图像质量提高。
将两幅结果图进行对比可发现,用matlab 库函数对该图像进行直方图均衡化的效果明显高于用均衡化原理编写的程序对该图像进行直方图均衡化的效果。
灰度级图像直方图均衡化对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来X光图像中更好的骨骼结构显示以及曝光过度或者曝光不足照片中更好的细节。
这种方法的一个主要优势是它是一个相当直观的技术并且是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直方图,并且计算量也不大。
这种
方法的一个缺点是它对处理的数据不加选择,它可能会增加背景杂讯的对比度并且降低有用信号的对比度;变换后图像的灰度级减少,某些细节消失;某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。
5.心得体会
直方图均衡化是图像增强技术的基本方法,本文分析了这种处理方法的基本理论,并用MATLAB进行实验,结果表明,直方图均衡化在一定程度上改善了图像的对比度差和灰度动态范围,增强了图像的可读性,提高了地物的可分性,有利于进行遥感图像的目视解译。
该算法简单,是一种行之有效的图像增强算法。
通过近一周的课程设计,我们学到了很多东西,对如何获得知识也有了一定的感知。
首先,对这个设计题目,要做好充分的准备工作,经过在图书馆查找一些相关的资料,上网搜索一些相关的知识后,我们终于对需要的流程有了一定的规划。
其次,在实际设计过程中,我们充分地利用课本上和老师提过的一些知识、思路。
同时与组内同学认真交谈,相互领会对方的思路和方法,提高自己处理问题的能力。
再次,通过对此设计,我们对图像处理的知识有了更加深入的了解,知道了什么是图像增强,怎样利用图像增强的知识处理学习、生活中遇到的一些专业知识问题。
参考文献
[1]何东健.数字图像处理.西安电子科技大学出版社,2003
[2]冈萨雷斯等,《数字图像处理》(Matlab版).电子工业出版社,2005
[3]冈萨雷斯等著,阮秋琦等译.《数字图像处理》(第二版).电子工业出版社,2007 [4]王慧琴等.数字图像处理.北京:北京邮电大学出版社,2006
[5]杨杰. 数字图像处理及MATLAB实现.北京:电子工业出版社.2010.2。