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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于MATLAB数字图像处理的实现和仿真课程设计论文.docx

1、基于MATLAB数字图像处理的实现和仿真课程设计论文基于MATLAB数字图像处理的实现和仿真摘 要数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。在数字图像处理过程中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互

2、或编程以完成各自的计算。 本文利用MATLAB图像处理工具箱,根据需求进行程序的功能分析和界面设计,实现数字图像的灰度处理、亮度处理、截图、缩放、旋转、噪声、滤波、直方图统计、频谱分析、颜色模型转换等。关键词:数字图像处理,MATLAB第1章 绪论数字图像处理,即用计算机对图像进行处理。与人类对视觉机理研究的历史相比,它是一门相对年轻的学科。但在其短短的历史中,它却以程度不同的成功被广泛应用于几乎所有与图像有关的领域口数字图像处理技术在20多年的时间里,迅速地发展成为一门独立的有强大生命力的学科。数字图像处理的手段有光学方法和电子学(数字)方法。前者已经有很长的一发展历史,从简单的光学滤波到现

3、在的激光全息技术。光学处理理论已经日趋完善,而且处理速度快,信息容量大,分辨率高,处理经济。但是光学处理图像精度不够高,稳定性能差,操作不方便。最早的图像处理是上世纪六七十年代,随着电子技术和计算机技术的不断提高和普及,数字图像处理进入高速发展时期。数字图像处理就是利用数字计算机或者其它数字硬件,对从图像信息转换而得的电信号进行某些数学运算,以提高图像的实用性。例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等等。数字图像处理技术处理精度比较高,而且还可以通过改进处理软件来优化处理效果。但是,由于数字图像处理的数据量非常庞大,因此处理速度相对较慢,这就限制了数字图像处理的发展。随着

4、计算机技术的飞速发展,计算机的运算速度大大提高,这将大大促进数字图像处理技术的发展。数字图像处理在它短短的发展历史中,迅速发展成为了一门独立的具有强大生命力的学科,它应用于很多领域:遥感技术、医用图像处理、工业领域中、军事公安、文化艺术等方面。数字图像处理技术研究内容很多,主要包括以下几个方面:图像变换、图像编码压缩、图像增强和复原、图像分割、图像描述图像识别等。数字图像处理具有再现性好、处理精度高、适用面广、灵活性高、成本低等优点。在图像研究领域中图像特征的研究是一重要的研究方向。人们观察图像时主要通过观察图像纹理、亮度、几何等关键特征,从而来识别理解图像。实际上通过图像特征的提取匹配不仅用

5、于图像识别,还可以用于图像分割、配准、拼接等各个方面。对图像特征的研究已经取得了很多研究成果,随着人们探知世界的深入,对图像特征的研究将更加重要。第2章 数字图像处理系统设计2.1设计概括由于要实现的功能并不是很多,所以在排版的过程中,把各个功能都安排在目录栏上,整体安排如下图所示:图2.1 设计概括同时在调节亮度时,虽然可以同对话框的形式输入调节的比例系数,但是这样效果不好了,不容易调节,因此这里考虑用滚动条来调节。因此,总体的设计界面如下图所示:图2.2 设计界面2.2文件2.2.1打开为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现

6、,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件,所以设置这里的缺省后缀名为“.bmp”。Uigetfile函数的调用格式为name,path=yigetfile(), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.img。2.2.2保存同样也通过对话框的形式来保存图像数据,通过uiget

7、file函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。2.2.3退出退出比较简单,程序如下所示:clc;close all;close(gcf); 2.3编辑2.3.1灰度将RGB图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255255255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式

8、的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现。第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应,以这个亮度值表达图像的灰度值,公式为: (2-1)由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二

