当前位置:文档之家› 用Matlab进行数字图像处理实验1

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

实验报告
专业:信息与计算科学班级: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@)
三、实验内容与步骤
1、练习MATLAB中常用的图像处理语句
Matlab中为用户提供了一些特殊的函数,用于从图像格式的文件中读写图像。

其中:a、读取图形文件格式的图像需要用imread函数;
b、写入一个图形文件格式的图像需要调用imwrite函数;
c、获取图形文件格式的图像的信息需要调用imfinfo、ind2rgb函数;
d、以Mat文件加载或保存矩阵数据用load、save函数;
e、显示加载到Matlab中的图像用image、imagesc.
此外,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的调色板,色度为粉红运行结果如下:
500
1000
1500
2000
2500
3000
3500
050100150200250
(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)
运行结果如下:
50100150200250300350
100
150
200
250
300
%显示从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中不同类型的图像显示方法也不同。

从1和2的练习中,我们可以看到,在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)
运行结果如下:
100200300
100
200
200400
100
200
300
100200300400500
100
200
300
400
500
由图可知,在imshow和subimage函数分别与subplot函数结合显示图像的过程中,比较最后结果,除了最后读入的lena图像的显示结果是一样的,其他图像均有偏差,且subimage函数所显示的输出图像是正确的,而imshow函数在多图像的显示中出现了失真。

我们还可以两个图像的显示,四个图像的显示等多图显示的过程中,对imshow和subimage函数进行比较,得到的结果也是一样的。

因此,我们可以推测,subimage函数与subplot函数结合使用,是在多图显示中不出现较大失真的较好的且可行的方法。

当然,这只是一种推测,要得出结论,还需进一步验证。



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

2010年 4 月 2 日教师
批阅
年月日。

相关主题