MATLAB课程设计报告09信计简彦林.docx
《MATLAB课程设计报告09信计简彦林.docx》由会员分享,可在线阅读,更多相关《MATLAB课程设计报告09信计简彦林.docx(10页珍藏版)》请在冰豆网上搜索。
MATLAB课程设计报告09信计简彦林
(此文档为word格式,下载后您可任意编辑修改!
)
《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=(],[low_out],[low_outnotconvert','error');
else
y1=imnoise(x,'gaussian');%加高斯噪声
f=double(y1);%数据类型转换
k=fft2(f);%傅立叶变换
g=fftshift(k);%转换数据矩阵
[M,N]=size(g);
nn=2;
d0=3;%截止频率为3
m=fix(M2);n=fix(N2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);%计算高通滤波器传递函数
ifd<=d0
notconvert','失败');
else
y1=imnoise(x,'salt&pepper');%叠加椒盐噪声
f=double(y1);%数据类型转换,不支持图像的无符号整型的计算
g=fft2(f);%傅立叶变换
g=fftshift(g);%转换数据矩阵
[M,N]=size(g);
nn=2;%二阶巴特沃斯(Butterworth)低通滤波器
d0=10;%截止频率为10
m=fix(M2);n=fix(N2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
));%计算低通滤波器传递函数
result(i,j)=)函数实现,转化后得到的图像为:
5.8彩色图像的颜色转化
现列出RGB颜色模型到HSV模型的转换程序:
(其他程序类似,函数不同)
axes(notconvert','error');
end
转换后的结果为:
5.9灰度图像边沿检测
在BUTTONGROUP中添加了四个RADIOBUTTON来实现灰度图像边沿检测的功能。
其中提供了三种边沿检测:
sobel、prewitt、canny边沿检测功能。
例如sobel这部分函数实现边沿检测程序为:
case'sobel'
BW=edge(y,'sobel');
imshow(BW);
执行后效果图:
六.调试以及分析
本次课设所使用的MATLAB是7.0版本的,较以前的版本例如6.5的功能更加强大。
首先打开MATLAB7.0,然后在file菜单中选择新建new中的gui,即可弹出一个新建的figure文件。
在设计好figure文件以后,每次打开都要从gui的openexitinggui中打开,才能进行编辑。
在程序设计过程中遇到了许多问题例如一个函数只能对灰度图像处理,不能对RGB图像处理,那么如何才能对RGB图像处理呢?
了解MATLAB和数字图像处理的人都知道用到的很多函数是针对二维数据的,而RGB图像的数据是一个三维矩阵,所以处理要与灰度图像不同,在开始的时候,我认为应该找一个能够应用于三维矩阵的函数,结果却没找到,后来想到可以把三维数据进行降维处理,同样使用二维的函数,只要是同样处理三次。
比如,彩色图像的滤波处理,直方图均衡等。
再例如同一个操作对灰度图像可以使用,当用户选择的是彩色图像时,该操作就会出错?
这是由于设计程序时,本身程序是有针对性的,有些程序只能对灰度图像有效,有些对彩色图像有效,但是用户并不清楚这些,所以在设计的过程中就要考虑全面,要分开设计。
在本次课程设计中,我均对每个程序的开始时,用ifisrgb(x)进行判断。
等等很多问题都要自己去查阅资料,分析问题并解决问题。
七.总结
MATLAB不仅具有强大的数值运算功能,也同样具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的可视化。
计算的可视化可以将杂乱的数据通过图形表示从中观察出其内在的关系。
MATLAB的图形命令格式简单,可以使用不同的线形、彩色、数据点标记等来修饰图像,也可以设计出图形用户界面,方便地进行人机交互。
1.由于MATLAB函数众多,而且课本上提供的都是最基本的函数功能,自己不仅要去图书馆借这方面的专业书籍来阅读。
而且许多函数的编写都要用到C语言,对C语言也有一定得要求。
例如边缘检测函数的实现,在建立了BUTTONGROUP之后,添加RADIOBUTTON按钮,然后右键调用SelectionChangeFcn,弹出M文件,在相应的地方编写。
由于其中包含了四个子功能,实现的时候要用到SWITCH函数。
。
2.通过老师的教导以及本次的课程设计,使自己对MATLABGUI设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。
在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。
相信这都能为以后的学习树立良好范例。
谢谢老师,我会一直加油加油!
八.参考文献
[1]郑阿奇,曹戈,赵阳.MATLAB实用教程[M].北京:
电子工业出版社,2005.5
[2]石博强,赵金.MATLAB数学计算与工程分析范例教程[M].北京:
中国铁道出版社,2005.5
[3]常庚哲,史济怀.数学分析教程[M].北京:
高等教育出版社,2003,6.