学校开了一门MATLAB的课程,但是用的是2015b版本的教材和软件,APP Designer是在2016b的版本推出的,所以老师教的还是GUI设计。用过APP Designer的都知道,比老版的GUI设计好很多,功能多,代码逻辑也更清晰。但是网上现有的APP Designer的资料很少,可以说基本找不到,这让我在做综合作业时无法借鉴,所以就自己参考了一些资料,整合在 APP Designer中,希望对以后的(大学生)有帮助。
因为作业是以word文档的方式上交作业的,所以这里分享word文档,里面写的很详细。
额,上传不了word文档,,害
目 录
一、概述 4
二、前期准备 4
2.1APP界面搭建 5
2.2APP基本功能搭建 6
2.2.1图片选择 6
2.2.2退出程序 6
2.2.3保存图片 7
2.2.4窗口布局视图 8
三、设计阶段 8
3.1基础图片处理 8
3.1.1原始图片 8
3.1.2图像边界 9
3.1.3图像透视 9
3.1.4图像镜像 10
3.2图像的复杂处理 10
3.2.1空间变换 10
3.2.2雾天处理 11
3.2.3梯度运算 12
3.3清除图片 13
3.4高级功能_特征识别 13
3.5额外功能 16
四、软件使用方法 16
4.1基础图片处理使用方法 17
4.2图像的复杂处理的使用方法 17
4.3清除图片的使用方法 18
4.4高级功能_特征向量的使用方法 18
五、感想和评分 19
六、参考文献 19
MATLAB图像处理基于App Designer
- 概述
MathWorks公司是世界领先的为工程师和科学家提供数学计算软件的开发商,公司始终致力于加快科学研究和工程技术革新的步伐。MATLAB强大的数学分析能力可以帮助科学家和工程师门避开繁琐的编程细节,从而集中精力进行算法研究,大大提高研发效率。如果再配合GUI图形用户界面开发能力,研发工程师门就可以迅速将算法转变为实用软件。Google产品高级副总裁Jonathan Rosenbeng曾说:“如果你想在谷歌工作,请确保你会用MATLAB。”
构建图形用户界面,Matlab提供了两种工具,一是用guide
构建,俗称GUI
,在2019a版本中移除;二是用App Designer
,俗称App
,自2016a版本推出,这是官方推荐的,也是以后主流的框架。
本次实验就是建立在App Designer架构上,相比于GUI,它提供了更美观的用户界面,更简洁更清晰的代码框架,在稳定性和流畅性上也提升了不少。但是在使用方面与GUI基本一致。这次的图形处理有着系统性的框架,也可以被称为一个App。
- 前期准备
2.1APP界面搭建
基本界面有一些组件搭建完成,其中包含面板作为基本的放置界面。按钮作为图形处理的功能选项的触发条件。最后是菜单界面,其中包含APP的基本功能,还有高级功能选项,额外功能选项。界面如下
菜单功能界面如下
2.2APP基本功能搭建
2.2.1图片选择
设想是在每一个功能的按钮按下去后就选择图片,但是功能高达7个,不可能每一个按钮的回调函数都写一遍 ,所以用到辅助函数,也就是全局函数,只需要在每个按钮的回调前面调用这个函数就可以。逻辑框图如下
代码如下
2.2.2退出程序
在菜单下拉后面有显示Exit的选项,按下后就退出程序。其中使用questdlg配合Switch分支选择实现退出的选择。代码如下
退出显示效果如下
默认选择的是No
2.2.3保存图片
保存图片与选择图片类似的操作。代码如下
当然,也用msgbox函数做了对话框提示,如下
2.2.4窗口布局视图
因为功能多,显示的图片也比较多,所以采用了nexttile()函数来分布每一个图片。为了统一管理,将这个函数变量写在了私有属性,相当于全局变量,可以在APP的全部地方调用。代码如下
三、设计阶段
3.1基础图片处理
3.1.1原始图片
显示原始图片只需要调用辅助函数,然后显示在视图布局就可以,并起标题。代码如下
3.1.2图像边界
先调用辅助函数选择图片并获得图片信息,然后通过围绕边界进行镜像反射来扩展像边界。最后用app.Pic这个全局变量接受变换后的图形信息,作为保存的参数。代码如下
3.1.3图像透视
先调用辅助函数选择图片并获得图片信息,然后使用imagesc函数控制数据值到颜色图的颜色映射。最后用app.Pic这个全局变量接受变换后的图形信息,作为保存的参数。代码如下
3.1.4图像镜像
先调用辅助函数选择图片并获得图片信息,然后翻转图片矩阵。最后用app.Pic这个全局变量接受变换后的图形信息,作为保存的参数。代码如下
3.2图像的复杂处理
3.2.1空间变换
先调用辅助函数选择图片并获得图片信息。逻辑图如下
代码如下
最后还是要用app.Pic这个全局变量接受变换后的图形信息,作为保存的参数。
3.2.2雾天处理
雾天是科技与发展带来的不可避免的麻烦,在机器的图像识别中很影响精度,所以有了一下的处理,尽可能的去除雾天的影响。逻辑图如下
代码如下
3.2.3梯度运算
图像微分增强了边缘和其他突变,如噪声,并削弱了灰度变化缓慢的区域。在进行锐度变化增强处理中,细线要比阶梯强,点比细线强。梯度运算也是微分的一种。逻辑图如下
代码如下
3.3清除图片
这个在设计上遇到了好多问题,在常见的是使用clear去清除图片,单是只能清除上一次的。所以改用了cla命令来清除图片,但是无法清除title标题,只能说美中不足。代码如下
3.4高级功能_特征识别
这个是综合作业中最难的一点,涉及到了许多知识,书也是看了好久才看懂,目前实现的方法在精度上有很多不足。首先介绍一下SIFI特征,这个是关键。SIFI即尺度不变特征变换,是一种对于旋转,缩放,亮度变化保持不变的特征,改特征广泛应用于物体识别,机器人地图感知和导航,影像缝合,3D模型建立,手势识别,影像追踪和动作对比等领域。
逻辑图如下
重要函数的功能如下
代码如下
3.5额外功能
这个功能是我自己加上去的,其实与图像处理没有关系,但是我想这是综合作业,所以就加上去了,在前几次的实验的自我练习中要求设计一个计算器,我也用APP Designer写了一个,然后用两个APP连接的方法进行连接起来。代码如下
计算器界面如下
4.1基础图片处理使用方法
4.2图像的复杂处理的使用方法
4.3清除图片的使用方法
4.4高级功能_特征向量的使用方法
需要注意,由于先传入的物品的的图像,在传入背景的图片,所以顺序不能反。
- 感想和评分
MATLAB的功能真的很全,在科研,在科技的前端真的有很大帮助,我想Google的产品副仲裁没有说错,在一个科技公司,MATLAB的能力真的很重要。很感谢这次的综合作业,让我了解了MATLAB的许多强大的功能。这次之所以选择图片处理这个主题,主要是我目前在自学基于Unity的AR Foundation系统的内容,无论是AR,VR还是MR其追踪定位的能力是决定系统可靠性和精度的关键。然而一切技术都要来自于特征值的匹配,系统精度取决于特征值匹配算法的精度。在查阅资料时发现,实现特征值匹配的方法其实有很多,例如Haar-like特征,Hog特征,LBP特征等等,不同的方法在不同的物品,不同背景的颜色,光照强度等等的特征点识别有差别。
然而时间精力有限,本次从搭建框架,每一个回调都是自己亲自写的,当然也参照了许多大佬的案例代码。在实践过程中遇到了许多问题,如许多函数的功能根本就不知道怎么用,是否存在我想要的功能的函数,这里感谢群友的帮助,让我学会了不懂的可以doc 打开MATLAB的手册,一一寻找。当然本次的APP Designer也有很多问题,比如清除图片不能清除标题,保存只能保存最近一张处理的图片。时间精力有限,目前只能这样,等待以后的改进。
从工作量上来讲,属于比较多的,且网上大都是老版GUI的案例,新版的APP Designer少之甚少,无借鉴的案例。从难度来讲,书中提及的图形处理方面已经很成熟了,很难有创新。最难的部分是特征匹配,但也是参考的书中方法,只不过通过自己的理解和方法整合到APP Designer中。
- 参考文献
[1]王文峰.MATLAB计算机视觉与机器认知[M].北京:北京航空航天大学出版社,2017.8
[2]黄少罗.MATLAB2020图形与图像处理从入门到精通[M].北京:机械工业出版社,2020.12
[3]李星新.MATLAB2020GUI程序设计从入门到精通[M].北京:机械工业出版社,2021.4
[4]Erin Pangilinan.下一代空间计算:AR与VR创新理论与实践[M].北京:电子工业出版社,2020.10