ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:5.59MB ,
资源ID:5707608      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5707608.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MATLAB设计实践报告要点.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MATLAB设计实践报告要点.docx

1、MATLAB设计实践报告要点 MATLAB 实践 课程设计学生姓名: 学 号: 专业班级: 指导教师: 二一二 年 六月目 录1. 设计目的32. 题目分析32.1课程设计的基本要求32.2要求实现功能33、总体设计43.1总体界面外观43.2菜单栏44、具体设计54.1文件54.2特殊处理64.3灰度图像处理74.4图像的常用操作84.5快捷工具175、结果分析196、心得体会197、参考书目208、附 录201、设计目的综合运用MATLAB工具箱实现图像处理的GUI程序设计,设计和实现自己的Photoshop。2、题目分析 课程设计的基本要求 1)熟悉和掌握MATLAB 程序设计方法2)掌

2、握MATLAB GUI 程序设计3)学习和熟悉MATLAB图像处理工具箱4)学会运用MATLAB工具箱对图像进行处理和分析 要求实现功能1)图像的读取和保存。2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。6)为图像添加边框特效,并保存。 信息化社会中,计算机在各种信息处理

3、中发挥着重要的作用。我们可以借助计算机,对数字图像进行处理,以达到不同的效果。根据题目的要求,除了实现要求的功能外,还有很多的功能需要用到。(1)、将一个RGB图像转换为灰度图像。(2)、可以对图像做各种变换,如旋转等。(3)、有时并不需要图像显示其细节部分,只要其轮廓,这时候不要很高的灰度级。可以把图像转换为二值图像,进行图像腐蚀,或是创建索引图像等。(4)、分析一个图像的频谱特征,利用傅里叶变换,将图像从空间域变换到频域,然后进行各种处理,经过高通滤波器或是低通滤波器。(5)、为了科学地定量描述和使用颜色,人们提出了各种颜色模型,按用途可分为三类:计算颜色模型,视觉颜色模型和工业颜色模型。

4、有时为了不同的需要,要对颜色模型进行转换。3、总体设计总体界面外观:图2-1 界面总体外观软件的总体设计界面外观如图2-1所示,主要分为两个部分:显示区域和操作区域。显示区域分两个板块,分别显示载入的原图及处理后的图像。操作区域由多个功能模块组成,各种功能模块由多个功能键组成。通过按键控制实现对图像的处理。菜单栏由于要实现的功能并很多,界面无法容纳下所有功能按钮,所以在排版的过程中,把基本功能和部分不常用功能都安排在菜单栏上,整体菜单栏安排如下图所示 4、具体设计 4.1文件1)打开通过对话框的形式来选择文件,用uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话

5、框自动列出当前路径下的目录和文件, GUI程序的操作对象是图像文件,设置后缀名为*.jpg或*.bmp或*.gif。Uigetfile函数的调用格式为name,path=yigetfile(), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量im。2)保存通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出变换后的图像数据保存

6、到变量im,最后用imwrite函数,把数据im存到指定的文件。 3)退出程序实现:close(gcf);4.2特殊处理1) 原图:global a;global T;global im;T=im;axes(handles.axes2);im=a;imshow(im);title();通过设置一个全局变量a,保存原始图像路径,在点击“原图”键时,重新读取该全局变量。并通过imshow(im);,将还原的图像显示,达到还原的效果。 2)撤销:global T;axes(handles.axes2); imshow(T);本段程序通过设置一个全局变量T,通过T=im把上一次操作后的图像信息赋予全局

7、变量T。点击“撤销”键时,通过imshow(T);将图像返回到上一步操作后的状态。达到撤销的效果。4.3灰度图像处理1) 灰度与对比度调节用imadjust函数,其调用格式如下: g=imadust(f,low_in high_in,low_out high_out),gamma)gamma 表示映射性质,默认值是1 表示线性映射。由于该函数有五个参数需要输入,通过对话框把五个参数赋值给low_in high_in,low_out high_out,gamma这五个参数,如下一组命令建立了如图所示的输入对话框:prompt=输入参数1,输入参数2,输入gamma;defans=0 0.7,0

8、1,1;p=inputdlg(prompt,输入参数,1,defans);由于这种方法并不能很好的让用户能够对图像进行任意的亮度和对比度变化调整,有时并不事先知道参数的值要多少,也不关心,而是任意调节的,直到满意为止。所以应该用滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。设计的时候固定其中的三个参数,通过调节两个参数的值来改变亮度和对比度0 handles.beta,0 1,handles.gm,这里的变量handles.beta和handles.gm就通过滑动条得到,滑动条设计如下图: 亮度调整的tag名为ld,取值范围01,gamma值的tag名为gamma,取值范围为05。

9、获取滑动条参数的程序如下:handles.beta=get(handles.ld,value);handles.gm=get(handles.gamma,value);2)图像二值化用j=im2bw(x);来对灰度图像到二值图像的转换。转换结果为:4.4图像的常用操作1) 旋转函数imrotate来实现对图像的插值旋转。该函数的调用格式如下:Bimrotate(A,angle,method,crop)其中,参数method用于指定插值的方法,可选的值可以有三种,分别为邻近插值,双线性插值,双三次插值,缺省时为邻近插值,参数angle代表旋转的角度。一般来说,旋转后的图像会比原图大,用户可以指定

