基本试验一数字图像处理实验_第1页
基本试验一数字图像处理实验_第2页
基本试验一数字图像处理实验_第3页
基本试验一数字图像处理实验_第4页
基本试验一数字图像处理实验_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图像输入与输出基本操作一、实验题目: 图像输入与输出操作二、实验目的学习在MATLAB环境下对图像文件的I/O操作,为读取各种格式的图像文件和后续进行图像处理打下基础。三、实验内容利用MATLAB为用户提供的专门函数从图像格式的文件中读/写图像数据、显示图像,以及查询图像文件的信息。四、预备知识熟悉MATLAB开发环境。五、实验原理(1)图像文件的读取利用imread函数可以完成图像文件的读取操作。常用语法格式为:I=imread(filename,fmt)或I=imread(filename.fmt);其作用是将文件名用字符串filename表示的、扩展名用字符串fmt(表示图像文件格式)表

2、示的图像文件中的数据读到矩阵I中。当filename中不包含任何路径信息时,imread会从当前工作目录中寻找并读取文件。要想读取指定路径中的图像,最简单的方法就是在filename中输入完整的或相对的地址。MATLAB支持多种图像文件格式的读、写和显示。因此参数fmt常用的可能值有:bmp Windows位图格式jpgorjpeg 联合图像专家组格式tifortiff 标志图像文件格式gif 图形交换格式pcx Windows画刷格式png 可移动网络图形格式 xwd X Window Dump格式例如,命令行>>I=imread(lena.jpg);将JPEG图像lena读入图

3、像矩阵I中。(2) 图像文件的写入(保存)利用imwrite完成图像的输出和保存操作,也完全支持也完全支持上述各种图像文件的格式。其语法格式为: imwrite(I,filename,fmt)或imwrite(I,filename.fmt);其中的I、filename和fmt的意义同上所述。注意事项:当利用imwrite函数保存图像时,MATLAB默认的保存方式是将其简化为uint8的数据类型。与读取文件类型类似,MATLAB在文件保存时还支持16位的PNG和TIFF图像。所以,当用户保存这类文件时,MATLAB就将其存储在uint16中。 (3)图像文件的显示图像的现实过程是将数字图像从一组

4、离散数据还原为一幅可见图像的过程。MATLAB的的图像处理工具箱提供了多种图像显示技术。例如imshow可以直接从文件显示多种图像;image函数可以将矩阵作为图像 ;colorbar函数可以用来显示颜色条;montage函数可以动态显示图像序列。这里仅对常用的显示函数进行介绍。图像的显示imshow函数是最常用的显示各种图像的函数,其调用格式如下: imshow(I,N); imshow(I,N)用于显示灰度图像,其中I为灰度图像的数据矩阵,N为灰度级数目,默认值为256。例如下面的语句用于显示一幅灰度图像: >> I=imread(lena.jpg); >> ims

5、how(I);如果不希望在显示图像之前装载图像,那么可以使用以下格式直接进行图像文件的显示:imshow filename其中,filename为要显示的图像文件的文件名。实例1-1 显示一幅在当前目录下的.bmp格式的图像:>>imshow lena.jpg显示结果如图1.1所示。图1.1.1 显示一幅图像文件中的图像注意事项:该文件名必须带有合法的扩展名(指明文件格式),且该图像文件必须保存在当前目录下,或在MATLAB默认的目录下。添加色带colorbar函数可以给一个坐标轴对象添加一条色带。如果该坐标轴对象包含一个图像对象,则添加的色带将指示出该图像中不同颜色的数据值。这对

6、于了解被显示图像的灰度级特别有用。其调用格式为: colorbar 实例1-2 >> I=imread(lena.jpg); >> imshow(I); >> colorbar;图1.1.2 显示图像并加入颜色条从上图可知,该图像是数据类型为uint8的灰度图像,其灰度级范围从0255。显示多幅图像 显示多幅图像最简单的方法就是在不同的图形窗口中显示它们。imshow总是在当前窗口中显示一幅图像,如果用户想连续显示两幅图像,那么第二幅图像就会替代第一幅图像。为了避免图像在当前窗口中的覆盖现象,在调用imshow函数显示下一幅图像之前可以使用figure命令来

