Matlab图像处理创新实践-实验4【综合设计大实验——GUI综合设计】
- Matlab图像处理创新实践-实验1【图像滤波基础(1)】
- Matlab图像处理创新实践-实验2【图像滤波基础(2)】
- Matlab图像处理创新实践-实验3【图像锐化】
- Matlab图像处理创新实践-实验4【大实验——GUI综合设计】
- Matlab实验4——GUI程序操作说明
目 录
一、实验目的
二、实验内容
三、实验过程及结果
步骤1:启动Matlab,在命令行窗口中输入“guide”,新建GUI(创建空白GUI)。或者点击“新建”再点击“图形用户界面”,新建GUI。
步骤2:在左边空间栏中选择“Static Text”(静态文本),将控件放入面板中,并右键单击该控件,选择“Property Inspector”(属性检查器)。
步骤3:在弹出的属性对话框中,设置控件的属性值。
步骤4:添加静态文本控件后,再添加:可编辑文本(Edit Text)、轴(Axes)、按钮(Push Button)等控件,右键点开其属性框,修改他们的String属性。右键点击“打开”按钮,选择“查看回调”,点击“Callback”。
步骤5:由于是先创建的“打开”按钮,所以,“打开”按钮对应的控件名称编号是1;控件名称编号为1的下面编号为2的Callback对应的则是“处理”按钮。
步骤6:保存程序代码,单击菜单上的运行图形(Ctrl+T)按钮,实现效果图如下:
步骤7:在GUI图形界面上,添加更多的控件,显示多种滤波器的滤波效果。
步骤8:在GUI图形界面上,添加更多的控件,显示图像的灰度图、锐化效果图。
四、分析与思考
附录:代码汇总
一、实验目的
掌握matlab环境下,图形用户界面(GUI)的设计方法;同时将学过的图像处理方法和理论进行综合运用和设计。
二、实验内容
第一阶段:根据为你们提供好的GUI说明文档,按照要求一步步进行设计,并最终完成一个基本的具有图像处理功能的可视化程序。
第二阶段:在第一阶段工作基础上,根据自己能力将该程序进行适当的功能扩展。(比如,可以在用户界面上实现其他滤波的操作、或者实现可调节的锐化操作等等)。尽量多发挥创造性,保证程序的个性化和独特性,以防千篇一律导致分数受影响。
相关主要函数说明如下:
[filename pathname] = uigetfile({'*.jpg';'*.bmp';'*.png';'*.*'},'打开图片'); % 打开文件对话框
str = [pathname filename]; % 将两个字符串合并成一个字符串
axes(handles.axes1); % 打开axes1的句柄,对axes1进行操作
三、实验过程及结果
【在这里描述下你的实验操作过程和相应代码,以及你得到的最终结果,需图文并茂】
步骤1:启动Matlab,在命令行窗口中输入“guide”,新建GUI(创建空白GUI)。或者点击“新建”再点击“图形用户界面”,新建GUI。
步骤2:在左边空间栏中选择“Static Text”(静态文本),将控件放入面板中,并右键单击该控件,选择“Property Inspector”(属性检查器)。
步骤3:在弹出的属性对话框中,设置控件的属性值。
步骤4:添加静态文本控件后,再添加:可编辑文本(Edit Text)、轴(Axes)、按钮(Push Button)等控件,右键点开其属性框,修改他们的String属性。右键点击“打开”按钮,选择“查看回调”,点击“Callback”。
步骤5:由于是先创建的“打开”按钮,所以,“打开”按钮对应的控件名称编号是1;控件名称编号为1的下面编号为2的Callback对应的则是“处理”按钮。
在“打开”按钮的callback函数下编写代码,完成对话框打开文件,并显示在axes1控件框内。然后在“处理”按钮的callback函数下编写代码,让其实现:将两个Edit Text文本框内的数字转换为高斯滤波器的参数,并对打开的图像进行高斯滤波并显示在axes2上。
步骤6:保存程序代码,单击菜单上的运行图形(Ctrl+T)按钮,实现效果图如下:
步骤7:在GUI图形界面上,添加更多的控件,显示多种滤波器的滤波效果。
步骤8:在GUI图形界面上,添加更多的控件,显示图像的灰度图、锐化效果图。
利用double()将原图像类型转换为浮点型,然后按照“原图像 + 边缘图像”的模式,进行计算。利用uint8()或mat2gray()将得到的结果图像,进行类型转换,并将原图像和锐化后的图像一同显示在窗口中。
四、分析与思考
【在此描述下你从该实验中的总结内容,得出的结论,并对整个系统功能进行评述,可以查阅资料,最后总结下整个课程的收获。该部分占最终成绩的50%】
此次试验,独立完成,收获甚多。从0开发一个可以对图片进行滤波的GUI程序,令我对“图像处理创新实践”这门课有了更多的认识。一个GUI程序,主要由两个文件所构成(.figure:界面文件;.m:程序文件)。使用Matlab可以对图像进行很多的操作,如:旋转、裁剪、缩小及放大等基本功能,高斯滤波、平滑滤波、锐化滤波等滤波操作。
在GUI程序中,可以添加很多控件,分别实现不同的功能。在步骤8的程序中,设置了5个按钮,分别实现“打开图片”、“设置参数对图片进行滤波”、“显示多种滤波效果”、“灰度处理”、“图像锐化”等功能。在对图像进行处理的同时,给图像处理结果设置标题,可以令使用者对图像处理结果有更加直观的体验。在“设置参数对图片进行滤波”的功能实现中,使用者可以设置滤波器的类型、尺寸以及方差,可以看到多种滤波器的不同滤波效果。
关于此GUI程序的评述:此GUI程序较为稳定,内容较为丰富,实现的功能涉及到本门课程的4篇实验报告,耗时较长,设计合理。
课程收获总结:非常感谢老师的指导,我在本门课程中学到了很多知识,学会了“使用Matlab对图像进行多种滤波处理”“使用Matlab涉及GUI程序”等重点内容。但在课程的学习中,仍有很多不足,课下我会好好学习、多查资料、勤加练习。
评分标准:①是否按时出勤实验课,实验任务是否全部完成,占50%;② 实验代码及报告的格式是否规范,代码是否注释,是否美观,是否详尽,是否真实,占40%;③ 实验作业及报告是否按时提交,占10%。
报告文件的命名格式:完整学号
例如:541807010101
附录:代码汇总
function varargout = experiment04(varargin)
% EXPERIMENT04 MATLAB code for experiment04.fig
% EXPERIMENT04, by itself, creates a new EXPERIMENT04 or raises the existing
% singleton*.
%
% H = EXPERIMENT04 returns the handle to a new EXPERIMENT04 or the handle to
% the existing singleton*.
%
% EXPERIMENT04('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in EXPERIMENT04.M with the given input arguments.
%
% EXPERIMENT04('Property','Value',...) creates a new EXPERIMENT04 or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before experiment04_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to experiment04_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help experiment04% Last Modified by GUIDE v2.5 21-Nov-2020 20:06:19% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @experiment04_OpeningFcn, ...'gui_OutputFcn', @experiment04_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT% --- Executes just before experiment04 is made visible.
function experiment04_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to experiment04 (see VARARGIN)% Choose default command line output for experiment04
handles.output = hObject;% Update handles structure
guidata(hObject, handles);% UIWAIT makes experiment04 wait for user response (see UIRESUME)
% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.
function varargout = experiment04_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structure
varargout{1} = handles.output;function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
endfunction edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)axis off % 去除刻度
% uigetfile:常规打开文件列表函数【filename:文件名;pathname:路径;*.*:对应所有文件】
[filename pathname] = uigetfile({'*.jpg';'*.bmp';'*.png';'*.*'}, '打开图片'); % 函数返回值:文件名称、文件路径
str = [pathname filename]; % 合并字符串(合并文件名称与路径)global im; % 全局变量,其它函数也可以使用
im = imread(str);
axes(handles.axes1); % 打开axes1(坐标轴名)的句柄,对axes1进行操作 设定图像显示到哪个组件上 axes:显示图像处理效果
str1 = ['图片位置:' str];
imshow(im);
title(str1);% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)global im;
gsize = get(handles.edit1, 'String'); % 通过句柄找到对应的组件-尺寸
gsigma = get(handles.edit2, 'String'); % 通过句柄找到对应的组件-方差
gtype = get(handles.edit3, 'String'); % 通过句柄找到对应的组件-滤波器类型
f = fspecial(gtype, str2num(gsize), str2num(gsigma)); % str2num():字符串转数字
im_f = imfilter(im, f);axes(handles.axes2);
imshow(im_f);
str = [gtype '滤波器;' '尺寸:' gsize ';方差:' gsigma]; % 合并字符串(合并文件名称与路径)
title(str);% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)global im;x = im; % 读取图片:将图像数据读取到Matlab环境中
smallx = imresize(x, 0.05);
imshow(smallx);
gx = rgb2gray(smallx);f1 = fspecial('average', 5); % 1、均值滤波器
gx1 = filter2(f1, gx);
f2 = fspecial('gaussian'); % 2、高斯滤波器
gx2 = filter2(f2, gx);
f3 = fspecial('laplacian'); % 3、拉普拉斯滤波器
gx3 = filter2(f3, gx);
f4 = fspecial('sobel'); % 4、sobel滤波器
gx4 = filter2(f4, gx);
f5 = fspecial('prewitt'); % 5、prewitt滤波器
gx5 = filter2(f5, gx);
f6 = fspecial('disk'); % 6、disk滤波器
gx6 = filter2(f6, gx);
f7 = fspecial('log'); % 7、log滤波器
gx7 = filter2(f7, gx);
f8 = fspecial('motion'); % 8、motion滤波器
gx8 = filter2(f8, gx);axes(handles.axes3);
imshow(smallx);
title('缩小至原来的0.05倍');
axes(handles.axes4);
imshow(uint8(gx1));
title('1、均值滤波器');
axes(handles.axes5);
imshow(uint8(gx2));
title('2、高斯滤波器');
axes(handles.axes6);
imshow(uint8(gx3));
title('3、拉普拉斯滤波器');
axes(handles.axes7);
imshow(uint8(gx4));
title('4、sobel滤波器');
axes(handles.axes8);
imshow(uint8(gx5));
title('5、prewitt滤波器');
axes(handles.axes9);
imshow(uint8(gx6));
title('6、disk滤波器');
axes(handles.axes10);
imshow(uint8(gx7));
title('7、log滤波器');
axes(handles.axes11);
imshow(uint8(gx8));
title('8、motion滤波器');function edit3_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit3 as text
% str2double(get(hObject,'String')) returns contents of edit3 as a double% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
end% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)global im;
x = im; % 读取图片:将图像数据读取到Matlab环境中
gx = rgb2gray(x);
f1 = fspecial('average');
gx1 = filter2(f1, gx);
axes(handles.axes12);
imshow(uint8(gx1));
title('均值滤波器-灰度图像处理');% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global im;
x = im; % 读取图片:将图像数据读取到Matlab环境中
gx = rgb2gray(x);F = fspecial('average', 66); % F = fspecial('prewitt', Size);
y = filter2(F, gx);
xy = double(gx) - y; % 进行数据转换,保证数据类型一致;高频图、轮廓、边缘
sharpx = double(gx) + xy; % 原图+轮廓:清晰度更高axes(handles.axes13);
imshow(uint8(sharpx));
title('average滤波器图像锐化');
当时写了很久...
自己电脑
Matlab图像处理创新实践-实验4【综合设计大实验——GUI综合设计】相关推荐
- Matlab图像处理创新实践-实验3【图像锐化】
Matlab图像处理创新实践-实验1[图像滤波基础(1)] Matlab图像处理创新实践-实验2[图像滤波基础(2)] Matlab图像处理创新实践-实验3[图像锐化] Matlab图像处理创新实践- ...
- Matlab图像处理创新实践-实验2【图像滤波基础(2)】
Matlab图像处理创新实践-实验1[图像滤波基础(1)] Matlab图像处理创新实践-实验2[图像滤波基础(2)] Matlab图像处理创新实践-实验3[图像锐化] Matlab图像处理创新实践- ...
- Matlab图像处理创新实践-实验1【图像滤波基础(1)】
Matlab图像处理创新实践-实验1[图像滤波基础(1)] Matlab图像处理创新实践-实验2[图像滤波基础(2)] Matlab图像处理创新实践-实验3[图像锐化] Matlab图像处理创新实践- ...
- 【Qt设计开发】GUI界面设计开发
文章目录 一.Qt简介和下载安装 二.Qt入门 2.1 创建第一个项目 2.2 快捷键和命名规范 2.3 Qt项目和VS2022项目相互转换 三.Qt基础 3.1 Qt对象树和窗口坐标系概念 3.2 ...
- 网页设计大作业模板-网页设计大作业——丝绸之路网页设计(6页)
HTML5+CSS大作业--丝绸之路网页设计(6页) 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家居. 酒店. 舞蹈. 动漫. 明星. 服装. 体 ...
- 网页设计大作业模板-网页设计大作业(文房四宝 5页)-实训素材
⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 | 茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | ...
- 基于MATLAB图像处理的硬币个数识别系统
基于MATLAB图像处理的硬币个数识别系统 1.课题介绍 本设计为基于MATLAB的硬币图像识别统计装置,通过数码相机获取平铺无重叠堆积的硬币的图像,并通过Matlab工具处理后统计硬币的数目.通过控 ...
- 广西大学考计算机可以拿创新学分吗,广西大学创新实践学分实施办法
广西大学创新实践学分实施办法 第一条 为更好地贯彻落实党的教育方针和<中华人民共和国高等教育法>,适应广西经济社会发展需要,全面推进素质教育,增强学生创新实践意识,加强对学生创新实践能力的 ...
- CCNA笔记之第十九节:RIP协议(大实验3)
RIP大实验都是以大实验背景为基础,在其上进行的实验,拓扑图是相同的. 3. RIP大实验3: 修改rip计时器时间:update interval 5s,invalid 10s,holddown为2 ...
最新文章
- mysql和oracle冲突吗_三分钟带你分清MySQL 和Oracle之间的误区
- 看清本质:程序员为什么会写Bug?
- Echart遇到的问题:tooltip提示框大小异常
- 实验 5 性能测试脚本录制和开发实验报告--软件功能测试与性能测试实验
- 开关电源中的磁性元件书籍_总结丨PFC开关电源的效率优化措施
- JZOJ5918【NOIP2018模拟10.20】Car
- Oracle DBA的SQL编写技能提升宝典(含SQL资源)
- 关于并发数与在线数的概念
- 谷爱凌惊“险”一跳,最少价值10个亿!
- COCOS2D坐标系统的一些说明
- 设计师常用网页小图标大全
- DOD,与cisco三层模型
- AutoCAD全面卸载的方法
- android ListView刷新抢占屏幕焦点
- JS输入框统计文字数量,并过滤拼音时的统计
- 这些各行各业优秀的ppt模板推荐给大家
- 人工智能顶会AAAI 2023放榜!网易伏羲7篇论文入选
- 查找并删除EXCEL文件中的重复行(整行重复)
- 程序员如何用“心“表白(结尾附源码)
- 【用户投稿】优麒麟社区懒人版本(含软件全家桶)一键安装
热门文章
- html float菜鸟,这些年,我们前端菜鸟遇到的坑(1)--CSS易错点--float、透明度、rem......
- 计算机无法用telnet,为何我的电脑cmd没法使用telnet命令?
- keil5图标变成白色_keil5菜单栏图标错乱怎么办? keil5菜单栏快捷图标错位的解决办法...
- 十三、深入Java的Scanner类
- 新手如何拿下pytorch
- 今日arXiv精选 | 12篇EMNLP 2021最新论文
- RealFormer:把残差转移到Attention矩阵上面去
- 推荐算法注意点和DeepFM工程化实现
- 重构世界的真实,6万奖金的超分辨率图像性能挑战赛邀你来战!
- 岗位推荐 | 腾讯AI Lab多媒体算法组招聘正式员工和实习生