资源描述:
《灰度直方图均衡化与规定化》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、沈阳理工大学数字图像处理课程设计报告一、课程设计目的(1)进一步掌握matlab的用法;(2)在实践中深入理解图像显示的方法;(3)学会用matlab对图像进行显示。二、课程设计要求(1)根据题目,查阅有关资料,掌握图像显示技术;(2)学习MATLAB软件,掌握MATLAB各种函数的使用;(3)根据图像显示原理,运用MATLAB进行编程,仿真调制过程,记录并分析仿真结果;(4)形成设计报告。三、设计方案一般情况下,如果图像的灰度分别集中在比较窄的区间,从而引起图像细节的模糊,为了使图像细节清晰,并使目标得到突出,达到图像增强的目的,可通过改善各部分亮度的比例关系,即通过直方图的方法来实
2、现.直方图的方法是以概率论为基础的.常用的方法有直方图均衡化和直方图规定化.(1)直方图均衡化直方图均衡化又称直方图平坦化,是将一已知灰度概率密度分布的图像经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像.其结果是扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果.直方图均衡化的具体实现步骤如下:1).列出原始图像的灰度级2).统计各灰度级的像素数目3).计算原始图像直方图各灰度级的频数4).计算累积分布函数11沈阳理工大学数字图像处理课程设计报告5).应用以下公式计算映射后的输出图像的灰度级,P为输出图像灰度级的个数,其中INT为取整符号6).统计映射后各灰度级的像素数
3、目ni,i=0,1,…,k,…P-1.7).计算输出直方图Pg(gi)=ni/n,i=0,1,…,P-1.8).用fj和gi的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像(2)直方图规定化直方图均衡化的优点是能自动增强整个图像的对比度,但它的具体增强效果不易控制,处理的结果总是得到全局的均衡化的直方图.实际工作中,有时需要变换直方图使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度,这时可采用比较灵活的直方图规定化方法.直方图规定化增强处理的步骤如下:令Pr(r)和Pz(z)分别为原始图像和期望图像的灰度概率密度函数。如果对原始图像和期望图像均作直
4、方图均衡化处理,应有(1)(2)(3)由于都是进行均衡化处理,处理后的原图像概率密度函数Ps(S)及理想图像概率密度函数PV(V)是相等的。于是,我们可以用变换后的原始图像灰度级S代替(2)式中的V。即Z=G-1(S)(4)这时的灰度级Z便是所希望的图像的灰度级。此外,利用(1)与(3)式还可得到组合变换函数11沈阳理工大学数字图像处理课程设计报告Z=G-1[T(r)](5)对连续图像,重要的是给出逆变换解析式。对离散图像而言,有(6)(7)(8)四、设计内容%----------------------------选择图片路径及显示--------------------------
5、-%globalf%选择图片路径[filename,pathname]=...%...表示与下行连接uigetfile({'*.bmp';'*.jpg';'*gif';'*tif'},'选择图片');%打开文件类型,对话框名称f=imread([pathnamefilename]);axes(handles.axes1);%在axes1显示原图像imshow(f);title('原始图像');%------------------设置下拉菜单分别选择显示图像------------%globalfva=get(handles.popupmenu1,'Value');val=get(hO
6、bject,'Value');switchval%用switch语句设置选项case1%原图像直方图I=double(f);[m,n]=size(I);H=zeros(1,256);fori=1:mforj=1:nH(I(i,j)+1)=H(I(i,j)+1)+1;endends=zeros(1,256);t=zeros(1,256);fori=1:256s(i)=H(i)/(m*n);forj=1:it(i)=t(i)+s(j);endendaxes(handles.axes2);11沈阳理工大学数字图像处理课程设计报告plot(s);title('原图像直方图');case2%均衡
7、化后图像及直方图I=double(f);[m,n]=size(I);H=zeros(1,256);fori=1:mforj=1:nH(I(i,j)+1)=H(I(i,j)+1)+1;endends=zeros(1,256);t=zeros(1,256);fori=1:256s(i)=H(i)/(m*n);forj=1:it(i)=t(i)+s(j);endendt1=round(t*(256-1)+0.5);H1=zeros(1,256);fo