最新版MATLAB课程设计报告09信计简彦林.docx
《最新版MATLAB课程设计报告09信计简彦林.docx》由会员分享,可在线阅读,更多相关《最新版MATLAB课程设计报告09信计简彦林.docx(19页珍藏版)》请在冰豆网上搜索。
最新版MATLAB课程设计报告09信计简彦林
《matlab》课程设计
MATLAB图像处理
院(系)名称信息工程学院
专业班级09普本信计
学号
学生姓名简彦林
指导教师马艳琴
2011年06月12日
数学软件课程设计评阅书
题目
MATLAB图像处理
学生姓名
简彦林
学号
指导教师评语及成绩
指导教师签名:
年月日
答辩评语及成绩
答辩教师签名:
年月日
教研室意见
总成绩:
教研室主任签名:
年月日
课程设计任务书
2010—2011学年第二学期
专业班级:
09普本信计学号:
姓名:
简彦林
课程设计名称:
MATLAB
设计题目:
MATLAB图像处理
完成期限:
自2011年06月06日至2011年06月12日共1周
一、设计目的
我们在现实生活中会遇到很多问题,比如说图像处理就是现实中会遇到的问题,而且是数学的一个非常重要的部分。
运用数学软件解决图像处理问题就会使问题变得简单,我们可以对数学软件的多方面应用有进一步了解和认识。
综合运用MATLAB工具箱实现图像处理的GUI程序设计
二、设计要求
1、运用MATLAB等工具。
2、对图像问题的处理。
3、按照格式要求写出3000字文档。
三、参考文献
1.郑阿奇,曹戈,赵阳.MATLAB实用教程[M].北京:
电子工业出版社;2008
2.石博强,赵金.MATLAB数学计算与工程分析范例教程[M].北京:
中国铁道出版社,2005,5.
3.常庚哲,史济怀.数学分析教程[M].北京:
高等教育出版社,2003,6.
计划答辩时间:
2011年6月12日
工作任务与工作量要求:
查阅文献资料不少于3篇,课程设计报告1篇不少于3000字
指导教师(签字):
教研室主任(签字):
批准日期:
年月日
摘要
MATLAB不仅具有强大的数值运算功能,也同样具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的可视化。
计算的可视化可以将杂乱的数据通过图形表示从中观察出其内在的关系。
MATLAB的图形命令格式简单,可以使用不同的线形、彩色、数据点标记等来修饰图像,也可以设计出图形用户界面,方便地进行人机交互。
关键词:
图像、灰度、亮度、颜色、MATLAB等
目录
一.课程设计目的2
二.课程设计题目描述和要求2
三.课程设计报告内容2
四.程序需求和功能模块分析3
五.详细设计过程4
5.1图像的读取、保存和退出4
5.2图像的编辑:
6
5.3旋转功能10
5.4加入和去除噪声11
5.5直方图统计12
5.6频谱分析:
13
5.7灰度图像处理16
5.8彩色图像的颜色转化16
5.9灰度图像边沿检测17
六.调试以及分析18
七.总结19
八.参考文献19
一.课程设计目的
综合运用MATLAB工具箱实现图像处理的GUI程序设计。
二.课程设计题目描述和要求
1)熟悉和掌握MATLAB程序设计方法
2)掌握MATLABGUI程序设计
3)学习和熟悉MATLAB图像处理工具箱
4)学会运用MATLAB工具箱对图像进行处理和分析
三.课程设计报告内容
学习MATLABGUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop。
要求:
按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。
然后按照自己拟定的功能要求进行程序设计和调试。
1)图像的读取和保存。
2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。
3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。
4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。
5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。
比较去噪效果。
四.程序需求和功能模块分析
在设计过程中出满足了一般的数字图像处理功能。
例如读取图像、保存图像、图像的旋转变换、加噪声去噪声、彩色图像直方图统计、频谱分析、灰度图像处理和彩色图像的颜色转换模型等基本功能。
本设计还加入了边沿检测和用滑动条控制图像的亮度和gamma值等功能。
在菜单栏中还加入了快捷键功能。
由于作者的水平有限,实现的功能不是很多,而且都是一般的功能;
(1)、将一个RGB图像转换为灰度图像。
(2)、可以对图像做各种变换,如旋转等。
(3)、有时并不需要图像显示其细节部分,只要其轮廓,这时候不要很高的灰度级。
可以把图像转换为二值图像,进行图像腐蚀,或是创建索引图像等。
(4)、分析一个图像的频谱特征,利用傅里叶变换,将图像从空间域变换到频域,然后进行各种处理,经过高通滤波器或是低通滤波器。
(5)、为了科学地定量描述和使用颜色,人们提出了各种颜色模型,按用途可分为三类:
计算颜色模型,视觉颜色模型和工业颜色模型。
有时为了不同的需要,要对颜色模型进行转换。
设计完成后的基本效果图如下:
五.详细设计过程
5.1图像的读取、保存和退出
打开:
为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件,设计为可以读取任何格式的图像。
Uigetfile函数的调用格式为[name,path]=yigetfile(…),在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。
如果按下取消按钮或是发生错误,则返回值是0。
根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.img。
执行效果如下:
如果没有选中任何文件则弹出错误对话框:
保存图像
同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。
执行后效果图如下:
如果没有保存弹出错误对话框:
退出
程序如下所示:
clc;
closeall;
close(gcf);
5.2图像的编辑:
灰度
实现RGB图像转换成为灰度图像,如果本来就是灰度图像则不能转化,弹出错误对话框。
由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为:
y=(handles.img(:
:
1));
imshow(y);
但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。
另一种方法就是,运用rgb2gray函数实现彩色图像到灰度图像的转换。
程序为:
y=rgb2gray(handles.img);
imshow(y);
这个程序只能用于RGB图像转换灰度图像,当原始图像本来就是灰度图像时,运行该程序时就会出错,但是使用者在使用时有时并不知道这些,为了使该程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示提示类信息。
执行效果如下:
如果读入的是灰度图像,则弹出错误对话框:
亮度和gamma值调整
用imadjust函数,其调用格式如下:
g=imadust(f,[low_inhigh_in],[low_outhigh_out]),gamma)
gamma表示映射性质,默认值是1表示线性映射。
由于该函数有五个参数需要输入,为了方便用户改变,所以这里设计一个输入对话框,用户通过对话框把五个参数赋值给[low_inhigh_in],[low_outhigh_out],gamma这五个参数,如下一组命令建立了如图所示的输入对话框:
prompt={'inputparameter1',''inputparameter2','inputgamma'};
defans={'[00.7]','[01]','1'};
p=inputdlg(prompt,'inputparameter',1,defans);
但是,这种方法并不能很好的让用户能够对图像进行任意的亮度和对比度变化调整,有时并不事先知道参数的值要多少,也不关心,而是任意调节的,直到满意为止。
所以应该用滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。
由于imadjust函数有五个参数,所以原则上需要设计五个滑动条来调节对比度,这对用户来说显然比较麻烦,因此在设计的时候固定其中的三个参数,通过调节两个参数的值来改变亮度和对比度。
[0handles.beta],[01],handles.gm,这里的变量handles.beta和handles.gm就通过滑动条得到,滑动条设计如下图:
亮度调整的tag名为ld,取值范围0~1,gamma值的tag名为gamma,取值范围为0~5。
获取滑动条参数的程序如下:
handles.beta=get(handles.ld,'value');
handles.gm=get(handles.gamma,'value');
执行该操作,调节滑动条到上图所示位置,结果如下图
截图
在MATLAB中,用函数imcrop实现对图像的剪切操作。
该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。
Imcrop函数的调用格式如下:
y=imcrop(handles.img);
不管handles.img是三维的还是二维数据,该函数都能进行操作。
下图就是对图像的截图:
缩放功能
在MATLAB中,用函数imresize来实现对图像的放大或缩小。
插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。
该函数的调用格式如下:
B=imresize(A,m,method)
其中:
参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。
B=imresizee(A.m,method)表示返回原图A的m倍放大图像(m小于1时实际上是缩小);
放大后的效果图不是很明显,但是缩小后的效果就比较明显了:
5.3旋转功能
上下旋转:
函数flipud是实现一个二维矩阵的上下翻转,如
a=[12;34],经过该函数处理后,原矩阵变为[34;12];所以利用该函数也可以对图像进行上下翻转处理,但由于该函数针对二维数据的处理,所以在写程序时,要对RGB图像和灰度图像分开处理,这就要用到isrgb函数来判断,如果是灰度图像,则可以直接用这个函数进行处理,否则就要对RGB图像进行降维处理,
fork=1:
3
y(:
:
k)=flipud(x(:
:
k));
end
执行后的效果如上图所示。
左右旋转
对图像的左右翻转也可以用fliplr函数来处理,同样的,也要对灰度和彩色图像分开处理,处理结果如图:
任意角度的旋转
5.4加入和去除噪声
经常用到的噪声有三种,高斯噪声,椒盐噪声,乘性噪声,可以通过以下三个