图像处理演示系统课程设计Word文档下载推荐.docx
- 文档编号:21487401
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:24
- 大小:1.63MB
图像处理演示系统课程设计Word文档下载推荐.docx
《图像处理演示系统课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《图像处理演示系统课程设计Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
平移变换
文件
图像增强
几何变换绘制直方图缩放旋转翻转变换变换变换
帮助
保存
打开
平滑处理
锐化处理
3.图形用户界面设计
GUI是实现人机交互的中介,可以通过它实现数据输入、处理和输出。
MATLAB提供了一个专门的GUI设计工具——图形用户界面开发环境(GUIDE),使用该工具,可以快速完成GUI设计任务。
利用MATLAB提供的有关数据,还可以创建工具栏控件和多种对话框。
3.1启动GUIDE
在命令窗口输入GUIDE,则显示如下的“GUIDEQuickStart”对话框。
打开“GUIDEQuickStart”对话框,利用GUIDE模板创建新的GUI,选择一个模板后,
点击OK按钮,在输出编辑器中打开GUI。
添加菜单以及选择模板后点击运行显示如下:
4.图像处理演示系统各功能的实现
4.1文件的打开与保存
4.1.1文件的打开
在主菜单“文件”的下拉菜单中,有个“打开”选项,在其回调函数中添加打开某个文件的相关代码:
[,pathname]=uigetfile(...
{'
*.bmp;
*.jpg;
*.gif;
'
'
Files(*.bmp,*.jpg,*.gif)'
;
'
*.bmp'
'
位图文件(*.bmp)'
...
*.jpg'
Figures(*.jpg)'
*.gif'
MAT-files(*.gif)'
*.*'
AllFiles(*.*)'
},...
Openafile'
);
globalwhimgxx;
L=length();
if<
5return
end
V=strcat(pathname,);
xx=imfinfo(V);
handles.my_data1=V;
guidata(hObject,handles);
axes(handles.axes1);
img=imread(V);
[w,h,l]=size(img);
imshow(img);
函数中主要有两Uigetfile为将要打开文件的文件名,pathname为将要打开文件的路径。
是生成文件选择打开对'
Openthefile部分参数'
*.jpeg;
*.gif…'
是想要打开文件的格式,话框的标题,载入一幅位图,其运行效果如下:
4.1.2文件的保存
在主菜单“文件”的下拉菜单中,有个“保存”选项,在其回调函数中添加保存某个文件的相关代码:
[new]=uiputfile(...
MATLABFiles(*.bmp,*.jpg,*.gif)'
Saveafile'
globalimg;
imwrite(img,strcat(newpath,newfile));
把当前文件保存到用户选择的保存路径下,文件保存对话框中列出当前目录下的所有文件,保存的文件名和路径名保存到new中。
4.2图像的增强
4.2.1图像的平滑滤波处理
1)平滑滤波的作用:
对图像的高频分量进行消弱或消除,增强图像的低频分量。
平滑滤波一般用于消除图像中的随即噪声,从而起到图像平滑的作用
)平滑滤波原理:
2.
(1)邻域平均滤波法
邻域平均滤波法是将一个像素点及其邻域中的所有像素点的平均值赋给输出图像中相应的像素点,从而达到平滑的目的,又称均值滤波法。
最简单的邻域平均滤波法是所有模板系数都取相同的值.
邻域平均滤波法的运算公式为:
g(x,y)=1/N∑f(i.j)x,y=0,1,2,…,N-1
j=∈M
其中,M是以(x,y)为中心的邻域像素点的集合,N是该邻域内像素点的总个数,对每个像素点按该公式进行计算即可得到增强图像中所有像素点的灰度值。
(2)中值滤波法
尽管邻域平均滤波法可以起到平滑图像的作用,但在消除噪声的同时会使图像中的一些细节变得模糊。
中值滤波法则在消除噪声的同时还能保持图像中的细节部分,防止图像的边缘部分模糊。
与邻域平均法不同,中值滤波是将邻域内所有的像素点值按从小到大的顺序排列,取中间值作为中心像素点的输出值。
其原理是利用一个奇数点的移动窗口,将窗口中心点的值用窗口各点的中间值代替,与均值滤波不同,它不是通过对邻域内的所有像素点求平均值来消除噪声的,而是让与周围像素点灰度值的差比较大的像素点改取近似于周围像素点灰度值的值。
从而达到消除噪声的目的。
3)实现方法:
这里主要以采用中值滤波法对图像进行处理(平滑处理)为例,其实现方法如下:
globalwhimg;
img2=img;
fori=2:
w-1
forj=2:
h-1
form=1:
3
forn=1:
hhh((m-1)*3+n)=img(i+m-2,j+n-2);
end
end
forp=1:
9
forq=p+1:
if(hhh(p)>
hhh(q))
temp=hhh(p);
hhh(p)=hhh(q);
hhh(q)=temp;
img2(i,j)=hhh(5);
img=img2;
中值滤波处理(平滑处理)后的结果为:
图像的锐化滤波处理4.2.2锐化滤波的作用:
1)
如果需要突出图像的平滑处理会使图像的边缘纹理信息受到损失,图像变得比较模糊。
它可以消除或减弱图像的低频分量从而图像的边缘纹理信息,则可以通过锐化滤波器实现,增强图像中物体的边缘轮廓信息,使得除边缘以外的像素点的灰度值趋向于零。
2)锐化滤波原理微分运算是求像素点灰度值的变锐化滤波器是以对图像的微分运算或差分运算为基础。
因此微分运算或差分化率,而图像内不同物体边缘处的像素点的灰度值往往变化比较明显,运算可以起到增强边缘信息的作用。
锐化算子:
0-10
H=-14-1
img1=im2double(img);
a=img1(:
:
1);
b=img1(:
2);
c=img1(:
3);
img2=img1;
forj=2:
img2(i,j)=abs(4*img1(i,j)-img1(i-1,j)-img1(i+1,j)-img1(i,j-1)-img1(i,j+1));
img=im2uint8(img2);
其锐化处理结果为:
4.3图像的几何变换4.3.1对图像进行平移1)图像平移的作用:
而使平移后的图像与,(X0,Y0)移动到另外一个位置将图像中的某点从一个位置(X,Y)原始图像完全相同。
)图像平移原理:
2图像的平移是图像变换中最简单的变换之一,其特点是平移后的图像与原图像完全相同,平移后新图像上的每一个点都可以在原图像中找到对应的点。
方向的X.Y,其中A(X,Y)X方向的平移量为△,Y(若点AX)进行平移后,被移到000A(X,Y)的坐标为:
,那么点平移量为△YX=X+△X0Y=Y+△Y
0实现方法:
prompt={'
请输入横向平移量?
};
title='
ansa=inputdlg(prompt,title);
x1=str2num(ansa{1});
handles.my_data4=x1;
请输入纵向平移量'
y1=str2num(ansa{1});
handles.my_data5=y1;
guidata(hObject,handles)%上段代码中的x1,y1即为需要输入的横向平移量与纵向平移量
forx=1:
w
fory=1:
h
PosSourceX=uint16(x+x1);
PosSourceY=uint16(y+y1);
if((PosSourceX<
1)||(PosSourceX>
w)||(PosSourceY<
1)||(PosSourceY>
h))
if(xx.BitDepth==24)Transfor(x,y,1:
3)=uint8
(1);
elseTransfor(x,y)=uint8
(1);
elseif(xx.BitDepth==24)
img(x,y,1:
3)=BmpImage(PosSourceX,PosSourceY,1:
3);
elseimg(x,y)=BmpImage(PosSourceX,PosSourceY);
endendendend
imshow(img)%(PosSourceX和PosSourceY是平移后坐标点,Transfor为平移后图片)
4.3.2对图像进行缩放
)图像缩放的作用:
1.
对图像进行缩小和放大的处理,可分别对其宽和高的缩放量进行设置。
2)图像缩放原理:
方向按相同比例缩方向和Y通常情况下,数字图像的比例缩放是将给定的图像在X方向缩放的比例不同,则图像的Y倍。
从而获得一副新的图像,如果X方向和a放比例缩放会改变原始图像像素之间的相对位置,产生几何畸变。
设原始图像中的点,则坐标关系可表示为:
Y)(XA(X,Y)比例缩放后,在新图像中的对应点为A101010X1=aX0
Y1=bX0
若比例缩放所产生的图像中的像素在原图像中没有相对应的像素点时,就需要进行灰
度值的插值运算,一般有以下两种插值处理方法。
该方法的主要直接赋值为和它最相近的像素灰度值,这种方法称为最邻近插值法,
(1)
特点是简单、计算量很小、但可能会产生马赛克现象;
但运算通过其他数学插值算法来计算相应像素点的灰度值,这类方法处理效果好,2)(量会有所增加)实现方法:
3sy.Y向缩放倍数向缩放倍数:
m1=m*sx;
n1=n*sy;
%设置Xprompt={'
请输入forh=1:
m1;
forw=1:
n1;
ansa=inputdlg(prompt,title);
b(h,w)=i(round(h/sx),round(w/sy));
%roundsx=str2num(ansa{1});
取最邻近整数handles.my_data3=sx;
endguidata(hObject,handles)
endm=xx.Width;
n=xx.Height;
)xx为读取的原始图像信息为缩放后的图像二维数据,为原始图像的二维数据,,(mnm1,n1缩放处理结果显示如下:
4.3.3对图像进行旋转1)图像旋转的作用:
对图像进行任意角度的旋转。
2)图像旋转原理:
图像的旋转变换是几何学中研究的重要内容之一,一般情况下,图像的旋转变换是指以图像经过旋转变换之后,图像的中心为原点,将图像上的所有像素都旋转同一个角度的变换。
和平移变换一样,在图像旋转图像的位置发生了改变,但旋转后,图像的大小一般会改变。
又可以扩大显示区域的图像范围以显示图像的全变换中既可以把转出显示区域的图像截去,部。
,为表示方便,A(X,Y)A设原始图像的任意点(X,Y)经过旋转β角度以后到新的位置000采用极坐标形式表示,原始点的角度为а。
如下图所示P
rA(X,Y)
rA(X,Y)000根据极坐标与二维垂直坐标的关系,原始图像的点A(X,Y)的X和Y坐标如下:
00000X=rcosа0Y=rsinа0旋转到新位置以后点A(X,Y)的坐标如下:
X=rcos(а-β)=rcosаcosβ+rsinаsinβ=Xcosβ+Ysinβ00Y=rsin(а-β)=rsinаcosβ-rcosаsinβ=-Xsinβ+Ycosβ00图像的旋转变换用矩阵形式表示如下:
Xcosβsinβ0X0Y=-sinβcosβ0Y010011
对图像进行旋转操作时需要输入旋转(该题中旋转角为90度)角度,相关实现代码如下:
请输入旋转角度:
title='
AngleDegrees'
n=str2num(ansa{1});
i=im2double(img);
pai=3.14;
n=pai*n/180;
%?
将角度转换为直观的表示方法,便于直接输入度数。
img1=zeros(w,h);
fori=1:
(w-1)
forj=1:
(h-1)
img1(int32(i*cos(n)+sin(n)*j),int32(j*cos(n)-i*1*sin(n)))=i(i,j);
img=im2unit8(img1);
旋转处理如下图所示:
4.3.4对图像进行翻转
1)图像翻转的作用:
实现图像的水平翻转
2)图像翻转原理:
垂直方向:
y′=h-y+1
水平方向:
x′=w-x+1
其中为h图像高,w为图像宽
globalxximgwh;
img1=img;
img1(i,j,1:
3)=img(w-i+1,h-j+1,1:
img=img1;
其结果如下显示:
对翻转后的图像锐化所显示的图像为:
图像直方图的绘制4.4.
1)图像直方图绘制的作用:
实现图像直方图的均衡化。
2)图像直方图均衡原理:
直方图均衡化是将原图像的直方图通过变换函数修正为均匀的直方图,然后按均衡直方图修正原图像。
图像均衡化处理后,图像的直方图是平直的,即各灰度级具有相同的出现频数,那么由于灰度级具有均匀的概率分布,图像看起来就更清晰了。
首先假定连续灰度级的情况,推导直方图均衡化变换公式,令r代表灰度级,P(r)为概率密度函数。
(注:
r值已归一化,最大灰度值为1)。
img1=rgb2gray(img);
img1=double(img1);
%img1=uint8(255*img1*0.5+0.5);
grey_grade=2^8;
grey_grade
grey_friq(i)=0;
fory=1:
forx=1:
grey_friq(img1(y,x)+1)=grey_friq(img1(y,x)+1)+1;
bar(1:
256,grey_friq);
该图像的直方图显示如下:
5.小结
从通常意义上讲,数字图像处理技术更加普遍、可靠和准确,比起模拟方法,它们也更容易实现,专用的硬件被用于数字图像处理。
今天,硬件解决方案被广泛的用于视频处理系统,但商业化的图像处理任务基本上仍以软件形式实现,运行在通用个人电脑上,掌握进一步的图像处理技能对今后的学习和工作生活也都有其积极的影响!
通过这个阶段的努力本图像处理演示系统已基本完成了对文件的打开保存,以及对图像的平移、图像的旋转、翻转、图像的缩放、图像的增强等功能的实现,由于个人水平和时间的有限,此次课程设计还存在许多想法没有很好的实现,扩展功能上也有一定的局限性,希望能在今后的学习中逐渐弥补和改善!
6.源程序
functionvarargout=graph(varargin)%instancetorun(singleton).
%GRAPHM-graph.fig%
%GRAPH,byitself,createsanew%Seealso:
GUIDE,GUIDATA,
GRAPHorraisestheexistingGUIHANDLES
%singleton*.
%%Edittheabovetexttomodifytheresponse
%H=GRAPHreturnsthehandletoatohelpgraph
newGRAPHorthehandleto
%theexistingsingleton*.%LastModifiedbyGUIDEv2.510-Jul-2014
%13:
33:
34
%
GRAPH('
CALLBACK'
hObject,eventData,ha%Begininitializationcode-DONOTEDIT
ndles,...)callsthelocalgui_Singleton=1;
%functionnamedCALLBACKinglobalwhimgxx;
GRAPH.Mwiththegiveninputarguments.gui_State=struct('
gui_Name'
m,...
%'
gui_Singleton'
%GRAPH('
Property'
Value'
...)createsgui_Singleton,...
anewGRAPHorraisesthe'
gui_OpeningFcn'
%existingsingleton*.Startingfrom@graph_OpeningFcn,...
theleft,propertyvaluepairsare'
gui_OutputFcn'
%appliedtotheGUIbefore@graph_OutputFcn,...
graph_OpeningFunctiongetscalled.An'
gui_LayoutFcn'
%unrecognizedpropertynameor[],...
invalidvaluemakespropertyapplication'
gui_Callback'
[]);
%stop.Allinputsarepassedtoifnargin&
isstr(varargin{1})
graph_OpeningFcnviavarargin.gui_State.gui_Callback=
%str2func(varargin{1});
%*SeeGUIOptionsonGUIDE'
send
Toolsmenu.ChooseGUIallowsonlyone
ifnargout[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
gui_mainfcn(gui_State,varargin{:
Else
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforegraphismadevisible.
functiongraph_OpeningFcn(hObject,eventdata,handles,varargin)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 处理 演示 系统 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)