基于MATLAB GUI的数字图像处理共16页文档格式.docx
《基于MATLAB GUI的数字图像处理共16页文档格式.docx》由会员分享,可在线阅读,更多相关《基于MATLAB GUI的数字图像处理共16页文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
![基于MATLAB GUI的数字图像处理共16页文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/18/741e4b35-1857-4f36-9443-83892e2e2131/741e4b35-1857-4f36-9443-83892e2e21311.gif)
)的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。
可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。
二.完成(wá
nché
ng)任务
所谓的GUIDE就是图形用户界面开发环境(GraphicalUserInterfaceDevelopmentEnvironment),它向用户提供了一系列的创建用户图形界面的工具。
这些工具大大简化了GUI设计和生成的过程。
通过GUIDE完成一下任务:
1)用户可以通过菜单栏和按钮进行图像的读取,保存与退出。
2)设计图形用户界面,让用户能够通过按钮对图像进行灰度变化变成灰度图。
3)通过(tōngguò
)滑块,用户(yò
nghù
)可以对图像(tú
xià
nɡ)的亮度进行调整
5)通过按钮,用户可以查看图片的直方图。
6)能对图像加入各种椒盐噪声,并通过滤波法去除。
7)通过选项,用户可以查看图片的边缘检测图,界面中可供选择的检测方式有roberts、sobel、prewitt、log、canny五种,当用户选择orginal时显示原图。
三.设计过程
1.总体设计
通过GUIDE向导完成界面功能的布局,根据所需完成功能用户界面布局如下图1。
图1用户功能界面
2.控件设计及程序实现
2.1打开图片,保存图片,退出。
拖拽三个个按钮放在合适的位置,双击按钮修改字体大小、颜色等,在functionOpen_Callback(hObject,eventdata,handles)函数下添加如下程序即可完成打开图片控件功能。
[filename,filepath]=uigetfile({'
*.bmp;
*.jpg;
*.png;
*.jpeg;
*.tif;
*gif;
*Imagefiles'
},'
'
);
ifisequal(filename,0)||isequal(filepath,0)
return;
end
str=[filepath,filename];
x=imread(str);
axes(handles.axes1)
imshow(x);
在functionSave_Callback(hObject,eventdata,handles)函数(há
nshù
)下添加(tiānjiā)如下程序即可完成(wá
ng)保存图片控件功能。
globalb
new_f_handle=figure('
visible'
'
off'
new_axes=copyobj(handles.axes2,new_f_handle);
set(new_axes,'
units'
default'
position'
[filename,pathnamefileindex]=uiputfile({'
*.jpg'
;
*.bmp'
*.png'
savepictureas'
if~filename
return
else
file=strcat(pathname,filename);
switchfileindex
case1
print(new_f_handle,'
-djpeg'
file);
case2
-dbmp'
case3
-dpng'
file)
delete(new_f_handle);
在functionExit_Callback(hObject,eventdata,handles)函数(há
ng)退出控件功能。
clc
closeall
close(gcf)
clear
图2.1打开(dǎkāi)一幅(yīfú
)图
2.2.灰度变换(bià
nhuà
n)按钮。
先读取一幅图片显示在左边区域,通过按钮将灰度图显示在右边域。
在functionRgb2gray_Callback(hObject,eventdata,handles)函数下添加如下代码即可完成灰度变化功能。
globalx
axes(handles.axes2)
y=rgb2gray(x);
imshow(y);
图2.2灰度变化(bià
2.3图像(tú
nɡ)增强(zēngqiá
ng)。
先读取一幅图片显示在左边区域,通过按钮将灰度图显示在右边域。
可通过按钮“图像增强”或者滑块改变改变图像的强度。
在functionIncrease_Callback(hObject,eventdata,handles)函数下添加如下代码即可完成图像增强按钮
x1=imadjust(x,[0.30.7],[01],0.5);
imshow(x1);
图2.3.1图像(tú
ng)
在functionUntitled_4_Callback(hObject,eventdata,handles)函数(há
)下添加如下代码即可完成图像增强滑块
value=get(handles.slider,'
Value'
x1=imadjust(x,[0.30.7],[01],'
value'
图2.3.2改变(gǎibià
n)滑块图像(tú
nɡ)
2.4噪声(zà
oshēng)抑制按钮
通过打开图片按钮打开一幅图片显示在左边区域,当用户点击噪声抑制时左边图显示家了椒盐噪声的图,右边区域显示噪声滤除后的图。
在functionNoise_Callback(hObject,eventdata,handles)函数下添加如下代码即可完成。
globalp
p=imnoise(y,'
salt&
pepper'
0.1);
%加10%的椒盐
axes(handles.axes1);
imshow(p);
g=medfilt2(p);
axes(handles.axes2);
imshow(g);
图2.4噪声(zà
oshēng)抑制(yì
zhì
)效果图
2.5统计(tǒngjì
)直方图按钮
用户通过该按钮显示图片的统计直方图。
在functionCompression_Callback(hObject,eventdata,handles)函数下添加如下代码即可完成。
h=rgb2gray(x);
imhist(h);
图2.5直方图显示(xiǎnshì
2.6边缘(biānyuá
n)检测(jiǎncè
)选择
用户选择选择不同的边缘检测方式,右侧显示不同的边缘图。
在functionSlectchangeFuc_SelectionChangeFcn(hObject,eventdata,handles)函数下添加如下代码即可实现。
globalb
str=get(hObject,'
string'
dx=double(y);
switchstr
case'
Roberts'
R=edge(dx,'
roberts'
imshow(R);
Sobel'
S=edge(dx,'
sobel'
imshow(S);
Prewitt'
P=edge(dx,'
prewitt'
imshow(P);
Log'
L=edge(dx,'
log'
imshow(L);
Canny'
C=edge(dx,'
canny'
imshow(C);
Orginal'
imshow(y);
图2.6.1Robrets检测(jiǎncè
图2.6.2Soble检测(jiǎncè
图2.6.3Canny检测(jiǎncè
图2.6.4Log检测(jiǎncè
图2.6.5Perwitt检测(jiǎncè
四.总结(zǒngjié
在完成(wá
ng)本次课程论文的过程中,在对数字图像处理中的理论与实现后的效果相结合的同时,使我对数字图像处理有了更进一步的理解,本次论文只是实现了图像处理中的一些简单的要求,更深层次的要求需要对理论有非常好的掌握,并不是简简单单的可以调用函数可以实现的。
与此同时,本次课程结课论文让我还对matlab有了进一步的理解,本次论文是基于matlabgui完成对图像的各种处理,用户在一个可视化的界面上进行简简单单的点击点击鼠标即可完成对图像的各种处理,并能把处理后的图像保存到本地,这样的编程效果是几乎所有人都愿意接受的,不用在去面对一行行的程序代码,是用户所希望看到的结果。
由于是第一次使用matlabgui进行编程,使用任何一个功能的时候都需要在网上查找资料,可以说这次作业是在网上找资料一点点累积起来的,在这个过程中还是遇到了各种各样的问题,有些问题完成此次作业后仍然没有解决。
五.参考文献
[1]许录平《数字(shù
zì
)图像处理(tú
nɡchǔlǐ)》
[2]《MATLAB实践(shí
jià
n)课程设计》XX文库
[3]小悠《基于MATLABGUI的数字图像处理系统》XX文库
[4]技术驻虫《MATLABGUI平台》微博
内容总结
(1)数字图像处理课程论文
基于matlabGUI的彩色图像处理技术
概述
图形用于界面(GraphicalUserInterfaces,GUI)是提供人机交互的工具和方法
(2)GUI是包含图形对象(如窗口、图标、菜单和文本)的用户界面
(3)2)设计图形用户界面,让用户能够通过按钮对图像进行灰度变化变成灰度图
(4)axes(handles.axes1)
imshow(x)
(5)可通过按钮“图像增强”或者滑块改变改变图像的强度
(6)axes(handles.axes2)
imshow(x1)
(7)imshow(C)