9、维数据,实现方法程序为:y=(handles.img(:,:,1); %当然也可以选择(:,:,2) 或(:,:,3) imshow(y);但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。另一种方法就是,运用rgb2gray函数实现彩色图像到灰度图像的转换。程序为:y=rgb2gray(handles.img); imshow(y);这个程序只能用于RGB图像转换灰度图像,当原始图像本来就是灰度图像时,运行该程序时就会出错,但是使用者在使用时有时并不知道这些,为了使该程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示提示类信息。所以在开始时应该要有一个RG

10、B图像或是灰度图像的判断过程。完整的程序如下: if isrgb(handles.img) y=rgb2gray(handles.img); imshow(y);else msgbox(这已经是灰度图像,转换失败);end如果原图是RGB,执行该操作的结果如下图:图2.3 灰度处理对比图2.3.2亮度亮度是指颜色的相对明暗程度,通常使用从0%(黑色)至100%(白色)的百分比来度量。亮度处理是指图像整体变亮或者变暗,实现方法:加大或减小每个像素的三色数,公式为: 其中: (2-2)式中:V为调整后颜色值 为原颜色值 d为亮度调整系数用imadjust函数,其调用格式如下: g=imadust(

11、f,low_in high_in,low_out high_out),gamma)gamma 表示映射性质,默认值是1 表示线性映射。由于该函数有五个参数需要输入,为了方便用户改变,所以这里设计一个输入对话框,用户通过对话框把五个参数赋值给low_in high_in,low_out high_out,gamma这五个参数,如下一组命令建立了如下图所示的输入对话框:图2.4 命令对话框prompt=输入参数1,输入参数2,输入gamma;defans=0 0.7,0 1,1;p=inputdlg(prompt,输入参数,1,defans);但是,这种方法并不能很好的让用户能够对图像进行任意的亮

12、度和对比度变化调整,有时并不事先知道参数的值要多少,也不关心,而是任意调节的,直到满意为止。所以应该用滑动条来调节图像的亮度和对比度,这样更适合用户的使用习惯。由于imadjust函数有五个参数,所以原则上需要设计五个滑动条来调节对比度,这对用户来说显然比较麻烦,因此在设计的时候固定其中的三个参数,通过调节两个参数的值来改变亮度和对比度。 0 handles.beta,0 1,handles.gm,这里的变量handles.beta和handles.gm就通过滑动条得到,滑动条设计如下图:图2.5 滑动条设计图亮度调整的tag名为ld,取值范围01,gamma值的tag名为gamma,取值范围

