ImageVerifierCode 换一换
你正在下载:

matlab.docx

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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

matlab.docx

1、matlabMatlab 图像处理实验一 Matlab语言、数字图象基本操作一、实验目的1、复习MATLAB语言的基本用法;2、掌握MATLAB语言中图象数据与信息的读取方法;3、掌握在MATLAB中绘制灰度直方图的方法,了解灰度直方图的均衡化的方法。二、实验原理 MATLAB是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言。作为强大的科学计算平台,它几乎能够满足所有的计算需求。MATLAB软件具有很强的开放性和适用性。在保持内核不变的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱(toolbox)。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,

2、诸如数据采集、概率统计、信号处理、图像处理和物理仿真等,都在工具箱(Toolbox)家族中有自己的一席之地。在实验中我们主要用到MATLAB提供图象处理工具箱(Image Processing Toolbox)。1、MATLAB与数字图像处理 MATLAB全称是Matrix Laboratory(矩阵实验室),一开始它是一种专门用于矩阵数值计算的软件,从这一点上也可以看出,它在矩阵运算上有自己独特的特点。实际上MATLAB中的绝大多数的运算都是通过矩阵这一形式进行的。这一特点也就决定了MATLAB在处理数字图像上的独特优势。理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理的

3、时候,首先必须对其在空间和亮度上进行数字化,这就是图像的采样和量化的过程。二维图像进行均匀采样,就可以得到一幅离散化成MN样本的数字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便的了。而MATLAB的长处就是处理矩阵运算,因此用MATLAB处理数字图像非常的方便。MATLAB支持五种图像类型,即索引图像、灰度图像、二值图像、RGB图像和多帧图像阵列;支持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等图像文件格式的读,写和显示。MATLAB对图像的处理功能主要集中在它的图像处理工具箱(Image Processing Toolbox

4、)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、二值图像操作以及形态学处理等图像处理操作。2、MATLAB语言的基本操作 MATLAB语言是一种运算纸型的运算语言,其特点就是与平时在运算纸上书写运算的形式相同,这使得它成为一种比较容易掌握的语言;其变量均以矩阵向量形式表示(单独一个数据可以认为是一维向量);其程序语法类似于C语言,只要有一点C语言基础的人可以很快掌握。针对数字图象处理的需要,可以重点掌握以下几个内容:矩阵、向量的输入和操作(包括如何输入一个矩阵,如何产生一个全零全一的矩阵,如何对一个矩阵的行列元

5、素进行读取、写入);矩阵与向量的基本运算(包括加、减、点乘等)以下主要介绍一下如何读取矩阵的指定行或指定列,举例说明:x=4:6%产生一个一维数组,范围从4到6,步长为1x = 4 5 6插入:通过对x进行插入运算创建矩阵A A=x-3;x;x+3 %当然也可以用别的方法产生A矩阵此处只作为示例A = 1 2 3 4 5 6 7 8 9提取:提取A的前两行和后两列形成矩阵C。 C=A(1:2,2:3)C = 2 3 5 6置零:将矩阵A 的第二行第二列的元素置零 A(2,2)=0A = 1 2 3 4 0 6 7 8 9将矩阵A的第一列全置1A(:,1)=1A = 1 2 3 1 0 6 1

