欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于MATLAB的图像处理的课程设计.docx

    • 资源ID:26402453       资源大小:18.29KB        全文页数:16页
    • 资源格式: DOCX        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于MATLAB的图像处理的课程设计.docx

    基于MATLAB的图像处理的课程设计.doc 目录 一、课程设计目的 (3) 二、课程设计要求 (3) 三、课程设计的内容 (3) 四、题目分析 (3) 五、总体设计 (4) 六、具体设计 (5) 6.1、文件 (5) 6.1.1、打开 (5) 6.1.2、保存 (5) 6.1.3、退出 (5) 6.2、编辑 (5) 6.2.1、灰度 (5) 6.2.2、亮度 (6) 6.2.3、截图 (7) 6.2.4、缩放 (7) 6.3、旋转 (9) 6.3.1、上下翻转 (9) 6.3.2、左右翻转 (9) 6.3.3任意角度翻转 (9) 6.4、噪声 (10) 6.5、滤波 (10) 6.6、直方图统计 (11) 6.7、频谱分析 (12) 6.7.1、频谱图 (12) 6.7.2、通过高通滤波器. . (12) 6.7.3、通过低通滤波器. . (13) 6.8、灰度图像处理. . . (14) 6.8.1、二值图像. .14 6.8.2、创建索引图像. (14) 6.9、颜色模型转换 (14) 6.10、操作界面设计 (15) 七、程序调试及结果分析 (15) 八、心得体会 (16) 九、参考文献 (17) 十、附录 (18) 基于MATLAB的图像处理的课程设计 摘要: 数字图像处理技术是20世纪60年代发展起来的一门新兴学科,随着图像处理理论和方法的进一步完善,使得数字图像处理技术在各个领域得到了广泛应用,并显示出广阔的应用前景。MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。MATLAB中集成了功能强大的图像处理工具箱。由于MATLAB语言的语法特征与C语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式,而且这种语言可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以MATLAB在图像处理的应用中具有很大的优势。 关键词:MATLAB,数字图像处理 一、课程设计目的 综合运用MATLAB工具箱实现图像处理的GUI程序设计。 二、课程设计要求 1)熟悉和掌握MA TLAB 程序设计方法 2)掌握MATLAB GUI 程序设计 3)学习和熟悉MA TLAB图像处理工具箱 4)学会运用MATLAB工具箱对图像进行处理和分析 三、课程设计的内容 学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。 以下几点是程序必须实现的功能。 1)图像的读取和保存。 2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。 3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。 4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。 5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。 6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。比较去噪效果。 四、题目分析 信息化社会中,计算机在各种信息处理中发挥着重要的作用。我们可以借助计算机,对数字图像进行处理,以达到不同的效果。根据题目的要求,除了实现要求的功能外,还有 很多的功能需要用到。 (1)、将一个RGB图像转换为灰度图像。 (2)、可以对图像做各种变换,如旋转等。 (3)、有时并不需要图像显示其细节部分,只要其轮廓,这时候不要很高的灰度级。可以把图像转换为二值图像,进行图像腐蚀,或是创建索引图像等。 (4)、分析一个图像的频谱特征,利用傅里叶变换,将图像从空间域变换到频域,然后进行各种处理,经过高通滤波器或是低通滤波器。 (5)、为了科学地定量描述和使用颜色,人们提出了各种颜色模型,按用途可分为三类:计算颜色模型,视觉颜色模型和工业颜色模型。有时为了不同的需要,要对颜色模型进行转换。 五、总体设计 由于要实现的功能并不是很多,所以在排版的过程中,把各个功能都安排在目录栏上,整体安排如下图所示: 同时在调节亮度时,虽然可以同对话框的形式输入调节的比例系数,但是这样效果不好了,不容易调节,因此这里考虑用滚动条来调节。因此,总体的设计界面如下图所示: 六、具体设计 6.1、文件 6.1.1、打开 为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件,所以设置这里的缺省后缀名为“.bmp”。 Uigetfile函数的调用格式为name,path=yigetfile(), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.img。 6.1.2、保存 同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite 函数,把数据i存到指定的文件。 6.1.3、退出 退出比较简单,程序如下所示: clc; close all; close(gcf); 6.2、编辑 6.2.1、灰度 由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为:y=(handles.img(:,:,1); %当然也可以选择(:,:,2) 或(:,:,3)? imshow(y); 但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。 另一种方法就是,运用rgb2gray函数实现彩色图像到灰度图像的转换。程序为: y=rgb2gray(handles.img); ? imshow(y); 这个程序只能用于RGB图像转换灰度图像,当原始图像本来就是灰度图像时,运行该程序时就会出错,但是使用者在使用时有时并不知道这些,为了使该程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示提示类信息。所以在开始时应该要有一个RGB图像或是灰度图像的判断过程。完整的程序如下: if isrgb(handles.img) y=rgb2gray(handles.img);? imshow(y); else msgbox('这已经是灰度图像','转换失败'); end 如果原图是RGB,执行该操作的结果如下图: 如果原图本身已经是灰度图像了,执行该操作弹出如 右图所示的提示对话框 6.2.2、亮度 用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 1','1' p=inputdlg(prompt,'输入参数',1,defans); 但是,这种方法并不能很好的让用户能够对图像进行任 意的亮度和对比度变化调整,有时并不事先知道参数的值要 多少,也不关心,而是任意调节的,直到满意为止。所以应 该用滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。 由于imadjust函数有五个参数,所以原则上需要设计五个滑动条来调节对比度,这对用户来说显然比较麻烦,因此在设计的时候固定其中的三个参数,通过调节两个参数的值来改变亮度和对比度。 0 handles.beta,0 1,handles.gm,这里的变量handles.beta和handles.gm就通过滑动条得到,滑动条设计如下图: 亮度调整的tag名为ld,取值范围01,gamma值的tag名为gamma,取值范围为05。获取滑动条参数的程序如下: handles.beta=get(handles.ld,'value'); handles.gm=get(handles.gamma,'value'); 执行该操作,调节滑动条到上图所示位置,结果如下图: 6.2.3、截图 在MATLAB中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。 Imcrop函数的调用格式如下: y=imcrop(handles.img); 不管handles.img是三维的还是二维数据,该函数都能进行操作。下图就是对三维图像的截图: 6.2.4、缩放 在MATLAB中,用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。 该函数的调用格式如下: Bimresize(A,m,method) 其中: 参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。 Bimresizee(Am,method)表示返回原图A的m倍放大图像(m小 于1时实际上是缩小); 下图就是采用邻近插值法的放大和缩小图像,参数值保持默认设置: 虽然处理后看不出放大的效果,这是由于坐标轴限制的原因,如果把处理后的图片保存起来,再把处理后的文件打开,就可以看到比较明显的放大效果。 缩小后的结果如下: 6.3、旋转 6.3.1、上下翻转 函数flipud是实现一个二维矩阵的上下翻转,如 a=1 2;3 4,经过该函数处理后,原矩阵变为3 4;1 2;所以利用该函数也可以对图像进行上下翻转处理,但由于该函数针对二维数据的处理,所以在写程序时,要对RGB图像和灰度图像分开处理,这就要用到isrgb函数来判断,如果是灰度图像,则可以直接用这个函数进行处理,否则就要对RGB图像进行降维处理, for k=1:3 y(:,:,k)=flipud(x(:,:,k); end 处理结果如图: 6.3.2、左右翻转 对图像的左右翻转也可以用fliplr函数来处理,同样的,也要对灰度和彩色图像分开处理,处理结果如图: 6.3.3任意角度翻转 用函数imrotate来实现对图像的插值旋转。 该函数的调用格式如下: Bimrotate(A,angle,method,crop) 其中,参数method用于指定插值的方法,可选的值可以有三种,分别为邻近插值,双线性插值,双三次插值,缺省时为邻近插值,参数angle代表旋转的角度。 一般来说,旋转后的图像会比原图大,用户可以指定“crop”参数对旋转后的图像进行剪切(取图像的中间部分),使返回的图像与原图大小相同。执行结果为: 6.4、噪声 经常用到的噪声有三种,高斯噪声,椒盐噪声,乘性噪声,可以通过以下三个函数来实现: y=imnoise(handles.img,'gaussian',p1,p2);%高斯噪声 y=imnoise(x,'salt & pepper',p1); %椒盐噪声 y=imnoise(handles.img,'speckle',p1); %乘性噪声 p1,p2的参数也通过输入对话框的形式得到,原图加入高斯噪声后结果如下所示: 6.5、滤波 这里选择三种滤波方法, k=medfilt2(handles.noise_img);%中值滤波 k=wiener2(handles.noise_img,5,5);%自适应滤波 k=filter2(fspecial('average',3),handles.noise_img)/255;%平滑滤波 同样的,这些函数也是针对二维数据,所以要先判断是彩色图像还是灰度图像,然后分别进行处理,下面是对彩色图像的自适应滤波处理: i=handles.noise_img; if isrgb(i) a=handles.noise_img(:,:,1); b=handles.noise_img(:,:,2); c=handles.noise_img(:,:,3); k(:,:,1)=wiener2(a,5,5); k(:,:,2)=wiener2(b,5,5); k(:,:,3)=wiener2(c,5,5); imshow(k); 执行结果如图: 对其他方法的滤波程序也类似,由于把各个滤波方法放在一个选择框里,所以程序要用以下的选择语句: switch str case '中值滤波' case '自适应滤波' case '平滑滤波' end 6.6、直方图统计 用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); 除了显示数据的直方图统计外,还可以对图像进行均衡处理,所用到的函数是histeq,这两个函数同样只使用于二维数据,所以也要对二维和三维数据分开处理。 直方图显示和均衡后的图像分别如下图所示 6.7、频谱分析 6.7.1、频谱图 为了得到图像的频谱图,先要对数据进行傅里叶变换,用fft2函数对二维数据进行快速傅里叶变换,同时为了更好的观察频谱图,需要把fft2变换后的数据进行平移,利用fftshift函数,把快速傅里叶变换的DC 组件移到光谱中心。这样图像能量的低频成分将集中到频谱中心,图像上的边缘、线条细节信息等高频成分将分散在图像频谱的边缘。如下图所示: 6.7.2、通过高通滤波器 axes(handles.axes2); x=(handles.img); if isrgb(x) msgbox('这是彩色图像,不能通过高通滤波器','失败'); 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(M/2); n=fix(N/2); for i=1:M

    注意事项

    本文(基于MATLAB的图像处理的课程设计.docx)为本站会员(h****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开