13、为05。获取滑动条参数的程序如下:handles.beta=get(handles.ld,value);handles.gm=get(handles.gamma,value);执行该操作,调节滑动条到上图所示位置,结果如下图:图2.6 亮度处理对比图2.3.3截图提取目标图像中的任意部分,公式:imcrop(图象名,x起点,y起点,x宽度,y宽度。在MATLAB中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。Imcrop函数的调用格式如下: y=imcrop(handles.img);不

14、管handles.img是三维的还是二维数据,该函数都能进行操作。下图就是对三维图像的截图:图2.7 截图处理对比图2.3.4缩放假设图像x轴缩放比例为c,y轴方向缩放比率为d,,那么原图中,点()对应与新图中的点()的转换矩阵为:=(2-3)要求:输入一副图像,根据输入的水平和垂直放量,显示缩放后的图像。在MATLAB中,用函数imresize来实现对图像的放大或缩小。插值方法可选用三种方法,最近邻插值,双线性插值,双三次插值。该函数的调用格式如下:Bimresize(A,m,method)其中:参数method用于指定插值的方法,可选的值为“nearest”(最近邻法),“bilinear

15、”(双线性插值)、“bicubic”(双三次插值),缺省值为“nearest”。Bimresizee(Am,method)表示返回原图A的m倍放大图像(m小于1时实际上是缩小);下图就是采用邻近插值法的放大和缩小图像,参数值保持默认设置:图2.8 放大处理对比图 虽然处理后看不出放大的效果,这是由于坐标轴限制的原因,如果把处理后的图片保存起来,再把处理后的文件打开,就可以看到比较明显的放大效果。图2.9 放大效果图缩小后的结果如下:图2.10 缩小处理对比图2.4旋转2.4.1上下翻转如果A是一个列向量,将A中的元素顺序进行翻转。 如果A是一个行向量,还等于A。例一:A是一个32的矩阵1 4

16、3 6 2 5 翻转则为: 2 5 3 6 1 4例二:A是一个列向量 1 3 2 翻转则为: 2 3 1例三:A是一个行向量 1 2 3 翻转则为: 3 2 1函数flipud是实现一个二维矩阵的上下翻转,如a=1 2;3 4,经过该函数处理后,原矩阵变为3 4;1 2;所以利用该函数也可以对图像进行上下翻转处理,但由于该函数针对二维数据的处理,所以在写程序时,要对RGB图像和灰度图像分开处理,这就要用到isrgb函数来判断,如果是灰度图像,则可以直接用这个函数进行处理,否则就要对RGB图像进行降维处理。for k=1:3 y(:,:,k)=flipud(x(:,:,k);end 处理结果如

17、图:图2.11 上下翻转处理对比图2.4.2左右翻转如果A是一个行向量,将A中元素的顺序进行翻转。 如果A是一个列向量,还等于A。例一: A是一个行向量 1 2 3 翻转则为:3 2 1例一: A是一个32的矩阵 1 4 4 1 2 5 翻转则为: 5 2 3 6 6 3例三: A是一个列向量 1 1 2 翻转则为: 2 3 3对图像的左右翻转也可以用fliplr函数来处理,同样的,也要对灰度和彩色图像分开处理,处理结果如图:图2.12 左右翻转处理对比图2.4.3任意角度翻转图像绕中心点旋转的公式为:=(2-4) 图像如果绕一个指点点旋转,则先要将坐标系平移到该点,再进行旋转,然后平移回新的

18、坐标原点。则旋转变换公式为:=(2-5) 用函数imrotate来实现对图像的插值旋转。该函数的调用格式如下: Bimrotate(A,angle,method,crop) 其中,参数method用于指定插值的方法,可选的值可以有三种,分别为邻近插值,双线性插值,双三次插值,缺省时为邻近插值,参数angle代表旋转的角度。一般来说,旋转后的图像会比原图大,用户可以指定“crop”参数对旋转后的图像进行剪切(取图像的中间部分),使返回的图像与原图大小相同。执行结果为:图2.13 任意角度翻转处理对比图2.5噪声图像是噪声:原本我们可以清晰的看到一副图像,但是有时候图像上会有一些我们不需要的图案,

19、使我们无法很清楚的看清一副图,这就是图像的噪声。去除噪声的方法:不同原因产生的噪声,其分布特性也不完全相同,根据噪声和信号的关系可将其氛围两种形式:1.加性噪声,此类噪声与输入图像信号无关,含噪声象表示为;2.乘性噪声,此类噪声与图像信号有关,含噪声象表示为。噪声对图像处理十分重要,如果图像伴有较大的噪声,它会直接影响到图像处理的输入、采集、处理的各个环节以及输出的全过程甚至输出结果,因此在进行数字图像处理的时候,首先需要对目标图像进行去除噪声的工作。经常用到的噪声有三种,高斯噪声,椒盐噪声,乘性噪声,可以通过以下三个函数来实现:y=imnoise(handles.img,gaussian,p

20、1,p2); %高斯噪声y=imnoise(x,salt & pepper,p1); %椒盐噪声y=imnoise(handles.img,speckle,p1); %乘性噪声p1,p2的参数也通过输入对话框的形式得到,原图加入高斯噪声后结果如下所示:图2.14 噪声处理对比图2.6滤波2.6.1中值滤波中值滤波是一种能有效抑制图像噪声而提高信噪比的非线性滤波技术。它是一种领域运算,类似与卷积,但计算的不是加权求和,而是把领域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。设有一个而为图像,二维中值滤波的结果为:(2-6)2.6.2自适应滤波自适应滤波,就是利用前一时刻已获得的滤

21、波器参数等结果,自动调节现时刻的滤波器参数,以适应信号和噪声未知或随时间变化的统计特性,从而实现最优滤波。自适应滤波器由两个部分组成:一是滤波器的结构;二是调节滤波器系数的自适应算法。自适应滤波器的特点是自动调节自身的冲激响应,达到最优滤波,此算法适用于平稳和非平稳随机信号,并且不要求知道信号和噪声的统计特性。公式为:(2-7)式中:n为时间序列;N为滤波器阶数; T为输入矢量 T为全系数矢量(2-8)2.6.3 平滑滤波平滑滤波是低频增强的空间域滤波技术。它的目的有两类:一类是模糊;另一类是消除噪音。空间域的平滑滤波一般采用简单平均法进行,就是求邻近像元点的平均亮度值。邻域的大小与平滑的效果

22、直接相关,邻域越大平滑的效果越好,但邻域过大,平滑会使边缘信息损失的越大,从而使输出的图像变得模糊,因此需合理选择邻域的大小。平滑滤波的基本算法是将函数与原始图像进行卷积,最后得到一个平滑图像=(2-9)式中:为高斯标准方差;为原始图像点的横坐标变量;为原始图像点的纵坐标变量。 这里选择三种滤波方法,k=medfilt2(handles.noise_img);%中值滤波k=wiener2(handles.noise_img,5,5);%自适应滤波k=filter2(fspecial(average,3),handles.noise_img)/255;%平滑滤波同样的,这些函数也是针对二维数据,

23、所以要先判断是彩色图像还是灰度图像,然后分别进行处理,下面是对彩色图像的自适应滤波处理: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);执行结果如图:图2.15 滤波处理对比图对其他方法的滤波程序也类似,由于把各个滤波方法放在一个选择框里,所以程序要

24、用以下的选择语句:switch str case 中值滤波 case 自适应滤波 case 平滑滤波end2.7直方图统计概念:表示图像中具有某种灰度级的像素个数,反映图像中每种灰度出现的频率。为了有利于数字图像处理,必须引入离散形式。在离散形式下,用代表离散灰度级,用代表,并且有下式子成立:= (2-10)式中为图像中出现这种灰度级像素,是图像中像素总和。在直角坐标系中做出与的关系图形,这个图形称为直方图。用imhist函数对图像数据进行直方图统计,x=imhist(handles.img(:,:,1); bar(horz,x);其中,x矩阵的数据是0255灰度值的统计个数,如果直接对x矩阵

25、数据进行图形图显示,由于有256个数据,在坐标系中就会很密集,为了更清楚的显示条形图,所以在程序设计时,把x数据进行部分提取,x1=x(1:10:256);horz=1:10:256;bar(horz,x1);除了显示数据的直方图统计外,还可以对图像进行均衡处理,所用到的函数是histeq,这两个函数同样只使用于二维数据,所以也要对二维和三维数据分开处理。 直方图显示和均衡后的图像分别如下图所示: 图2.16 直方图2.8频谱分析2.8.1、频谱图由卷积定理可知,如果原始图像是,处理后的图像是,而是处理系统的冲激响应,那么,处理过程可由下式表示:=*(2-11)式中*代表卷积如果,分别是,的傅

26、立叶变换,那么,上面的卷积关系表示为变换域的乘积关系,即:=(2-12)式中为传递函数。在增强问题中,是给定的原始数据,经傅立叶变换可得。选择合适的,得到:=(2-13)得到的的比在某些特性方面更加鲜明、突出,因而更加易于识别、解释。为了得到图像的频谱图,先要对数据进行傅里叶变换,用fft2函数对二维数据进行快速傅里叶变换,同时为了更好的观察频谱图,需要把fft2变换后的数据进行平移,利用fftshift函数,把快速傅里叶变换的DC 组件移到光谱中心。这样图像能量的低频成分将集中到频谱中心,图像上的边缘、线条细节信息等高频成分将分散在图像频谱的边缘。如下图所示:图2.17 频谱处理对比图2.8

27、.2通过高通滤波器axes(handles.axes2);x=(handles.img);if isrgb(x) msgbox(这是彩色图像,不能通过高通滤波器,失败);elsey1=imnoise(x,gaussian); %加高斯噪声f=double(y1); % 数据类型转换k=fft2(f); % 傅立叶变换g=fftshift(k); % 转换数据矩阵M,N=size(g);nn=2;d0=3; %截止频率为3m=fix(M/2); n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); % 计算高通滤波器传递函数 if d=d0 h

28、=0; else h=1; end result(i,j)=h*g(i,j); endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2);imshow(y3); end2.8.3通过低通滤波器axes(handles.axes2);x=(handles.img);if isrgb(x) msgbox(这是彩色图像,不能通过低通滤波器,失败);elsey1=imnoise(x,salt & pepper); % 叠加椒盐噪声f=double(y1); % 数据类型转换,不支持图像的无符号整型的计算g=fft2(f); %

