简易图片编辑器设计文档.docx
《简易图片编辑器设计文档.docx》由会员分享,可在线阅读,更多相关《简易图片编辑器设计文档.docx(12页珍藏版)》请在冰豆网上搜索。
简易图片编辑器设计文档
基于Linux平台的课程设计
设计文档
学校福建师范大学闽南科技学院
专业2011级计算机科学与技术
作品名称基于Matlab简易图片编辑器
组长122512011016何亮达
组员122512011045叶少宁
122512011060朱彬彬
122512011066卓建平
一、需求分析
在这高速发展的信息时代中,人们对信息交流和信息处理的技术需求也不断提高。
语音和图像是人类传递信息的主要媒介,其中视觉信息在人类接收信息中占据60%,远远高于其他信息来源,所以人们在日常生活和生产中接触最多的信息种类是图像。
为了便于人类的理解从而改善图像信息;对图像数据进行处理便于机器自动理解。
我们需要对图像进行处理。
二、功能划分
1、流程图
2、主要功能介绍
此程序可以对图片进行简单的编辑。
●截图功能:
可截取用户有需要的图片的部分进行保存
●画笔功能:
在图片上利用画笔进行涂鸦
●放大镜功能:
可对图片的部分进行放大显示查看细节
●马赛克功能:
可对图片进行马赛克处理
●旋转功能:
可对图片进行顺时针或逆时针旋转任意角度
●镜像功能:
可对图片进行水平或垂直的镜像处理
●锐化功能:
可对图片进行锐化
●反色功能:
可对图片进行反色处理
●灰度功能:
可将图片进行灰度变换,变成灰度图片
三、界面设计
下面介绍本作品的界面(图1)中使用到的三种图形化控件:
●按键钮(Push Button):
(如图1中使用橙色框框出的例子)使用鼠标单击按钮,其将会执行一个所定义的动作
●函数Axes可创建坐标系并显示图形化数据,所以常常利用它来作为显示处理的图片(如图1中使用绿色框框出的例子)
图1
●菜单栏Tools中的Menu Editor可以用来对系统的菜单进行设计,在弹出的对话框中单击按钮New Menu(如图2红色框框出)来进行创建菜单,可对创建后的菜单项命名、编写调用函数、快捷键设置等。
若有需求可以通过按钮New Menu Item进行创建子菜单项(如图2绿色框框出)。
图2
●点击使用工具栏中的Toolbar Editor(如图3红色框框出)来建立本系统中的工具栏,即可弹出工具栏设计对话框进行设计(如图4)。
其结果如图5红色框框出所示。
图3
图4
图5
保存设计界面后,Matlab GUI将会生成2个文件:
.Fig文件和.M文件。
其中GUI的图像窗口和所有子对象的完全描述以及所有对象的属性值存储在.Fig文件中;运行GUI需要的所有代码存储在.M文件,它控制GUI并决定GUI对用户的操作响应。
四、主要功能模块的代码
1、截图功能
代码如下:
Rect=imrect;
pos=wait(Rect);
delete(Rect);
[fname,pname,index]=uiputfile({'*.jpg';'*.bmp';'*png'},'Saveas',datestr(now,30));
ifindex==1||index==2||index==3
str2=[pnamefname];
str=str2;
F=getframe(handles.axes1);
imwrite(F.cdata,str,'jpg');
M=imread(str);
new=imcrop(M,pos);
h=figure('visible','off');
imshow(new);
ifindex==1
print(h,'-djpeg',str2);
elseifindex==2
print(h,'-dbmp',str2);
else
print(h,'-dpng',str2);
end
delete(h);
end
该段代码能实现将图片的部分进行截取(如图6蓝色框即为选中要截取的部分),双击截取的部分将弹出保存图片的对话框,选择要保存的路径即能保存在本地电脑(如图7),保存后的图片(如图8)。
图6
图7
图8
2、放大镜功能
代码如下:
global I mapdata;
global m n mode;
mode=1;
set(handles.pushbutton4,'value',0);
[x y]=size(I);
d=zeros(x,y);
d=uint8(d);
f='x.jpg';
imwrite(d,f);
F=getframe(handles.axes1);
imwrite(F.cdata,f,'jpg');
M=imread(f);
m=size(M,1);
n=size(M,2);
mapdata=255 * ones(m+40, n+40, size(M, 3), 'uint8');
mapdata(21:
m+20, 21:
n+20, :
) = M;
p=get(hObject,'value');
if p==0
cla(handles.axes2);
delete(f);
end
该段代码能实现将鼠标所在的图片的部分进行放大显示出来(如图9中的黄色框框放大的效果显示在红色框框),可用来查看图片细节。
图9
3、马赛克功能
代码如下:
pix_grp = 10;
global I
I=getimage(handles.axes1);
height = size(I,1);
width = size(I,2);
mosaic = imresize(I,[floor(height/pix_grp) floor(width/pix_grp)]);
mosaic = imresize(mosaic,[height width],'nearest');
axes(handles.axes1);
img_src=mosaic;
imshow(img_src);
该段代码能实现将图片进行马赛克处理,可用来模糊图片,原图如图10,效果如图11。
图10
图11
五、测试运行
运行界面如图12。
图12
六、总结
1、设计背景
在如今的计算机时代中,图像应用领域在不断的拓宽,使得各行各业无不涉及到图像技术,所以图像处理技术渗透在每个行业中,跟随着科技的脚步图像处理技术取得前所未有的发展和创新,并取得了重大的开拓性成就,使得数字图像处理成为一门引人注目、前景远大的新型学科。
Matlab在实现数字图像处理中非常突出,其处理方便简单易实现。
在Matlab中设计系统中实现图像处理方法可自行编写程序来实现功能,也可调用Matlab工具中提供的一些自带函数来处理。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
它能运行主要的UNIX工具软件、应用程序和网络协议。
它支持32位和64位硬件。
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux以开放源代码的模式及其安全性和稳定性吸引着全世界计算机爱好者。
而随着Linux在中国市场迅猛发展,Linux被越来越广泛的使用。
在这些大环境下,我确定了本次课程设计为Linux平台下基于Matlab的简易图片编辑器。
2、作品评价与遇到的困难
经过小组的共同努力,我们实现了一些基本的图片处理功能,如读取图片、保存图片、将图片进行反色、灰度变换、镜像等,还有一些比较有亮点的功能,如画笔、截图、放大镜、锐化、对图片进行任意角度的旋转、马赛克处理、浮雕效果处理等。
期间也遇到了一些问题,首先最大的问题是将Matlab这个软件安装在Linux系统下,由于Matlab是一个比较大的软件,而且安装步骤比较复杂,我们小组通过网上查找资料和同学的帮助,最终成功的安装了Linux版本的Matlab。
接下来遇到的问题就是功能的实现,由于Matlab占用内存大,在Linux下运行比较不顺畅,有一些功能在Windows下可以使用,在Linux下却比较卡顿,甚至没有反应。
希望以后可以找到更好的方法来实现这个功能,使其在Linux下也能顺利实现。
当然本作品存在的不足之处,例如,由于时间的关系,本文档未能详细完整的介绍本作品的所有处理方法的知识点和实现,只着重介绍了几个方面;本作品上的一些处理方法并未能达到预期的处理效果,相信通过我们更多的努力研究以及伴随着图像处理技术不断的发展和创新,将来能更加完善处理方法从而达到处理图像的预期效果。