《2022年MATLAB课程设计--GUI图像处理.pdf》由会员分享,可在线阅读,更多相关《2022年MATLAB课程设计--GUI图像处理.pdf(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MATLAB 课程设计 -GUI 图像处理目录1、设计目的3 2、题目分析3 3、总体设计3 4、具体设计55、结果分析346、心得体会347、附录代码361、设计目的 : 综合运用MATLAB 工具箱实现图像处理的GUI 程序设计 , 利用MATLAB 图像处理工具箱 , 设计与实现自己的Photoshop 。2、题目分析利用 matlab 的 GUI程序设计一个简单实用的图像处理程序。该程序应具备图像处理的常用功能 , 以满足用户的使用。现设计程序有以下基本功能: 1) 图像的读取与保存。2) 设计图形用户界面 , 让用户能够对图像进行任意的亮度与对比度变化调整, 显示与对比变换前后的图像
2、。3) 设计图形用户界面 , 让用户能够用鼠标选取图像感兴趣区域, 显示与保存该选择区域。4) 编写程序通过最近邻插值与双线性插值等算法将用户所选取的图像区域进行放大与缩小整数倍的操作, 并保存 , 比较几种插值的效果。5) 图像直方图统计与直方图均衡, 要求显示直方图统计, 比较直方图均衡后的效果。6) 能对图像加入各种噪声 , 并通过几种滤波算法实现去噪并显示结果。7) 额外功能。3、总体设计精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 44 页 - - - - - - - - - -
3、MATLAB 课程设计 -GUI 图像处理图一软件的总体设计界面布局如上图所示, 主要分为 2 个部分: 显示区域与操作区域。显示区域 : 显示载入原图 , 以及通过处理后的图像。操作区域 : 通过功能键实现对图像的各种处理。在截图中可见 , 左部为一系列功能按键如“还原” 、 “撤销” 、 “截图”等等 ; 界面正中部分为图片显示部分, 界面中下方为系列功能切换选择组。设计完成后运行的软件界面如下: 图二与图一先比 , 运行后的界面更为简洁。利用“编辑”菜单可调出相应的功能键。例如: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - -
4、- - - - - - -第 2 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理4、具体设计现介绍各个功能模块的功能与实现。4、1 菜单栏的设计 。通过 Menu Editor创建如下菜单 , 通过以下菜单来控制显示或隐藏功能按键精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理以“编辑”菜单中“图像变形”中的“图像翻转”为例说明实现用户界面功能键“图
5、像翻转”的显示与隐藏。实现该功能的程序段如下: function tuxiangfanzhuan_Callback(hObject, eventdata, handles) % hObject handle to tuxiangfanzhuan (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)set(handles 、uipanel7, Visible, on ); if
6、strcmp(get(gcbo, Checked ), on ) set(handles、uipanel7, Visible, on ); set(gcbo, Checked , off); set(handles、uipanel7, Visible, off); else set(gcbo, Checked , on ); end该段程序通过设置“图像翻转”功能键对应的句柄uipanel7 中的“Visible ”属性的开关来实现该功能键的显示隐藏。其她同理。4、2 图像的读取与保存。 (1)利用“文件”菜单中的“打开” 、 “保存为”分别实现图片的读取与保存。精品资料 - - - 欢迎下载
7、 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理利用matlab 中 “ uigetfile”、“imread” “imshow”实现图像文件的读取与显示: function open(hObject, eventdata, handles) % hObject handle to openfile (see GCBO)% eventdata reserved - to be defined in a future version
8、of MATLAB% handles structure with handles and user data (see GUIDATA)=uigetfile(* 、jpg ; * 、bmp; * 、tif; * 、* , 载入图像 ); if isequal()|isequal(pathname,0) errordlg( 没有选中文件 , 出错 ); return ; else file=pathname,; global S % 设置一个全局变量 S,保存初始图像路径 , 以便之后的还原操作 S=file; x=imread(file); set(handles、axes1, Handle
9、Visibility, ON ); axes(handles、axes1); imshow(x); set(handles、axes1, HandleVisibility, OFF ); axes(handles、axes2); imshow(x); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理 handles、img=x; guidata(hObject,handles); end 程序关键部分
10、: 通过=uigetfile(* 、jpg ; * 、bmp; * 、tif; * 、* , 载入图像 ) 选择相应路径打开的图像 ; 通过file=pathname,; x=imread(file); 读取选中的图像; 最后, 通过imshow(x) 在显示区域上显示图像。(2) 图像保存。利用“ uiputfile”、“ imwrite ”函数实现图像文件的保存。function save_Callback(hObject, eventdata, handles) % hObject handle to save (see GCBO)% eventdata reserved - to be
11、 defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) s ,s=uiputfile(* 、jpg ; * 、bmp; * 、tif; * 、* , 保存图像文件 , untitled、jpg ); if isequal(s,0,0) ss ,s; imwrite(handles、img,s); else msgbox( 您按了取消键 , 保存失败 ); end 程序关键部分 : 精品资料 - - - 欢迎下载 - - - - - - - - - - -
12、 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理通s ,s=uiputfile(* 、jpg ; * 、bmp; * 、tif; * 、* , 保存图像文件 , untitled、jpg ) 选择图像文件保存的路径与格式; 然后, 通过ss ,s; imwrite(handles、img,s); 实现对图像的保存。(3) 程序的退出。function exit_Callback(hObject, eventdata, handles) % hObject handle to
13、exit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)clc; close all ; close(gcf); clear; 4、3对图像进行任意的亮度与对比度变化调整, 显示与对比变换前后的图像。运行程序后 , 通过“编辑”菜单中的“常用处理”选中“亮度调节”在显示出相应的功能键后, 通过载入读取图像 , 比并进行处理 , 效果如下 : 亮度处理前 : 精品资料 -
14、- - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理亮度处理后 : 实现程序段如下 : % - Executes on button press in radiobutton12、function radiobutton12_Callback(hObject, eventdata, handles) % hObject handle to radiobutton12 (see GCBO)% eventdata reser
15、ved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,Value) returns toggle state of radiobutton12global T axes(handles 、axes2); T=getimage; prompt= 调整倍数 ; defans= 1 ; p=inputdlg(prompt,input,1,defans); p1=str2num(p1); 精品资料 -
16、 - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理 y=imadjust(handles、img, , ,p1); % 亮度调节 imshow(y); handles 、img=y; guidata(hObject,handles); 对比度处理前 : 对比度处理后 ( 增强 3 倍): 对比度减弱 1、5 倍后: 实现程序段如下 : function uipanel10_SelectionChangeFcn(hOb
17、ject, eventdata, handles) % hObject handle to uipanel10 (see GCBO)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data
18、(see GUIDATA)global T str=get(hObject,string); axes(handles 、axes2); switch str case 增强 T=getimage; prompt= 输入参数 : ; defans=1 ; p=inputdlg(prompt,input,1,defans); p1=str2num(p1); f=immultiply(handles、img,p1); imshow(f); handles、img=f; guidata(hObject,handles); case 减弱 T=getimage; prompt= 输入参数 : ; de
19、fans=1 ; p=inputdlg(prompt,input,1,defans); p1=str2num(p1); f=imdivide(handles、img,p1); imshow(f); handles、img=f; guidata(hObject,handles); end 该程序段主要通过 f=immultiply(handles、img,p1); p=inputdlg(prompt,input,1,defans); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 44 页 -
20、 - - - - - - - - - MATLAB 课程设计 -GUI 图像处理分别实现图像对比度的增强与减弱。 4.4 用鼠标选取图像感兴趣区域, 显示与保存该选择区域 。通过imcrop(x) 函数来实现对图片某一区域的截取, 截取的图片在右框中显示。结合“保存为” , 可把截图处理后的图片保存在指定路径。实现程序段如下 : % - Executes on button press in pushbutton1、function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1
21、 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global T axes(handles 、axes2); T=getimage; x=imcrop(handles 、img); % 截图imshow(x); handles 、img=x; guidata(hObject,handles); 4、5 图像转化为灰度图像。由于在 matlab 中较多的图像处理函数支持对灰
22、度图像进行处理, 故对图像进行灰度转化十分必要。可利用rgb2gray(X) 函数对其她图像进行灰度图像的转化。转化实例如下 : 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理实现程序段如下 : % - Executes on button press in radiobutton16、function radiobutton16_Callback(hObject, eventdata, handl
23、es) % hObject handle to radiobutton16 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,Value) returns toggle state of radiobutton16global T axes(handles 、axes2); T=getimage; x=rgb2gray(handles、
24、img); %RGB?a?a?imshow(x); handles 、img=x; guidata(hObject,handles); 4、6对图像进行放大与缩小整数倍的操作。通过imresize(X,n,mode)函数对图像 X进行放大或者缩小。 N 放大缩小倍数 ,mode为采用的方式。通过处理后可发现保存的图片的比原图放大了(缩小了 ) 。实现的程序段如下 : function uipanel9_SelectionChangeFcn(hObject, eventdata, handles) % hObject handle to uipanel9 (see GCBO)% eventdat
25、a reserved - to be defined in a future version of MATLAB精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理% handles structure with handles and user data (see GUIDATA)global T str=get(hObject,string); axes(handles 、axes2); switch
26、 str case 最近邻插值 T=getimage; prompt= 输入参数 : ; defans=2 ; p=inputdlg(prompt,input,1,defans); p1=str2num(p1); f=imresize(handles、img,p1, nearest); imshow(f); handles、img=f; guidata(hObject,handles); case 双线性插值 T=getimage; prompt= 输入参数 : ; defans=1 ; p=inputdlg(prompt,input,1,defans); p1=str2num(p1); f=
27、imresize(handles、img,p1, bilinear); imshow(f); handles、img=f; guidata(hObject,handles); end4、7图像直方图统计与直方图均衡。 (1) 通过histeq(X) 函数实现直方图均衡。因为此函数只能对灰度图像进行直方图均衡。故应先将彩图转为灰度图像。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理在上一步的基础上对第
28、二幅图进行直方图均衡: 直方图均衡实现程序段如下: % - Executes on button press in pushbutton7、function pushbutton7_Callback(hObject, eventdata, handles) % hObject handle to pushbutton7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)glo
29、bal T axes(handles 、axes2); T=getimage; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理h=histeq(handles、img); imshow(h); handles 、img=h; guidata(hObject,handles); 关键部分 : 通过 h=histeq(handles、img) 进行直方图均衡(2) 直方图统计。通过利用 imhist(X
30、)函数来实现直方图统计。% - Executes on button press in pushbutton8、function pushbutton8_Callback(hObject, eventdata, handles) % hObject handle to pushbutton8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles 、axe
31、s2); x=imhist(handles、img); % 直方图统计x1=x(1:10:256); horz=1:10:256; bar(horz,x1); axis(0 255 0 15000); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理set(handles 、axes2, xtick,0:50:255); set(handles 、axes2, ytick,0:2000:15000);
32、 注意: 横纵坐标的范围应选取适当, 否则, 统计图表有可能超出范围。4、8 加入各种噪声 , 并通过几种滤波算法实现去噪。(1) 加入噪声。通过 imnoise(I,type,parameters)来加入各种噪声。加入椒盐噪声加入高斯噪声 : 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理加入乘性噪声 : 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归
33、纳 - - - - - - - - - -第 17 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理实现程序段如下 : function uipanel4_SelectionChangeFcn(hObject, eventdata, handles) % hObject handle to uipanel4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user d
34、ata (see GUIDATA)global T str=get(hObject,string); axes(handles 、axes2); switch str case 椒盐噪声 T=getimage; prompt= 数日椒盐噪声参数 1: ; defans=0 、02 ; p=inputdlg(prompt,input,1,defans); p1=str2num(p1); f=imnoise(handles、img, salt & pepper,p1); imshow(f); handles、img=f; guidata(hObject,handles); case ? 高斯噪声
35、T=getimage; prompt= 输入高斯噪声 1: , 输入高斯噪声 2 ; defans=0 , 0 、02 ; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 18 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理 p=inputdlg(prompt,input,1,defans); p1=str2num(p1); p2=str2num(p2); f=imnoise(handles、img, gaussian,p1,p2); imshow(f
36、); handles、img=f; guidata(hObject,handles); case 乘性噪声 T=getimage; prompt= 输入乘性噪声 1: ; defans=0 、02 ; p=inputdlg(prompt,input,1,defans); p1=str2num(p1); f=imnoise(handles、img, speckle,p1); imshow(f); handles、img=f; guidata(hObject,handles); end(2) 滤除噪声 ( 椒盐噪声 )。滤波前中值滤波后精品资料 - - - 欢迎下载 - - - - - - - -
37、 - - - 欢迎下载 名师归纳 - - - - - - - - - -第 19 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理线性滤波后自适应滤波后实现程序段如下 : functionuipanel5_SelectionChangeFcn(hObject, eventdata, handles) %图像滤波% hObject handle to uipanel5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles str
38、ucture with handles and user data (see GUIDATA)global T str=get(hObject,string); axes(handles 、axes2); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 20 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理switch str case 中值滤波 T=getimage; k=medfilt2(handles、img); imshow(k); handle
39、s、img=k; guidata(hObject,handles); case 线性滤波 T=getimage; h=1 1 1;1 1 1;1 1 1; H=h/9; i=double(handles、img); k=convn(i,h); imshow(k,); handles、img=k; guidata(hObject,handles); case 自适应滤波 T=getimage; k=wiener2(handles、img,5,5); imshow(k); handles、img=k; guidata(hObject,handles); end低通滤波器滤波后精品资料 - - -
40、欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 21 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理高通滤波器滤波后实现程序如下 : % - Executes on button press in pushbutton14、function pushbutton14_Callback(hObject, eventdata, handles) % hObject handle to pushbutton14 (see GCBO)% eventdata reserved - t
41、o be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles 、axes2); y1=handles 、img; f=double(y1); % 数据类型转换 ,matlab 不支持图像的无符号整型的计算g=fft2(f); % 傅里叶变换g=fftshift(g); % 转换数据矩阵M,N=size(g); nn=2; % 二阶巴特沃斯低通滤波器d0=50; % 截止频率 50m=fix(M/2); n=fix(N/2); f
42、or i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); h=1/(1+0、414*(d/d0)(2*nn); % 计算低通滤波器传递函数 result(i,j)=h*g(i,j); endend精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 22 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理result=ifftshift(result); y2=ifft2(result); y3=uint8(real(y2); imsho
43、w(y3); % 显示处理后的图像% - Executes on button press in pushbutton15、function pushbutton15_Callback(hObject, eventdata, handles) % hObject handle to pushbutton15 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(hand
44、les 、axes2); x=(handles 、img); f=double(x); % 数据类型转换k=fft2(f); % 傅里叶变换g=fftshift(k); % 转换数据矩阵M,N=size(g); nn=2; d0=25; % 截止频率 25m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); % 计算高通滤波器传递函数if d=d0 h=0; else h=1; end result(i,j)=h*g(i,j); endendresult=ifftshift(result); 精品资料 - - - 欢
45、迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 23 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理y2=ifft2(result); y3=uint8(real(y2); imshow(y3); % 显示滤波处理后的图像4、9 还原通过一个全局变量保存原始图像路径, 在需要还原至原始图像时, 重新读取该全局变量即可。实现程序段如下 : % - Executes on button press in pushbutton9、function pushbutton9_Callb
46、ack(hObject, eventdata, handles) % hObject handle to pushbutton9 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global S % 还原 axes(handles、axes2); y=imread(S); f=imshow(y); handles、img=y; guidata(hObject,handles
47、); 4、10 撤销。撤销上一步的操作。 通过另设一个全局变量T 保存就是上一次操作后的图像。实现程序段如下 : - Executes on button press in pushbutton11、function pushbutton11_Callback(hObject, eventdata, handles) % hObject handle to pushbutton11 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handle
48、s and user data (see GUIDATA)axes(handles 、axes2); % 撤销global T imshow(T); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 24 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理handles 、img=T; guidata(hObject,handles); 该程序段只就是简单的显示图像的功能, 其中全局变量 T中储存的就是上一步操作处理后的图像信息。 在以上的各段功能程序段中可
49、见均有“T=getimage; ” ,此句把当前操作前的图像, 即上一次操作后的图像信息赋予全局变量T。4、11 图像变形。(1) 图像翻转。实现图像的镜像翻转。左右翻转 : 上下翻转实现程序如下 : function uipanel7_SelectionChangeFcn(hObject, eventdata, handles) %图像翻转% hObject handle to uipanel7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure wit
50、h handles and user data (see GUIDATA)精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 25 页,共 44 页 - - - - - - - - - - MATLAB 课程设计 -GUI 图像处理str=get(hObject,string); axes(handles 、axes2); global T switch str case 左右翻转 T=handles、img; f=fliplr(handles、img); imshow(f); handles、img=f;