本系统的总体设计框架是按照数字图像处理技术所设计的各个方法来设计的,大的主菜单分为八个,在主菜单下有分别舍友若干个在菜单。总体框架图如下图5.1所示。
图5.1 总体框架设计图
5.2 用户界面设计
用户界面是实现人机交互的最主要的平台,在本系统中,用户界面设计的整体实录是通过一个主窗口和其他的子窗口关联。在主窗口中,建立各种图像处理菜单,通过单击菜单去调用一个新的子窗口,在子窗口中实现相应的操作,如下图所示为主窗口界面。主窗口中包括文件、几何变换、正交变换、灰度变换、图像增强、图像分割、图像灰度、图像编码等九个主菜单。有的主菜单下面编有二级菜单和三级菜单,对应的便是实现每一个部分图像编辑的算法。
图5.2 用户操作界面
5.3 文件菜单详细设计
5.3.1 新建画布
由于本系统是一个图像处理系统,那么我就仿照photoshop创建了一个新建菜单,这个菜单用于实现新建一块画布,在画布中可以画图,然后可以选择将绘制的图像保存,在继续做下一步操作。运行结果如下图5.3所示。
图5.3 新建画布
新建画布代码如下:
function newfile_Callback(hObject, eventdata, handles)
set(0,'currentfigure',gui2); %保留当前界面,并跳转至新建绘图界面“gui2”
Gui2部分相关代码如下:
function figure1_WindowButtonDownFcn(hObject, eventdata, handles)
global down pos;
if strcmp(get(gcf,'SelectionType'),'normal')
down=1;
pos=get(handles.axes1,'CurrentPoint');
end
function figure1_WindowButtonUpFcn(hObject, eventdata, handles)
global down pos; %设置全局变量
down=0;
% --- Executes on mouse motion over figure - except title and menu.
function figure1_WindowButtonMotionFcn(hObject, eventdata, handles)
global down pos;
if down==1
p=get(handles.axes1,'CurrentPoint');
line([pos(1,1) p(1,1)],[pos(1,2) p(1,2)],'LineWidth',4);
pos=p;
end
5.3.2 打开图像
打开图像是用imread()函数读取提前放置于工作区内的图片,然后使用inshow()函数显示出来即可,操作结果如下图5.4所示。
图5.4 打开图像
打开图像的相关代码如下:
function open_Callback(hObject, eventdata, handles)
global name path
[filename, pathname] = uigetfile({'*.jpg;*.bmp;*.tif;','MATLAB Files (*.bmp,*.tif,*.jpg)'}, 'Choose a File');
f = imread( strcat(pathname,filename));
path=pathname;
name=filename;
subplot(1,2,1);
imshow(f);
title('原图像','color','g','fontsize',14);
5.3.3 保存图像
保存我们的操作结果几乎在所有的软件中都可以看到,就是将结果保存到指定的路径下,方便我们查看和修改。
运行结果如下图5.5所示
图5.5 保存结果
相关代码如下:
function SaveResult_Callback(hObject, eventdata, handles)
% hObject handle to SaveResult (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename, pathname] = uiputfile({'*.bmp';'*.jpg';'*.jpeg'}, 'Pick an image-file'); 基于MATLAB的图像编辑软件开发(12):http://www.youerw.com/jisuanji/lunwen_541.html