7、创建一个新的窗口。例如:imshow(I1);figure, imshow(I2);figure, imshow(I3); 有时为了便于在多幅图像之间进行比较,需要将这些图像显示在一个图形窗口中。达到这一目的有两种方法:一种方法是联合使用imshow和subplot函数,但此方法在一个图形窗口只能有一个调色板;另一种方法是联合使用subimage和subplot函数,此方法可在一个图形窗口内使用多个调色板。subplot函数将一个图形窗口划分为多个显示区域,其调用格式如下: subplot(m,n,p) subplot函数将图形窗口划分为m(行)×n(列)个显示区域,并选择第p个区域

8、作为当前绘图区。例1-3 用两排显示四幅图像,可以使用以下语句: >> I1=imread(lena.bmp); >> I2=imread(gs256.bmp);>> I3=imread(lena.bmp); >> I4=imread(gs256.bmp); >> subplot(2,2,1), imshow(I1); >> subplot(2,2,2), imshow(I2);>> subplot(2,2,3), imshow(I3); >> subplot(2,2,4), imshow(I4);

9、图1.1.3 在一个图形窗口中显示多幅图像(4) 图像文件信息的查询imfinfo函数用于查询图像文件的有关信息,详细地显示出图像文件的各种属性。其语法格式为:info=imfinfo(filename,fmt)或info=imfinfo(filename.fmt)或imfinfo filename.fmtimfinfo函数获取的图像文件信息依赖于文件类型的不同而不同,但至少应包含以下内容:文件名。如果该文件不在当前目录下,还包含该文件的完整路径。文件格式。文件格式的版本号。文件最后一次修改的时间。文件的大小。以字节为单位。图像的宽度。图像的高度。每个像素所用的比特数。也叫像素深度。图像类型。

10、即该图像是真彩色图像、索引图像还是灰度图像。例如,命令行>>imfinfo bubbles25.jpg会输出如下信息(注意,在这种情况下,有些域不包含信息):Filename: bubbles25.jpgFileModDate: 04-Jan-2003 12:31:26FileSize: 13849Format: jpgFormatVersion: Width: 714Height: 682BitDepth: 8ColorType: grayscaleFormatSignature: Comment: 六、实验步骤:(1)利用imread函数完成对图像文件的读取操作。(2)利用im

11、write函数完成图像的写入(保存)操作。(3)利用imshow函数显示图像。(4)利用imfinfo函数查询图像文件的有关信息。七、思考题目:(1)若分别读入空间分辨率为M×N的灰度图像和彩色图像,则得到的矩阵的维数是否相同?如果不同,则分别是几维的矩阵?(2) 读入一幅索引图像。动态显示一个图像序。图像平滑与滤波一、实验题目: 图像平滑与滤波二、实验目的: 在熟悉图像平滑的基本原理和方法的基础上,在理论指导下,能在MATLAB环境下对图像进行平滑处理。本实验要求用线性平滑滤波、中值平滑滤波、频域低通滤波的方法进行程序设计。经过平滑处理,对结果图像加以比较,得出自己的实验结论。三、

12、实验内容:(1)利用MATLAB为用户提供的专门函数实现均值滤波。(2)利用MATLAB为用户提供的专门函数实现中值滤波。(3)编写频域理想低通、巴特沃斯低通及高斯低通滤波函数。四、预备知识:(1)熟悉平滑滤波原理。(2)熟悉频域滤波原理。(3)熟悉在MATLAB环境下对图像文件的I/O操作。五、实验原理:平滑滤波技术用于平滑图像中的噪声。平滑噪声可以在空间域中进行,基本方法是求像素灰度的平均值或中值。也可以在频域中用基于傅立叶的分析方法进行。这里对常用滤波函数进行简要介绍。(1) 噪声产生函数:imnoise 图像平滑主要是针对图像的各种噪声而言的,因此需要模拟数字图像的各种噪声来分析滤波效