6、8 9强调一下矩阵的乘法与矩阵的点乘的不同,举例说明:A=eye(2) %产生二维单位矩阵A = 1 0 0 1 B=1,2;3,4 %直接法输入矩阵B = 1 2 3 4 A+B%求A与B的和(符合矩阵求和原则)ans = 2 2 3 5 A.*B %求A与B的点积(即两矩阵中对应元素分别相乘ans = 1 0 0 4 A*B %求A与B的乘积(符合矩阵乘积原则A的列数与B的行数相等)ans = 1 2 3 4注意:请大家在E盘建一个目录(imp),在每次启动时都要将这个目录加入到MATLAB的搜索路径中,添加的方法为File-Set Path-Tool-Add Path3、MATLAB中图

7、象数据的读取A、 imread imread函数用于读入各种图象文件,其一般的用法为 X,MAP=imread(filename,fmt)其中,X,MAP分别为读出的图象数据和颜色表数据,fmt为图象的格式,filename为读取的图象文件(可以加上文件的路径)。例:X,MAP=imread(flowers.tif,tif);B、 imwriteimwrite函数用于输出图象,其语法格式为:imwrite(X,map,filename,fmt)按照fmt指定的格式将图象数据矩阵X和调色板map写入文件filename。C、 imfinfoimfinfo函数用于读取图象文件的有关信息,其语法格式

8、为imfinfo(filename,fmt)imfinfo函数返回一个结构info,它反映了该图象的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图象的类型等。例:imfinfo(rice.tif)ans = Filename: C:MATLAB6p5toolboximagesimdemosrice.tif FileModDate: 26-Oct-1996 06:11:58 FileSize: 65966 Format: tif FormatVersion: Width: 256 Height: 256

9、 BitDepth: 8 ColorType: grayscale FormatSignature: 73 73 42 0 ByteOrder: little-endian NewSubfileType: 0 BitsPerSample: 8 Compression: UncompressedPhotometricInterpretation: BlackIsZero StripOffsets: 8x1 double SamplesPerPixel: 1 RowsPerStrip: 32 StripByteCounts: 8x1 double XResolution: 72 YResoluti

10、on: 72 ResolutionUnit: Inch Colormap: PlanarConfiguration: Chunky TileWidth: TileLength: TileOffsets: TileByteCounts: Orientation: 1 FillOrder: 1GrayResponseUnit: 0.0100 MaxSamplevalue: 255 MinSamplevalue: 0 Thresholding: 1ImageDescription: 1x166 char4、MATLAB中图象文件的显示imshowimshow函数是最常用的显示各种图象的函数,其语法如

11、下:imshow(X,map)其中X是图象数据矩阵,map是其对应的颜色矩阵,若进行图象处理后不知道图象数据的值域可以用代替map。需要显示多幅图象时,可以使用figure语句,它的功能就是重新打开一个图象显示窗口。例:I=imread(rice.tif);Imshow(I);J=imread(flowers.tif);figure,imshow(J);5、MATLAB中灰度直方图的显示MATLAB图象处理工具箱提供了imhist函数来计算和显示图象的直方图,imhist函数的语法格式为:imhist(I,n)imhist(X,map)其中imhist(I,n)计算和显示灰度图象I的直方图,n

12、为指定的灰度级数目,默认值为256。imhist(X,map)计算和显示索引色图象X的直方图,map为调色板。例:I = imread(rice.tif);imshow(I)figure, imhist(I)6、对比度增强 如果原图象f(x,y)的灰度范围是m,M,我们希望调整后的图象g(x,y)的灰度范围是n,N,那么下述变换,就可以实现这一要求。MATLAB图象处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度增强。Imadjust函数的语法格式为:J = imadjust(I,low_in high_in,low_out high_out)J = imadjust(I,

13、low_in high_in,low_out high_out)返回图象I经过直方图调整后的图象J,low_in high_in为原图象中要变换的灰度范围,low_out high_out指定了变换后的灰度范围。例:I = imread(pout.tif);J = imadjust(I,0.3 0.7,);imshow(I), figure, imshow(J)三、实验要求copy两个图形文件girl1.bmp和girl2.bmp到MATLAB目录下work文件夹中。1、 将MATLAB目录下work文件夹中的girl.bmp图象文件读出.用到imread,imfinfo等文件,观察一下图象数

14、据,了解一下数字图象在MATLAB中的处理就是处理一个矩阵。将这个图象显示出来(用imshow),尝试修改map颜色矩阵的值,再将图象显示出来,观察图象颜色的变化。2、 将MATLAB目录下work文件夹中的girl2.bmp图象文件读出,显示它的图象及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函数将它的灰度值调整到0,1之间,并观察调整后的图象与原图象的差别,调整后的灰度直方图与原灰度直方图的区别。实验二 图像运算 本实验是综合性实验,涵盖Matlab程序设计、图像点运算、代数运算、几何运算等多章基本知识及其应用。需四个学时。一、实验目的与要求 理解图像点

15、运算、代数运算、几何运算的基本定义和常见方法; 掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法; 掌握在MATLAB中进行插值的方法 运用MATLAB语言进行图像的插值缩放和插值旋转 进一步熟悉了解MATLAB语言的应用。二、实验原理与功能点运算是通过对图像中每个像素值进行计算,改善图像显示效果的操作,也称对比度增强,对比度拉伸,灰度变换.可以表示为B(x,y)=f(A(x,y).进行逐点运算,输入映射为输出,不改变图像像素的空间关系.代数运算是指对两幅输入图像进行点对点的加、减、乘或除运算而得到输出图像的运算。对于

16、相加和相乘的情形,可能不止有两幅图像参加运算。在一般情况下,输入情况之一可能为常数。四种图像处理代数运算的数学表达式如下:C(x,y)=A(x,y)+B(x,y)C(x,y)=A(x,y)-B(x,y)C(x,y)=A(x,y)*B(x,y)C(x,y)=A(x,y)/B(x,y) 其中A(x,y)和B(x,y)为输入图像,而C(x,y)为输出图像。还可以通过适当的组合形成涉及几幅图像的复合代数运算方程。 在MATLAB中,我们可以用函数简单的得到数字图像的图像数据矩阵(即A(x,y)和B(x,y)),有了这些矩阵后我们只要适当的设计代数运算的形式并写出方程,就可以得到一个输出图像的矩阵(即C

17、(x,y))图像相加的一个重要应用是对同一场景的多幅图像求平均值。这点被经常用来有效的降低加性随机噪声的影响。在求平均值的过程中,图像的静止部分不会改变,而对每一幅图像,各不相同的噪声图案则过累积很慢。对M幅图像进行平均,使图像中每一点的平方信噪比提高了M倍幅度信噪比是功率信噪比的平方根,因此达到了提高信噪比降低噪声的作用。 几何运算可改变图像中各物体之间的空间关系。这种运算可以被看成是将(各)物体在图像内移动。一个几何运算需要两个独立的算法。首先,需要一个算法来定义空间变换本身,用它来描述每个像素如何从其初始位置“移动”到终止位置,即每个像素的“运动”。同时,还需要一个用于灰度插值的算法,这

18、是因为,在一般情况下,输入图像的位置坐标(x,y)为整数,而输出图像的位置坐标为非整数,反过来也如此。因此插值就是对变换之后的整数坐标位置的像素值进行估计。MATLAB提供了一些函数实现这些功能。 插值是常用的数学运算,通常是利用曲线拟合的方法,通过离散的采样点建立一个连续函数来逼近真实的曲线,用这个重建的函数便可以求出任意位置的函数值。 最近邻插值是最简便的插值,在这种算法中,每一个插值输出像素的值就是在输入图像中与其最临近的采样点的值。最近邻插值是工具箱函数默认使用的插值方法,而且这种插值方法的运算量非常小。当图像中包含像素之间灰度级变化的细微结构时,最近邻插值法会在图像中产生人工的痕迹。

19、 双线性插值法的输出像素值是它在输入图像中22领域采样点的平均值,它根据某像素周围4个像素的灰度值在水平和垂直两个方向上对其插值。 双三次插值的插值核为三次函数,其插值邻域的大小为44。它的插值效果比较好,但相应的计算量也比较大。 MATLAB图像处理工具箱中的函数imresize可以用上述的3种方法对图像进行插值缩放,如果不指定插值方法,则默认为最邻近插值法。Imresize函数的语法格式为:B = imresize(A,m,method) 参数method用于指定插值的方法,可选用的值为nearest(最邻近法),bilinear(双线性插值),bicubic(双三次插值),默认为near

20、est。B = imresize(A,m,method)返回原图A的m倍放大的图像(m小于1时效果是缩小)。三 实验设计例子与调试1 完成人为的往一幅图像中加入噪声,并通过多次相加求平均的方法消除所加入的噪声。在MATLAB中提供了给图像加入噪声的函数imnoiseimnoise的语法格式为J = imnoise(I,type)J = imnoise(I,type,parameters)其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。参数type和parameters用于确定噪声的类型和相应的参数。下面的命令是对图像eight.tif分别加入高斯噪声、椒盐噪

21、声和乘性噪声,其结果如图所示:例:I=imread(eight.tif);J1=imnoise(I,gaussian,0,0.02);J2=imnoise(I,salt & pepper,0.02);J3=imnoise(I,speckle,0.02);subplot(2,2,1),imshow(I),title(原图像);subplot(2,2,2),imshow(J1),title(加高斯噪声);subplot(2,2,3),imshow(J2),title(加椒盐噪声);subplot(2,2,4),imshow(J3),title(加乘性噪声); 在上面的例子中使用了一个函数subpl

22、ot。其作用就是将多幅图像显示再同一幅图像显示对话框中。其语法格式为:subplot(m,n,p) 其作用就是将一个图像显示对话框分成m行n列,并显示第p幅图像。 在MATLAB程序语言中,分号的用处为不显示程序运算中的中间结果,这在一定程度上使系统运算的效率增高,因此在不需知道中间结果的情况下,可以用分号作为一个句子的结尾,而不显示该句运算的中间结果。 代数运算中需要有若干幅带有随机噪声的图像数据,在这里我们运用MATLAB中的FOR循环语句来完成产生多幅带有噪声的图像数据及将这些图像数据进行相加运算。MATLAB中FOR END循环的用法如下:for end循环这种循环允许一组命令以固定的

23、和预定的次数重复,循环的一般形式为:for variable = expressionstatementsend举例如下:例:%一个简单的for循环的例子。for i=1:10;y(i)=i;end;y %显示y的结果y = 1 2 3 4 5 6 7 8 910 为了得到最大的速度,在for循环被执行之前,应预先分配数组。例如前面所考虑的第一种情况,在for循环内每执行一次命令,向量y的维数增加1。这样就使得MATLAB每通过一次循环对y分配更多的内存,这当然要花费一定的时间。为了可以不执行这个步骤,for循环的例子应重写为:y=zeros(1,10);for i=1:10;y(i)=i;e

24、nd;y 在实际的对图像处理过程中,由于我们读出的图像是unit8型,而在MATLAB的矩阵运算中要求所有的运算变量为double型(双精度型)。因此读出的图像数据不能直接进行相加求平均,因此必须使用一个函数将图像数据转换成双精度型数据。MATLAB中提供了这样的函数: im2double函数,其语法格式为: I2 = im2double(I1) 其中I1是输入的图像数据,它可能是unit8或unit16型数据,通过函数的变化输出I2为一个double型数据,这样两图像数据就可以方便的进行相加等代数运算. 作为一个示例,现将刚刚显示的加有噪声的图像进行相加求平均以消除图像的噪声。在图像中我们给

25、图像加的是均值为0,方差为0.02的高斯噪声,将图像相加了一百遍,再求其平均值。程序如下:%例图像加噪声再通过多次相加求平均的方法祛除噪声I,M=imread(eight.tif);J=imnoise(I,gaussian,0,0.02);subplot(1,2,1),imshow(I,M),title(原图像);subplot(1,2,2),imshow(J,M),title(加噪声后图像);K=zeros(242,308);for i=1:100J=imnoise(I,gaussian,0,0.02);J1=im2double(J);K=K+J1;endK=K/100; %求图像的平均fi

26、gure;imshow(K),title(相加求平均后的图像);例子2Imresize函数的语法格式为:B = imresize(A,m,method)这里参数method用于指定插值的方法,可选用的值为nearest(最邻近法),bilinear(双线性插值),bicubic(双三次插值),默认为nearest。B = imresize(A,m,method)返回原图A的m倍放大的图像(m小于1时效果是缩小)。例:I=imread(ic.tif);J = imresize(I,1.25);imshow(I),title(原图像)figure,imshow(J),title(放大后的图像) 在

27、工具箱中的函数imrotate可用上述三种方法对图像进行插值旋转,默认的插值方法也是最邻近插值法。 Imrotate的语法格式为: B = imrotate(A,angle,method 函数imrotate对图像进行旋转,参数method用于指定插值的方法,可选用的值为nearest(最邻近法),bilinear(双线性插值),bicubic(双三次插值),默认为nearest。一般说来旋转后的图像会比原图大,超出原图部分值为0。例:I=imread(rice.tif);J=imrotate(I,30,bilinear);imshow(I);title(原图像)figure,imshow(J

28、),title(旋转后的图像)四、实验任务 实验要求设计一个程序完成下列要求:1、 读出girl.bmp这幅图像,完成基本点运算,并显示各次运算的结果图像;2、 给这幅图像加入椒盐噪声后并与前一张图显示在同一图像对话框中;3、 运用for循环,将100幅加有噪声的图像进行相加并求其平均值,显示求平均后图像。4、 将图像分别放大1.5倍和缩小0.8倍,插值方法使用双线性插值法。将图像顺时针旋转45度,显示旋转后的图像。5、 设计实验步骤,完成实验报告。实验三 傅立叶变换及图象的频域处理一、实验目的1、了解离散傅立叶变换的基本原理;2、掌握应用MATLAB语言进行FFT及逆变换的方法;3、了解图象在频域中处理方法,应用MATLAB语言作简单的低通滤波器。二、实验原理1、傅立叶变换的基本知识。 在图象处理的广泛应用领域中,傅立叶变换起着非常重要的作用,具体表现在包括图象分析、图象增强及图象压缩等方面。 假设f(x,y)是一个离散空间中的二维函数,则该函数的二维傅立叶变换的定义如下:u=0,1M-1v=0,1N-1(1) 离散傅立叶反变换的定义如下: x=0,1M-1y=0,1N-1(3) F(p,q)称为f(m,n)的离散傅立叶变换系数。这个式子表明,函数f(m,n)可以用无数个不同频率的复指数信号和表示,而在频率(w1,w2)处的复指数信号的幅

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

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