灰度直方图均衡化与规定化.docx
- 文档编号:6155586
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:13
- 大小:309.26KB
灰度直方图均衡化与规定化.docx
《灰度直方图均衡化与规定化.docx》由会员分享,可在线阅读,更多相关《灰度直方图均衡化与规定化.docx(13页珍藏版)》请在冰豆网上搜索。
灰度直方图均衡化与规定化
一、课程设计目的
(1)进一步掌握matlab的用法;
(2)在实践中深入理解图像显示的方法;
(3)学会用matlab对图像进行显示。
二、课程设计要求
(1)根据题目,查阅有关资料,掌握图像显示技术;
(2)学习MATLAB软件,掌握MATLAB各种函数的使用;
(3)根据图像显示原理,运用MATLAB进行编程,仿真调制过程,记录并分析仿真结果;
(4)形成设计报告。
三、设计方案
一般情况下,如果图像的灰度分别集中在比较窄的区间,从而引起图像细节的模糊,为了使图像细节清晰,并使目标得到突出,达到图像增强的目的,可通过改善各部分亮度的比例关系,即通过直方图的方法来实现.直方图的方法是以概率论为基础的.常用的方法有直方图均衡化和直方图规定化.
(1)直方图均衡化
直方图均衡化又称直方图平坦化,是将一已知灰度概率密度分布的图像经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像.其结果是扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果.
直方图均衡化的具体实现步骤如下:
1).列出原始图像的灰度级
2).统计各灰度级的像素数目
3).计算原始图像直方图各灰度级的频数
4).计算累积分布函数
5).应用以下公式计算映射后的输出图像的灰度级,P为输出图像灰度级的个数,其中INT为取整符号
6).统计映射后各灰度级的像素数目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)分别为原始图像和期望图像的灰度概率密度函数。
如果对原始图像和期望图像均作直方图均衡化处理,应有
(1)
(2)
(3)
由于都是进行均衡化处理,处理后的原图像概率密度函数Ps(S)及理想图像概率密度函数PV(V)是相等的。
于是,我们可以用变换后的原始图像灰度级S代替
(2)式中的V。
即
Z=G-1(S)(4)
这时的灰度级Z便是所希望的图像的灰度级。
此外,利用
(1)与(3)式还可得到组合变换函数
Z=G-1[T(r)](5)
对连续图像,重要的是给出逆变换解析式。
对离散图像而言,有
(6)
(7)
(8)
四、设计内容
%----------------------------选择图片路径及显示---------------------------%
globalf
%选择图片路径
[filename,pathname]=...%...表示与下行连接
uigetfile({'*.bmp';'*.jpg';'*gif';'*tif'},'选择图片');
%打开文件类型,对话框名称
f=imread([pathnamefilename]);
axes(handles.axes1);%在axes1显示原图像
imshow(f);
title('原始图像');
%------------------设置下拉菜单分别选择显示图像------------%
globalf
va=get(handles.popupmenu1,'Value');
val=get(hObject,'Value');
switchval%用switch语句设置选项
case1%原图像直方图
I=double(f);[m,n]=size(I);
H=zeros(1,256);
fori=1:
m
forj=1:
n
H(I(i,j)+1)=H(I(i,j)+1)+1;
end
end
s=zeros(1,256);t=zeros(1,256);
fori=1:
256s(i)=H(i)/(m*n);
forj=1:
i
t(i)=t(i)+s(j);
end
end
axes(handles.axes2);
plot(s);title('原图像直方图');
case2%均衡化后图像及直方图
I=double(f);[m,n]=size(I);
H=zeros(1,256);
fori=1:
m
forj=1:
n
H(I(i,j)+1)=H(I(i,j)+1)+1;
end
end
s=zeros(1,256);t=zeros(1,256);
fori=1:
256s(i)=H(i)/(m*n);
forj=1:
i
t(i)=t(i)+s(j);
end
end
t1=round(t*(256-1)+0.5);
H1=zeros(1,256);
fori=1:
256
H1(t1(i))=H1(t1(i))+s(i);
end
axes(handles.axes4);
bar(H1);title('均衡化后直方图');
I2=t1(I+1)-1;
axes(handles.axes3);
imshow(uint8(I2));title('均衡化后图像');
case3%规定化后图像及直方图
I=f;
J=I;
New=I;
L=256;%灰度级
Ps=zeros(L,1);%存储原图像直方图概率数据
nk=zeros(L,1);%存储原图像直方图数据
nk2=zeros(L,1);%存储直方图规定化后的图像的直方图
Rk=zeros(L,1);%存储原图像累积直方图数据
Ps2=zeros(L,1);
Rk2=zeros(L,1);
[row,col]=size(I);%计算图像数据矩阵的行列数
n=row*col;%总像素个数
fori=1:
row
forj=1:
col
num=double(I(i,j))+1;%获取像素灰度级
nk(num)=nk(num)+1;%统计nk
end
end
%计算直方图概率估计
fori=1:
L
Ps(i)=nk(i)/n;
%计算累积直方图
ifi==1
Rk(i)=Ps(i);
else1<=256
Rk(i)=Rk(i-1)+Ps(i);
end
%规定化直方图
Ps2Temp=[0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,9),0.05,zeros(1,39),0.05,zeros(1,19),0.05,zeros(1,19),0.05,zeros(1,19),ones(1,80).*0.0045,ones(1,16).*0.0088];
Ps2=Ps2Temp';
%计算规定化累积直方图
forc=1:
L
ifc==1
Rk2(c)=Ps2(c);
else
Rk2(c)=Rk2(c-1)+Ps2(c);
end
end
%计算原图像与目标图像累计直方图数值的差的绝对值
doubleScMin=zeros(256,256);
forY=1:
L
forX=1:
L
ScMin(X,Y)=abs(Rk(Y)'-Rk2(X)');
end
end
%建立映射
HisM=zeros(L:
1);
forP=1:
L
min=0;
minV=ScMin(1,P);
forQ=1:
L
if(minV>ScMin(Q,P))
minV=ScMin(Q,P);
min=Q;
end
end
HisM(P)=min;
end
%将原图像的每个像素灰度转换为直方图均衡化后的灰度
forx=1:
row
fory=1:
col
Num=double(I(x,y))+1;
ifNum==i
New(x,y)=HisM(i);
end
end
end
end
%计算直方图规定化后的直方图
forp=1:
row
forq=1:
col
NN=double(New(p,q))+1;
nk2(NN)=nk2(NN)+1;
end
end
axes(handles.axes5);
imshow(New),title('规定化后图像');
axes(handles.axes6);
plot(Ps2),title('规定化后直方图');
end;
%--------------------直接调用函数-----------------------------------------%
globalf
va=get(handles.popupmenu2,'Value');
val=get(hObject,'Value');
switchval
case1
axes(handles.axes1);%在axes1显示图像
imshow(f);
title('原图像');
axes(handles.axes2);
h=imhist(f,256);
plot(h)
ylim('auto');%自动设定Y轴坐标范围和刻度
title('原始直方图')
case2
j=histeq(f);
axes(handles.axes3);
imshow(j);
title('均衡化图像');
axes(handles.axes4);
h=imhist(j,256);
plot(h)
ylim('auto');
title('均衡化图像直方图')
case3
hgram=50:
2:
250
k=histeq(f,hgram);
axes(handles.axes5);
imshow(k);
title('规定化图像');
axes(handles.axes6);
h=imhist(k,256);
plot(h)
ylim('auto');
title('规定化图像直方图')
end;
五、实验结果
GUI界面设计:
选择图片路径:
直接调用函数均衡化和规定化:
原图像与均衡化和规定化后对比:
六、结果分析
通过直接调用函数和编程对图像进行处理的结果对比,可以看出实验结果和理论结果基本一致;在编程处理中,可以自定义对规定化中的直方图(Ps2Temp)进行修改,从而得到所希望的图像增强效果.
七、总结分析
一周的数字图像处理课程设计,最大的收获是初步的掌握的Matlab软件的使用,通过这次课程设计,我学会如何利用MATLAB制作视图界面(GUI),并通过视图界面对数字图像进行处理,方便快捷,而且美观。
在实践过程中,基本上是在已有的基础上自学而完成的,所以对自己的自学能力的提高也起到了一定的作用。
并且在此次实习过程中,充分利用了图书馆,及其网络资源,才能够成功完成任务,让我意识到充分利用身边资源的重要性。
本次数字图像处理课程设计不仅加强了对课本知识的了解,而且大大增强了我们课外自学和动手能力,让我受益良多。
八、参考文献
张汗灵编著MATLAB在图像处理中的应用/北京:
清华大学出版社,2008
王家文MATLAB6.5图形图像处理国防工业出版社
王晓丹,吴崇明编著基于MATLAB的系统分析与设计[5]图像处理西安电子科技大学出版社2000
余成波编著数字图像处理及MATLAB实现重庆大学出版社2003
杨枝灵,王开等编著VisualC++数字图像获取处理及实践应用人民邮电出版社2003
苏彦华等编著VisualC++数字图像识别技术典型案例人民邮电出版社2004
..
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 灰度 直方图 均衡 规定