13、果。MATLAB的图像处理工具箱提供了imnoise函数,可以用该函数给图像添加不同种类噪声,其调用格式为: J = imnoise(I, type, parameters) I是输入图像,J是对I添加噪声后的输出图像。表5.1列出了imnoise函数能够产生的五种噪声及其对应参数。表5.1 噪声种类及参数说明TYPEPARAMETERS说明gaussian m,v均值为m,方差为v的高斯噪声。默认值m=0,v=0.01localvar v均值为0,方差为v的高斯白噪声passion 无泊松噪声salt & pepper d噪声强度为d的椒盐噪声。默认值为0.05speckle v均值

14、为0,方差为v的均匀分布随机噪声例1.5.1给图像加上椒盐噪声,可以使用下列语句。>> I=imread('ckt-board.tif');>> J=imnoise(I,'salt & pepper',0.2);%给图像加入椒盐噪声>> subplot(1,2,1);imshow(I);title('原始图像');>> subplot(1,2,2);imshow(J);title('加入椒盐噪声的图像');其显示结果如图1.5.1所示。图1.5.1 原始图像和加入噪声后的图像

15、(2) 图像滤波函数:filter2、imfilter空域滤波是在图像空间中借助模板对图像进行邻域操作,输出图像每一个像素的取值都是根据模板对输入像素相应邻域内的像素值进行计算得到的。模板运算的数学涵义是一种卷积(或互相关)运算。 MATLAB提供了基于卷积的图像滤波函数filter2进行平滑滤波,该函数用指定的滤波器模板对图像进行运算。其调用格式为: B = filter2(h,A) B = filter2(h,A,shape)其中B=filter2(h,A)返回图像A经算子h滤波后的结果,参数shape指定滤波的计算范围,即:shape=full时,作边界补零shape=same时,返回图

16、像B与输入图像A大小相同shape=valid时,不考虑边界补零,只计算有效输出部分。此外,也可以使用imfilter函数进行卷积或相关性滤波来实现图像平滑。该函数的调用格式为: B = imfilter(A,H) B = imfilter(A,H, option1,option2,)其中B=imfilter(A,H)返回图像A经算子h滤波后的结果; B=imfilter(A,H, option 1, option 2,)是根据指定的option参数实现图像滤波。option参数可以有下列取值:边界填充选项对一幅图像进行滤波时,零填充可能会导致图像被一个黑框围绕,为了消除零填充的人工痕迹,im

17、filter函数支持三种可选的边界填充方法:symmetric 边界对称replicate 边界复制,缺省值circular 边界循环输出尺寸选项其选项与filter2函数的shape参数相同。滤波选项corr 使用相关性来进行滤波,缺省使用此方法conv 使用卷积方法实现滤波以上两个滤波函数的参数h可以是自定义的滤波器模板,也可以是MATLAB提供的预定义滤波器模板。函数fspecial生成滤波所用的预定义模板。其调用格式为: h = fspecial(type) h = fspecial(type,parameters)其中,参数type指定滤波器的种类,parameters是与滤波器种类

18、有关的具体参数。例1.5.2 对图1.5.1中加入椒盐噪声的图像进行均值滤波,可以使用下列语句。>> h=fspecial('average',3);>> gd=imfilter(J,h);>> subplot(1,2,1);imshow(J);title('加入椒盐噪声的图像');>> subplot(1,2,2);imshow(gd);title('3×3模板均值滤波');其显示结果如图1.5.2所示。图1.5.2 均值滤波(3) 中值滤波器函数:medfilt2 中值滤波是一种最常用

