用Matlab进行数字图像处理实验1

发布时间:2010-06-19 20:38:29   来源:文档文库   
字号:

专业:信息与计算科学 班级:07级(1)班 指导老师:汪太月老师

姓名:刘莲 学号:0641210224 实验室:K7-407

实验名称:Matlab图像工具箱的使用 时间:2010.6.13

一、 实验目的及要求

(一)实验目的

1 掌握MATLAB中常用的图像处理语句;

2 掌握图像的读入,信息查询以及显示;

3 掌握采用不同的模板对图像进行滤波;

4 掌握图像显示的调用格式;

(二)实验要求

1 练习MATLAB中常用的图像处理语句;

2 练习图像的读入,信息查询以及显示;

3 练习采用不同的模板对图像进行滤波;

4 练习图像显示的调用格式;

二、实验设备(环境)及要求

1支持Intel Pentium Ⅲ及其以上CPU,内存256MB以上、硬盘1GB以上容量的微机;软件配有Windows98/2000/XP操作系统及MATLAB软件;

2、实验过程中,务必分析实验结果,按要求写出实验报告。(建议同时网上提交电子版实验报告:yw6895@126.com

3、实验内容与步骤

1、练习MATLAB中常用的图像处理语句

Matlab中为用户提供了一些特殊的函数,用于从图像格式的文件中读写图像。其中:a、读取图形文件格式的图像需要用imread函数;

b、写入一个图形文件格式的图像需要调用imwrite函数;

c、获取图形文件格式的图像的信息需要调用imfinfoind2rgb函数;

d、以Mat文件加载或保存矩阵数据用loadsave函数;

e、显示加载到Matlab中的图像用imageimagesc.

此外,Matlab工具箱中还提供了图像转化函数,可以对图像类型进行转化,以达到某些图像处理工作的要求。

下面,我们将分别对这些常用的图像处理语句在Matlab中进行练习,并观察其输出结果:

1)在Matlab中读入一个灰度图像,并利用相关函数进行图像处理,并显示结果。

Matlab程序如下:

I=imread('lena.bmp'); %读入原图像文件

imshow(I) %图像文件的显示

imwrite(I,'lena1.bmp'); %将原图像重命名为lena1.bmp,并保存图像

figure,imhist(I,225) %显示原图像的直方图,225为指定的灰度级数目

X=grayslice(I,64); %将原图像I均匀量化成64个等级,然后转化成索引色图像X

figure,imshow(X,pink(64)) %显示索引色图像,pink(64)产生一个64×3的调色板,色度为粉红

运行结果如下:

(2)练习图像的读入,信息查询以及显示

Matlab程序如下:

load trees

image(50,80,X) %显示加载到Matlab中的图像

imwrite(X,map,'trees.tif'); %将图像以tif格式保存

inf=imfinfo('trees.tif') %图像文件信息的查询

BW=im2bw(X,map,0.4); %将索引图像转化成二值图像

figure,imshow(X,map) %显示图像

figure,imshow(BW)

运行结果如下:

%显示从Matlab中加载的图像文件的信息

inf = Filename: 'trees.tif'

FileModDate: '18-六月-2010 19:41:48'

FileSize: 75764

Format: 'tif'

FormatVersion: []

Width: 350

Height: 258

BitDepth: 8

ColorType: 'indexed'

FormatSignature: [73 73 42 0]

ByteOrder: 'little-endian'

NewSubFileType: 0

BitsPerSample: 8

Compression: 'PackBits'

PhotometricInterpretation: 'RGB Palette'

StripOffsets: [12x1 double]

SamplesPerPixel: 1

RowsPerStrip: 23

StripByteCounts: [12x1 double]

XResolution: 72

YResolution: 72

ResolutionUnit: 'Inch'

Colormap: [256x3 double]

PlanarConfiguration: 'Chunky'

TileWidth: []

TileLength: []

TileOffsets: []

TileByteCounts: []

Orientation: 1

FillOrder: 1

GrayResponseUnit: 0.0100

MaxSampleValue: 255

MinSampleValue: 0

Thresholding: 1

2、练习采用不同的模板对图像进行滤波

Matlab程序如下:

I=imread('rice.png'); %读入图像文件rice.png

J=filter2([1 3;-1 -3],I); %用模板[1 3;-1 -3]对图像滤波

K=filter2([-3 -1;1 3],I); %用模板[-3 -1;1 3]对图像滤波

imshow(I) %原图像显示

figure,imshow(J,[]) %由于波波后图像灰度范围与滤波之前不同,所以用[]作为参考

figure,imshow(K,[]) %用另一个模板得到的滤波后的图像显示

运行结果如下:

3、练习图像显示的调用格式

Matlab中不同类型的图像显示方法也不同。从12的练习中,我们可以看到,在Matlab,可以用imshow(I)这种调用格式显示灰度图像,用image(x,y,X)显示索引图像,用imshow(RGB)显示真彩色图像等。在此,我们对其中的部分图像显示的调用格式进行练习。

Matlab程序如下:

%Matlab中显示多幅索引图像

[X1,map1]=imread('clown.tif'); %读入原图像

[X2,map2]=imread('forest.tif');

[X3,map3]=imread('lena.tif');

%imshow函数显示图像(作为与subimage函数显示的图像的参照,利于比较分析)

subplot(1,3,1),imshow(X1,map1)

subplot(1,3,2),imshow(X2,map2)

subplot(1,3,3),imshow(X3,map3)

figure(2);

%subimage函数与subplot结合使用,在一个图形中显示多个图像

subplot(1,3,1),subimage(X1,map1)

subplot(1,3,2),subimage(X2,map2)

subplot(1,3,3),subimage(X3,map3)

运行结果如下:

由图可知,在imshowsubimage函数分别与subplot函数结合显示图像的过程中,比较最后结果,除了最后读入的lena图像的显示结果是一样的,其他图像均有偏差,且subimage函数所显示的输出图像是正确的,而imshow函数在多图像的显示中出现了失真。我们还可以两个图像的显示,四个图像的显示等多图显示的过程中,对imshowsubimage函数进行比较,得到的结果也是一样的。

因此,我们可以推测,subimage函数与subplot函数结合使用,是在多图显示中不出现较大失真的较好的且可行的方法。当然,这只是一种推测,要得出结论,还需进一步验证。

在本次实验中,通过对Matlab中常用图像处理函数和Matlab工具箱中提供的对图像进行预处理的函数的练习,掌握了有关图像处理常用的语句,也熟悉了Matlab在进行图像处理时的一些技巧,并能通过图像处理结果,对各函数在图像处理中的优缺点进行比较,收获较多,基本达到实验目的。

2010 4 2

教师批阅

本文来源:https://www.2haoxitong.net/k/doc/0266641b6bd97f192279e975.html

《用Matlab进行数字图像处理实验1.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式