实验室学习报告
选题:基于 MATLAB GUI 的数字图像处理系统设计
学习方法:
- 全篇阅读,梳理论文思路,了解大致方向
- 精读细读,逐个击破
- 了解相关概念,丰富理论知识
- 通过代码实践,加深理解
不足与问题
- MATLAB了解不够,很多基本语句不理解
研究背景
设计出发点
- 数字图像处理技术的不断发展和完善,应用前景广阔,应用领域广泛,GUI 的设计趋于流行。
- 科技进步给图像处理技术提出了更高的要求和更加明确的方向。
设计目的
- 给数字图像处理技术的学习和研究提供良好平台
- 用户在使用本系统的时候,无需关心所执行的操作是如何运行,而把重点集中在所提供的界面上。
实现功能
- 文件:打开,保存,打印预览和打印等;
- 编辑:图像大小,加噪,旋转等;
- 图像变换:DFT,DCT,RADON 变换等;
- 图像类型转换,图像滤波,图像边缘检测等;
- 人性化的软件的图形界面,操作简单,易于功能
- 修改和功能扩充。
运行环境
MATLAB 提供的 GUI 平台
-
M A T L A B MATLAB MATLAB
MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可用来创建用户界面,以及调用其它语言(包括C、C++、Java、Python、FORTRAN)编写的程序。 MATLAB主要用于数值运算,但利用为数众多的附加工具箱,它也适合不同领域的应用,例如控制系统设计与分析、影像处理、深度学习、信号处理与通讯、金融建模和分析等。 -
G U I GUI GUI
GUI 即人机交互图形化用户界面设计,图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。
系统设计的关键点
句柄的获取
1.句柄图形
- 概念:一组底层图形函数的名称
- 用途:在 MATLAB 中生成图形,他提供了对图形的高级控制
- 基本思想:MATLAB 的每一个可视部分就是一个对象,每个对象都有一个相应的唯一标示符,这就是句柄。
- 作用:通过对句柄图形的操作,就可以对该句柄图形所对应的对象进行控制,比如修改属性,调用其回调过程等。
2.图形对象
- uimenu(界面菜单)
基础例子
代码实现
h = figure;
set(h,'unit','normalized','color','default',...
'position',[0.1 0.1 0.8 0.8],'menu','none',...
'numbertitl','off','name','GUI 生成菜单');
h1 = uimenu(h,'label','一级菜单');
h2 = uimenu(h1,'label','二级菜单');
h3 = uimenu(h2,'label','三级菜单');
h4 = uimenu(h3,'label','四级菜单');
h5 = uimenu(h4,'label','五级菜单');
h6 = uimenu(h5,'label','六级菜单');
h7 = uimenu(h6,'label','七级菜单');
h8 = uimenu(h7,'label','八级菜单');
h9 = uimenu(h8,'label','九级菜单');
代码解析:
- set(h,
*‘unit’,‘normalized’,属性
‘color’,‘default’,…设置颜色, d e f a u l t default default为默认
‘position’,[0.1 0.1 0.8 0.8],位置
‘menu’,‘none’,…存在 n o n e none none和 f i g u r e figure figure两种情况,是否显示菜单
‘numbertitl’,‘off’,存在 o n on on和 o f f off off两种情况,表示默认的名字是否显示的问题
‘name’,‘GUI 生成菜单’);自定义名称
效果图
- uicontrol
用途:用于创建uicontrol图形对象(用户界面控件),以实现 图形用户界面
简单语句举例
代码
hpop = uicontrol('Style', 'popup',...
'String', 'hsv|hot|cool|gray',...
'Position', [20 320 100 50],...
'Callback', ' setmap');
效果示意:
- uicontextmenu (右键菜单)
举例
代码
a = figure;
GUI.bMenu_=uicontextmenu;
m1 = uimenu(GUI.bMenu_,'Label','Time');
m11= uimenu(m1,'label','up','callback',@time_sortup);
set(a,'uicontextmenu',GUI.bMenu_);
效果图
3.GUI对象层次结构
- 最下层的每一个基本的对象(影像对象,线条对象等就是我们需要处理的对象)都是基于每一个的坐标系对象的
- 常见的获取句柄的函数
-
g
c
f
gcf
gcf :获取当前图形窗口的句柄
g c a gca gca :获取当前坐标轴的句柄
g c o gco gco :获取当前对象的句柄
g c b o gcbo gcbo :获取当前正在调用的对象的句柄
g c b f gcbf gcbf :获取包括正在执行调用的对象的图形的句柄
自定义参数实现
1.设计目的
用户可以在弹出的对话框中,输入任意自定义的参数来实现相关处理的操作
2.调用函数
- 函数调用格式:answer = inputdlg(prompt,title,n lines,def)
- 详细解析:
answer 字符串单元数组,用于储存用户输入的字符串或字符数
=inputdlg(prompt, 提示字符串
title,对话框标题
n lines,输入最大行数
def) 认的输入字符串,维数与 prompt 相同 - 举例
代码
prompt={‘阶数:’,’截止频率:’};
def={'2','5'};
answer=inputdlg(prompt,'请输入:',1,def);
If~isempty(answer)
a = str2num(answer{1});
b = str2num(answer{2});
end
运行效果