郑州大学matlab实验指导书 下载本文

内容发布更新时间 : 2024/11/2 16:26:43星期一 下面是文章的全部内容请认真阅读。

徐 州 师 范 大 学

《 Matlab应用图像处理 》课程

实 验 指 导 书

测绘学院 2011年8月

实验一 Matlab图像显示方法

一、实验目的

1. 了解Matlab的基本功能及操作方法 2. 练习图像读写和显示函数的使用方法 3. 掌握Matlab支持的五类图像的显示方法

二、实验内容

1. 图像的读写 A) 图像读

RGB = imread('ngc6543a.jpg');

B) 图像写

先从一个.mat 文件中载入一幅图像,然后利用图像写函数imwrite,创建一个.bmp文件,并将图像存入其中。

load clown whos

imwrite(X,map,'clown.bmp')

C) 图像文件格式转换

bitmap = imread('clown.bmp','bmp'); imwrite(bitmap,'clown.png','png');

2. 图像显示

A) 二进制图像的显示 BW1=zeros(20,20);

%创建仅包含0/1的双精度图像

BW1(2:2:18,2:2:18)=1; imshow(BW1,'notruesize'); whos

BW2=uint8(BW1);

figure,imshow(BW2,'notruesize') BW3=BW2~=0; %逻辑标志置为on figure,imshow(BW3,'notruesize') whos

BW=imread('circles.tif'); imshow(BW);

figure,imshow(~BW);

figure,imshow(BW,[1 0 0;0 0 1]);

B) 灰度图像的显示

I=imread('testpat1.tif'); J=filter2([1 2;-1 -2],I); imshow(I)

figure,imshow(J,[])

C) 索引图像的显示 load clown %装载一幅图像

imwrite(X,map,'clown.bmp'); %保存为bmp文件 imshow(X)

imshow(X,map)

D) RGB图像的显示

I=imread('flowers.tif'); imshow(I)

RGB=imread('ngc6543a.jpg'); figure,imshow(RGB) imshow(I(:,:,3) % 显示第3个颜色分量

E) 多帧图像的显示

mri=uint8(zeros(128,128,1,27));

% 27帧文件mri.tif初始化

for frame=1:27

[mri(:,:,:,frame),map]=imread('mri.tif',frame); % 读入每一帧 end

imshow(mri(:,:,:,3),map); figure,imshow(mri(:,:,:,6),map); figure,imshow(mri(:,:,:,10),map); figure,imshow(mri(:,:,:,20),map);

F) 显示多幅图像

[X1,map1]=imread('forest.tif'); [X2,map2]=imread('trees.tif'); subplot(1,2,1),imshow(X1,map1) subplot(1,2,2),imshow(X2,map2)

subplot(1,2,1),subimage(X1,map1) subplot(1,2,2),subimage(X2,map2)

% 显示第3帧 % 显示第6帧 % 显示第10帧 % 显示第20帧

三、思考题:

1. 图像显示时,若不带参数’notruesize’,显示效果如何? 2. 如何显示RGB图像的某一个颜色分量?

3. 如何显示多帧图像的所有帧?如何根据多帧图像创建电影片段?

实验二 图像运算

一、实验目的

1. 熟悉图像点运算和代数运算的实现方法 2. 了解图像几何运算的简单应用 3. 了解图像的邻域操作

二、实验内容

1. 图像点运算

读入图像‘rice.tif’,通过图像点运算改变对比度。

rice=imread('rice.tif');

subplot(131),imshow(rice) I=double(rice); %转换为双精度类型 J=I*0.43+60; rice2=uint8(J);

%转换为uint8

subplot(132),imshow(rice2) J=I*1.5-60;

rice3=uint8(J); %转换为uint8 subplot(133),imshow(rice3)

2. 图像的代数运算 A) 图像加法运算

I=imread('rice.tif'); imshow(I)

J=imread('cameraman.tif'); figure,imshow(J) K=imadd(I,J); figure,imshow(K)

K2=imadd(I,J,'uint16'); figure,imshow(K2,[])

RGB=imread('flowers.tif'); RGB2=imadd(RGB,50); imshow(RGB)

figure,imshow(RGB2) RGB3=imadd(RGB,100); figure,imshow(RGB3)

B) 图像减法运算 I=imread('rice.tif'); imshow(I)

background = imopen(I,strel('disk',15)); %估计背景图像 figure, imshow(background);

I2=imsubtract(I,background); figure, imshow(I2)

C) 图像乘法运算 I=imread('moon.tif'); J=immultiply(I,1.2); K=immultiply(I,0.5); imshow(I)

figure,imshow(J) figure,imshow(K)

D) *图像除法运算

3. 图像的几何运算 A) 改变图像的大小

读入图像‘ic.tif’,改变图像大小,分别将原图像放大1.5倍和缩小0.5倍。 I=imread('ic.tif'); J=imresize(I,1.25); K=imresize(I,0.8); imshow(I)

figure,imshow(J) figure,imshow(K)

Y=imresize(I,[100,150]); figure,imshow(Y)

B) 旋转一幅图像

将上述图像顺时针和逆时针旋转任意角度,观察显示效果。 I=imread('ic.tif');

J=imrotate(I,30,'bilinear');

J1=imrotate(I,30,'bilinear','crop'); imshow(I)

figure,imshow(J) figure,imshow(J1)

J2=imrotate(I,-15,'bilinear'); figure,imshow(J2)

C) 图像剪切

通过交互式操作,从一幅图像中剪切一个矩形区域。 I=imread('ic.tif');

%从原始图像中减去背景图像