10、“crop”参数对旋转后的图像进行剪切(取图像的中间部分),使返回的图像与原图大小相同。执行结果为: 2)缩放用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。该函数的调用格式如下:Bimresize(A,m,method)参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。由于坐标轴限制的原因,处理后看不出放大的效果,如果把处理后的图片保存起来,再把处理后的文件打开,就可以看到比较明显的放大效果。2) 模糊:可通

11、过psf=fspecial(motion,len,theta);im=imfilter(im,psf,circular,conv)实现运动模糊。2) 图像取反对图像求反是将原图灰度值翻转,例如对灰度图像取反,则直观效果就是使黑变白,使白变黑。程序段如下:global im;global T;T=im;axes (handles.axes2);im=imcomplement(im); imshow(im);title(取反后图像);4.5图像的特殊处理1) 彩色模型RGB转HSV:用函数rgb2hsv(im)可实现RGB转HSV:同理:转化为ntsc和ycbcr模型,只要改为相应的函数即可。函数

12、如下:rgb2ntsc(x);% rgb模型转ntsc模型rgb2ycbcr(x);% rgb模型转ycbcr模型2) 直方图直方图统计用imhist函数对图像数据进行直方图统计,x=imhist(handles.img(:,:,1); bar(horz,x); x矩阵的数据是0255灰度值的统计个数,如果直接对x矩阵数据进行图形图显示,由于有256个数据,在坐标系中就会很密集,为了更清楚的显示条形图,所以在程序设计时,把x数据进行部分提取,x1=x(1:10:256);horz=1:10:256;bar(horz,x1);除了显示数据的直方图统计外,还可以对图像进行均衡处理,所用到的函数是h

13、isteq,这两个函数同样只使用于二维数据,所以也要对二维和三维数据分开处理。 直方图均衡化直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对灰度图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。由于直方图均衡化增加了图像灰度动态范围,所以也增加了图像的对比度,反映在图像上就是图像有较大的反差,许多细节可看得比较清晰了。3) 添加噪声噪声是最常见的图象退化因素之一,也是图像恢复中重点研究的内容。噪声形成的原因是多种多样的,其性质也千差万别。经常用到的噪声有三种,椒盐噪声、高斯噪声和乘性噪声。

14、可以通过以下三个函数来实现:y=imnoise(handles.img,gaussian,p1,p2);%高斯噪声y=imnoise(x,salt & pepper,p1); %椒盐噪声y=imnoise(handles.img,speckle,p1); %乘性噪声椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。乘性噪声一般由信道不理想引起,它们与信号的关系是相乘,乘性随机性看成系统的时变性(如衰落或者多普勒)或者非线性所造成的。本界面中以斑点噪声为例演示乘性噪声对图像的影响。斑

15、点噪声是由于信号的衰落引起的,在均匀区域,被斑点噪声污染得越厉害的区域,在图像上表现得越亮,因此,人们设想斑点噪声的模型为乘性的。4)频谱分析频谱图为了得到图像的频谱图,先要对数据进行傅里叶变换,用fft2函数对二维数据进行快速傅里叶变换,同时为了更好的观察频谱图,需要把fft2变换后的数据进行平移,利用fftshift函数,把快速傅里叶变换的DC 组件移到光谱中心。这样图像能量的低频成分将集中到频谱中心,图像上的边缘、线条细节信息等高频成分将分散在图像频谱的边缘。如下图所示:5)图像平滑 中值滤波中值(median)滤波器用模板所覆盖的区域中像素的中间值作为滤波结果 中值滤波的主要功能就是让

16、与周围像素灰度值的差比较大的像素改取与周围像素值接近的值,从而可以消除孤立的噪声点。可见,中值滤波对消除脉冲噪声有良好效果。中值滤波可通过k=medfilt2(handles.img);实现对图像进行二维中值过滤。 平滑滤波 用均值代替原图像中的各个像素值,即对待处理的当前像素点,选择一个模板,该模板由其近邻的若干像素组成(如3*3模板,以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标本身),用模板中所有像素的均值来替换原来的像素值 该滤波器在消除噪声的同时也模糊了图像。自适应滤波 自适应滤波即根据环境的改变,使用自适应算法来改变滤波器的参数和结构。本设计使用适应面较广的维纳滤波为

