前言
最近学习了下图像处理的知识,自己尝试了下编写sobel等算子的matlab程序(未使用matlab自带函数),然后在用matlab的GUI做了一个丑陋无比的界面。这篇最主要是记录做这个界面以及编写算法时候用到的matlab的知识点。关于图像处理的算法,下篇文章在细聊。
UI介绍
整个界面就如下图那样(忽略他的丑吧!)
界面非常简单,所以功能一目了然,点击加载图像按钮来加载待处理图像,然后点击处理按钮来实现图像处理,通过清除图像 按钮来清除图像。界面右边分别显示 原图像和处理后图像。界面左边可以自己输入各算子的核(按照matlab标准输入矩阵方法输入即可),默认是sobel算子的Gx核。当然如果我们在操作的时候出现错误,也会提示相应的错误是什么。这个界面的功能整体上就是这样,非常简单。
如何实现这个UI?
- 如果大家不是特别了解MatlabGUI的功能的话可以去看下网上大神写的帖子(http://www.matlabsky.com/thread-5217-1-1.html),写的非常好。看下这篇帖子可以了解到MatlabGUI的基本操作。
- 我这个UI只是用到了以下几个控件
- Push Button 按钮
- Static Text 显示信息
- Edit Text 输入信息
- Axes 显示图像
接下来分别介绍下这些控件的使用
Push Button
用于触发特定的事件,比如我要加载一副图像,点击这个按钮,MatlabGUI就会去调用一个特定函数去触发特定的事件,这个特定函数就是叫回调函数,我们只需要在指定的回调函数下编写事件就可以。
加载图像按钮实现
说明几个重要的地方。首先我们加载到的图像,必须传递到其他控件的回调函数下进行处理,而回调函数下变量都是局部变量,我们可以通过handles.imageSoure =imread(str); 这句代码来实现其他控件通过handles.imageSoure来访问这个数据,当然我们必须在加上 guidata(hObject, handles);这句代码,否则其他控件回调函数还是不能访问这个我们自己定义的变量。需要注意的是我们定义变量的时候必须这么定义handles.yourValueName。其他代码我都在注释中有解释,我就不多介绍了。
function