灰度直方图均衡化与规定化.docx

上传人:b****6 文档编号:6155586 上传时间:2023-01-04 格式:DOCX 页数:13 大小:309.26KB
下载 相关 举报
灰度直方图均衡化与规定化.docx_第1页
第1页 / 共13页
灰度直方图均衡化与规定化.docx_第2页
第2页 / 共13页
灰度直方图均衡化与规定化.docx_第3页
第3页 / 共13页
灰度直方图均衡化与规定化.docx_第4页
第4页 / 共13页
灰度直方图均衡化与规定化.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

灰度直方图均衡化与规定化.docx

《灰度直方图均衡化与规定化.docx》由会员分享,可在线阅读,更多相关《灰度直方图均衡化与规定化.docx(13页珍藏版)》请在冰豆网上搜索。

灰度直方图均衡化与规定化.docx

灰度直方图均衡化与规定化

一、课程设计目的

(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

..

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1