29、傅立叶变换g=fftshift(g); % 转换数据矩阵M,N=size(g);nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器d0=10; %截止频率为10m=fix(M/2); n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); h=1/(1+0.414*(d/d0)(2*nn);% 计算低通滤波器传递函数 result(i,j)=h*g(i,j); endendresult=ifftshift(result);y2=ifft2(result);y3=uint8(real(y2);imshow(y3); % 显示滤波处理

30、后的图像end2.9灰度图像处理2.9.1二值图像二值图像是指数据矩阵中的元素只是0或1,读入matlab也是一个二维矩阵。值得注意的是,像素点取值只限于0,1。图像二值化流程:图2.18 图像二值化流程图用j=im2bw(x);来对灰度图像到二值图像的转换。转换结果为:图2.19 灰度图像转二值图像对比图2.9.2创建索引图像根据数据矩阵和图像像素颜色匹配关系,MATLAB中图像可分为:索引图像、灰度图像、二值图像和RGB图像。索引图像:它的数据信息包括一个数据矩阵和一个双精度色图矩阵,它的数据矩阵中的值直接指定该点的颜色为色图矩阵中的某一种。色图矩阵中,每一行表示一种颜色,每行有三个数据,分别表示该种颜色中红、绿、蓝的比例情况,所有元素值都在0,1内。用X = grayslice(I,n)函数来实现,转换后得到的图像为:图2.20 索引图像2.10颜色模型转换H参数表示色彩信

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

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