资源描述
课程名称图像处理与分析题目名称直方图均衡化与规定化学院信息工程专业电子信息工程年级班别学号学生姓名姚艺锋指导老师曹江中2008年6月16日图像处理与分析课程设计报告直方图均衡化与规定化1、设计方案(原理)一般情况下,如果图像的灰度分别集中在比较窄的区间,从而引起图像细节的模糊,为了使图像细节清晰,并使目标得到突出,达到图像增强的目的,可通过改善各部分亮度的比例关系,即通过直方图的方法来实现.直方图的方法是以概率论为基础的.常用的方法有直方图均衡化和直方图规定化.(1)直方图均衡化直方图均衡化又称直方图平坦化,是将一已知灰度概率密度分布的图像经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像.其结果是扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果.直方图均衡化的具体实现步骤如下:1) .列出原始图像的灰度级f,j0,1,L1j2) 统计各灰度级的像素数目n,j0,1,L1j3) .计算原始图像直方图各灰度级的频数P(f)n/n,j0,1,L1fjj4) .计算累积分布函数C(f)kP(f),j0,1,k,L1j0fj5) .应用以下公式计算映射后的输出图像的灰度级,P为输出图像灰度级的个数,其中INT为取整符号gINT(gg)C(f)g0.5iI,PIimaxminmin6) .统计映射后各灰度级的像素数目ni,i=0,1,k,P-1.7) .计算输出直方图Pg(gi)=ni/n,i=0,1,P-1.8).用fj和gi的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像(2)直方图规定化直方图均衡化的优点是能自动增强整个图像的对比度,但它的具体增强效果不易控制,处理的结果总是得到全局的均衡化的直方图.实际工作中,有时需要变换直方图使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度,这时可采用比较灵活的直方图规定化方法.直方图规定化增强处理的步骤如下:令P(r)和P(z)分别为原始图像和期望图像的灰度概率密度函数。如果rz对原始图像和期望图像均作直方图均衡化处理,应有(1)(2)ST(r)P(r)drVG(Z)p(z)dz0zZG1(V)(3)由于都是进行均衡化处理,处理后的原图像概率密度函数Ps(S)及理想图像概率密度函数PV(V)是相等的。于是,我们可以用变换后的原始图像灰度级S代替(2)式中的V。即Z=G-1(S)(4)这时的灰度级Z便是所希望的图像的灰度级。此外,利用(1)与(3)式还可得到组合变换函数Z=G-1T(r)(5)对连续图像,重要的是给出逆变换解析式。对离散图像而言,有nP(Z)亠Zin(6)VG(Z)P(Z)iizii)(8)ZG(S)GT(r)iii2、设计内容(主要代码)%选择图片路径及显示%globalf%选择图片路径filename,pathname=.%.表示与下行连接uigetfile(*.bmp;*.jpg;*gif;*tif,选择图片);%打开文件类型,对话框名称f=imread(pathnamefilename);axes(handles.axes1);imshow(f);title(原始图像);%在axes1显示原图像%设置下拉菜单分别选择显示图像%globalfva=get(handles.popupmenu1,Value);val=get(hObject,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);plot(s);title(原图像直方图);case2%均衡化后图像及直方图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);fori=1:256H1(t1(i)=H1(t1(i)+s(i);endaxes(handles.axes4);bar(Hl);title(均衡化后直方图);I2=t1(I+1)-1;axes(handles.axes3);imshow(uint8(I2);title(均衡化后图像);case3I=f;J=I;New=I;L=256;%灰度级Ps=zeros(L,l);nk=zeros(L,l);nk2=zeros(L,l);Rk=zeros(L,l);Ps2=zeros(L,l);Rk2=zeros(L,l);row,col=size(I);n=row*col;%总像素个数fori=l:rowforj=l:colnum=double(I(i,j)+l;nk(num)=nk(num)+l;endend%计算直方图概率估计fori=l:LPs(i)=nk(i)/n;%计算累积直方图%存储原图像直方图概率数据%存储原图像直方图数据%存储直方图规定化后的图像的直方图%存储原图像累积直方图数据%计算图像数据矩阵的行列数%获取像素灰度级%统计nk%规定化后图像及直方图ifi=lRk(i)=Ps(i);elselScMin(Q,P)minV=ScMin(Q,P);min=Q;endendHisM(P)=min;end%将原图像的每个像素灰度转换为直方图均衡化后的灰度forx=1:rowfory=1:colNum=double(I(x,y)+1;ifNum=iNew(x,y)=HisM(i);endendendend%计算直方图规定化后的直方图forp=1:rowforq=1:colNN=double(New(p,q)+1;nk2(NN)=nk2(NN)+1;endendaxes(handles.axes5);imshow(New),title(规定化后图像);axes(handles.axes6);plot(Ps2),title(规定化后直方图);end;%直接调用函数%globalfva=get(handles.popupmenu2,Value);val=get(hObject,Value);switchvalcase1axes(handles.axes1);%在axes1显示图像imshow(f);title(原图像);axes(handles.axes2);h=imhist(f,256);plot(h)ylim(auto);%自动设定Y轴坐标范围和刻度title(原始直方图)case2j=histeq(f);axes(handles.axes3);imshow(j);title(均衡化图像);axes(handles.axes4);h=imhist(j,256);plot(h)ylim(auto);title(均衡化图像直方图)case3hgram=50:2:250k=histeq(f,hgram);axes(handles.axes5);imshow(k);title(规定化图像);axes(handles.axes6);h=imhist(k,256);plot(h)ylim(auto);title(规定化图像直方图)end;3、实验结果GUI界面设计:I/t:WIuntitled.fig121.xIS选择图片路径:企屉门$SSHi1*结果分析:通过直接调用函数和编程对图像进行处理的结果对比,可以看出实验结果和理论结果基本一致;在编程处理中,可以自定义对规定化中的直方图(Ps2Temp)进行修改,从而得到所希望的图像增强效果.4、心得体会通过这次课程设计,我学会如何利用MATLAB制作视图界面(GUI),并通过视图界面对数字图像进行处理,方便快捷,而且美观.在做设计的过程中,虽然遇到了不少问题,例如:程序结果如何通过GUI界面显示,程序的调试出错等,但是经过查资料并进行修改,及同学们的提点下,所有问题都一一得到解决;通过这次课程设计,揭开了数字图像的神秘面纱.5、参考文献(1) .R.CGonzalez,R.E.Woods.vv数字图像处理(第二版).北京:电子工业出版社,2007(2) .贺兴华.人民邮电出版社,2006(3) .徐飞,施晓红.西安:西安电子科技大学出版社,2002
展开阅读全文