19、的非线性平滑滤波器,其滤波原理是把邻域中的图像的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。其调用格式为: B = medfilt2(A) B = medfilt2(A,M N)其中,A是输入图像,B是中值滤波后输出的图像。M N指定滤波模板的大小,默认模板是3×3的。例1.5.3 对图1.5.1中加入椒盐噪声的图像进行中值滤波,可以使用下列语句。>> k=medfilt2(J);>> subplot(1,2,1);imshow(J);title('加入椒盐噪声的图像');>> subplot(1,2,2);imsho

20、w(k);title('3×3模板中值滤波');其显示结果如图1.5.3所示。图1.5.3 中值滤波(4) 频域低通滤波频域滤波的基本步骤为:1) 用(-1)x+y乘以输入图像来进行频域中心变换;2) 由(1)计算图像的DFT,即I(u,v);3) 用滤波函数H(u,v)乘以I(u,v);4) 计算(3)中结果的反DFT;5) 得到(4)中的实部;6) 用(-1)x+y乘以(5)中的结果。MATLAB图像处理工具箱提供了一些函数来进行傅立叶变换。函数:fft2 用于计算二维快速傅立叶变换。调用格式为:Y = fft2(X) ;Y = fft2(X,M,N);式中X是输

21、入图像矩阵,Y是X进行二维傅立叶变换后的图像矩阵;X和Y大小相同。在Y=fft2(X,M,N)中,按照M、N指定的值对图像进行剪切或补0后进行傅立叶变换,返回变换矩阵的大小为M×N。函数:fftshift fftshift函数将变换后的图像频谱中心从矩阵的原点移到矩阵的中心。其调用格式为:Y = fftshift(X) ;Y = fftshift(X,DIM) ;fftshift用于调整 fft、fft2和fftn的输出结果。对于向量X,将其左右两半交换位置,对于矩阵 X,将其一、三象限和二、四象限进行互换,对于高维向量 X,将矩阵各维的两半进行互换。函数:ifft2 用于计算图像的

22、二维傅立叶反变换。其调用格式为: Y = ifft2(X) ;Y = ifft2(X,M,N) ;ifft2用于返回图像的二维傅立叶反变换矩阵,其参数定义同fft2。例1.5.3 对图1.5.1中加入椒盐噪声的图像进行截至频率D0为25的高斯低通滤波,其显示结果如图1.5.4所示。图1.5.4 频域高斯低通滤波六、实验步骤:(1)对给定的图像添加均值为0,方差分别为200、400的高斯噪声,以及概率分别为0.1、0.2的椒盐噪声,显示添加噪声后的图像。(2) 对加噪图像分别进行3×3、5×5、9×9的均值滤波,显示并比较滤波结果。(3) 对加噪图像分别进行3

23、15;3、5×5、9×9的中值滤波,显示并比较滤波结果。(4) 对加噪图像进行截止频率D0分别为10、25的理想低通、巴特沃斯低通及高斯低通滤波,显示并比较滤波结果。七、思考题目:(1)原图像和处理后图像的比较。(2)均值滤波和中值滤波有哪些优缺点?主要区别?对所给图像,哪种方法效果更佳?(3) 窗口尺寸对滤波结果有什么影响?对所给图像应取多大?(4) 截止频率对滤波结果有什么影响?对所给图像应取多大?图像增强一、实验题目: 图像增强二、实验目的:(1)了解图像增强的内容和意义;(2)掌握基于空域的图像增强方法;(3)掌握基于频域的图像增强方法。三、实验内容:(1)综合运用直方图均衡、灰度变换、锐化空域滤波等方法编程实现对图像的空域增强处理;(2)编程实现图像的频域增强处理。四、预备知识:(1)熟悉MATLAB图像输入输出操作;(2)熟悉图像的模板操作;(3)熟悉图像的频域变换处理;(4)熟悉二维频谱的显示方法。五、实验原理:图像增强是对图像进行加工,以得到视觉效果更好或更有用的新图像。图像增强在处理方法上可分为基于空域的图像增强和基于频域的图像增强。空域图像增强常用方法:(1)直方图均衡化 直方图是一个离散函数,它表示数字图像每一灰度级与该灰度级出现频率的对应关系。有的图像的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论