17、例,演示自适应滤波。维纳(Wiener)滤波器是一种最小均方误差滤波器。6)图像映射变换二维投影:global im;global T;T=im;axes(handles.axes2);im1=imresize(im,60 60);A=1.1581 0 0; -0.4228 0.6066 -0.0074; 4.2279 4.3566 1.000;d=maketform(projective,A);d1=makeresampler(cubic,circular);d2=imtransform(im1,d,d1,size,400 400,XYScale,1);imshow(d2);title(二维

18、投影图像);图像扭曲:global im;global T;T=im;axes(handles.axes2);d=maketform(affine,0.5 0 0;0.5 1 0;0 0 1);im1=imtransform(im,d);imshow(im1);title(扭曲后图像);快捷工具1) 截图程序实现:global im;global T;T=im;set(handles.axes2,HandleVisibility,ON);axes(handles.axes2);im=imcrop(im);imshow(im); title(截图);handles.Timage=y;本段程序通过

19、使用imcrop函数来实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,不论handles.img是三维的还是二维的数据,该函数都能进行操作。可在处理后的图像中继续进行截图,进一步精确截取。结合保存功能可以实现剪切功能。3) 创建索引图像用X = grayslice(I,n)函数来实现,程序实现global im;global T;T=im;axes(handles.axes2);x=(im);if isrgb(x) msgbox(这是彩色图像,不能创建索引图像,创建失败);elsey=grayslice(x,4);axes(handles.axes2);imshow(y,jet(4)

20、;title(索引图像);end转换后得到的图像为:5、程序调试及结果分析在程序设计过程中,我碰到很多的问题:1)一个函数只能对灰度图像处理,不能对RGB图像处理,那么如何才能对RGB图像处理呢?这主要是因为MATLAB的很多函数是针对二维数据的,而RGB图像的数据是一个三维矩阵,所以处理要与灰度图像不同,可以把三维数据进行降维处理,同样使用二维的函数,只要是同样处理三次即可。比如,彩色图像的滤波处理,直方图均衡等。2)同一个操作对灰度图像可以使用,当用户选择的是彩色图像时,该操作就会出错?这是由于设计程序时,本身程序是有针对性的,有些程序只能对灰度图像有效,有些对彩色图像有效,但是用户并不清

21、楚这些,所以在设计的过程中就要考虑全面,要分开设计。在本次课程设计中,我均对每个程序的开始时,用if isrgb(x)进行判断。3)本次设计存在一个很困扰我的问题,就是每次操作都是独立的,还是叠加的,我认为应该是整个程序设计过程中对变量的设置是关键,进行叠加操作时应该每次操作后,把处理后的数据保存在一个全局变量,这样还要对处理后的数据进行在处理时,只要把这个全局变量作为原始数据带入就可。独立操作时则使用局部变量。6、心得体会 用户界面是用户与计算机进行信息交流的方式,图形用户界面(GUI)是指由窗口、菜单、图标、光标、按键、对话框和文本等各种图形对象组成的用户界面。它让用户定制用户与Matla

22、b的交互方式,而命令窗口不是唯一与Matlab的交互方式。用户通过鼠标或键盘选择、激活这些图形对象,使计算机产生某种动作或变化,基本图形对象分为控件对象和用户界面菜单对象,简称控件和菜单。Matlab中设计图形用户界面的方法有两种:使用可视化的界面环境和通过编写程序 MATLAB的GUI设计的一般步骤为:1、启动matlab,打开gui编辑器。2、在弹出的gui设计器中初步界面。3、设计一个完整的界面。4、编写响应代码。5、运行程序。6、在命令窗口中查看错误并修改直至程序无误。在程序调试过程中熟悉使用MATLAB的help功能对程序的调试是有很大帮助的。通过help我们可以查找不熟悉的函数了解

23、其功能,是我们在程序中正确运用函数,少走弯路。Help功能不仅在GUI设计中非常有用,在一般的基本矩阵运算中也常常用到。通过这次实践,我进一步了解了MATLAB软件的强大功能,重温了MATLAB的基本功能、基本使用,在此基础上通过视频学习,查找资料,与同学交流等方法对MATLAB的GUI设计有了一定的了解和掌握,顺利完成了一个简单的photoshop的设计制作。完成了实践的预期要求,锻炼的设计能力,收益匪浅。参考书目:1MATLAB实用教程 郑阿奇 电子工业出版社2数字图像处理 MATLAB 版冈莎雷斯 电子工业出版社附录:%文件打开% - Executes on button press i

24、n pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global im;global a;%选择路径filename,pathname=. uigetfile(*.jpg;

25、*.bmp;*.gif,打开);%合成路径+文件名str=pathname filename;%读取图片im=imread(str);a=imread(str);%使用第一个axesaxes(handles.axes1);%显示图片imshow(im);title(原图);%文件保存% - Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata re

26、served - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global im;%选择路径filename,pathname=. uiputfile(*.jpg;*.bmp;*.gif,保存);%合成路径+文件名str=pathname filename;axes(handles.axes2);im=getimage(gca);imwrite(im,str);%文件退出% - Executes on button press in

27、pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)close(gcf);%原图% - Executes on button press in pushbutton4.func

28、tion pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global a;global T;global im;T=im;axes(handles.axes2);im=a;imshow(im);title(原图)

29、;% 边缘检测function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)% hObject handle to uipanel1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global im;global T;T=im;%拿到所选择按钮的名称str=get(hObject,string);axes(h

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1