Matlab图像显示方法.docx

上传人:b****7 文档编号:10305723 上传时间:2023-02-10 格式:DOCX 页数:61 大小:9.38MB
下载 相关 举报
Matlab图像显示方法.docx_第1页
第1页 / 共61页
Matlab图像显示方法.docx_第2页
第2页 / 共61页
Matlab图像显示方法.docx_第3页
第3页 / 共61页
Matlab图像显示方法.docx_第4页
第4页 / 共61页
Matlab图像显示方法.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

Matlab图像显示方法.docx

《Matlab图像显示方法.docx》由会员分享,可在线阅读,更多相关《Matlab图像显示方法.docx(61页珍藏版)》请在冰豆网上搜索。

Matlab图像显示方法.docx

Matlab图像显示方法

实验一Matlab图像显示方法

一、实验目的

1.了解Matlab的基本功能及操作方法

2.练习图像读写和显示函数的使用方法

3.掌握Matlab支持的五类图像的显示方法

二、实验内容

1.图像的读写

A)图像读

RGB=imread('ngc6543a.jpg');

B)图像写

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

loadclown

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,[100;001]);

图1.1-1:

BW1图像图1.1-2:

BW2图像

图1.1-3:

BW图像图1.1-4:

BW取反图图1.1-5:

BW变换像

B)灰度图像的显示

I=imread('testpat1.tif');

J=filter2([12;-1-2],I);

imshow(I)

figure,imshow(J,[])

图1.2-1:

I(testpat1.tif)图像图1.2-2:

I灰度变换后的J图像

C)索引图像的显示

loadclown%装载一幅图像

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

imshow(X)imshow(X,map)

图1.3-1:

索引图像

D)RGB图像的显示

I=imread('flowers.tif');

imshow(I)

RGB=imread('ngc6543a.jpg');

figure,imshow(RGB)

imshow(I(:

:

3)%显示第3个颜色分量

图1.4-1:

RGB图像图1.4-2:

第三颜色分量图像

E)多帧图像的显示

mri=uint8(zeros(128,128,1,27));%27帧文件mri.tif初始化

forframe=1:

27

[mri(:

:

:

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

end

imshow(mri(:

:

:

3),map);%显示第3帧

figure,imshow(mri(:

:

:

6),map);%显示第6帧

figure,imshow(mri(:

:

:

10),map);%显示第10帧

figure,imshow(mri(:

:

:

20),map);%显示第20帧

图1.5-1:

第3帧图1.5-1:

第6帧图1.5-1:

第10帧图1.5-1:

第20帧

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)

图1.5-1:

多幅图像显示

三、思考题:

1.图像显示时,若不带参数’notruesize’,显示效果如何?

2.如何显示RGB图像的某一个颜色分量?

3.如何显示多帧图像的所有帧?

如何根据多帧图像创建电影片段?

实验二图像运算

一、实验目的

1.熟悉图像点运算和代数运算的实现方法

2.了解图像几何运算的简单应用

3.了解图像的邻域操作

二、实验内容

1.图像点运算

A)读入图像‘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.1-1:

通过图像点运算改变对比度前后的图像

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)

图2.2-1:

图像I图2.2-2:

图像J图2.2-3:

I与J相加图像K

图2.2-4:

图像RGB图2.2-5:

图像RGB2图2.2-6:

图像RGB3

B)图像减法运算

I=imread('rice.tif');

imshow(I)

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

figure,imshow(background);

I2=imsubtract(I,background);%从原始图像中减去背景图像

figure,imshow(I2)

图2.3-1:

图像I图2.3-2:

背景图像图2.3-3:

减去背景后图像

C)图像乘法运算

I=imread('moon.tif');

J=immultiply(I,1.2);

K=immultiply(I,0.5);

imshow(I)

figure,imshow(J)

figure,imshow(K)

图2.4-1:

图像I图2.4-2:

图像J图2.4-3:

图像K

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)

图2.5-1:

图像I图2.5-2:

图像J

图2.5-3:

图像K图2.5-4:

图像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)

图2.6-1:

图像I图2.6-2:

图像J

图2.6-3:

图像J1图2.6-4:

图像J2

C)图像剪切

通过交互式操作,从一幅图像中剪切一个矩形区域。

I=imread('ic.tif');

imshow(I);

I1=imcrop;

figure,imshow(I1)

I2=imcrop(I,[3060120160]);

figure,imshow(I2)

图2.7-1:

图像I图2.7-2:

图像I

4.图像的邻域操作

读入图像‘tire.tif’,分别使用函数nlfilter和blkproc对图像进行滑动邻域操作和分离邻域操作。

I=imread('tire.tif');

f=inline('max(x(:

))');%构造复合函数

I2=nlfilter(I,[33],f);%滑动邻域操作

imshow(I)

figure,imshow(I2)

I=imread('tire.tif');

f=inline('uint8(round(mean2(x)*ones(size(x))))');%构造复合函数

I2=blkproc(I,[88],f);%滑动邻域操作

imshow(I)

figure,imshow(I2)

图2.8-1:

图像I图2.8-1:

图像I2

 

图2.7-1:

滑动邻域操作

实验三图像变换与滤波器设计

一、实验目的

1.了解傅立叶变换、离散余弦变换及Radon变换在图像处理中的应用

2.了解Matlab线性滤波器的设计方法

二、实验内容

1.傅立叶变换

A)绘制一个二值图像矩阵,并将其傅立叶函数可视化。

f=zeros(30,30);f(5:

24,13:

17)=1;

imshow(f,'notruesize')

F=fft2(f);F2=log(abs(F));

figure,imshow(F2,[-15],'notruesize');colormap(jet);

F=fft2(f,256,256);%零填充为256×256矩阵

figure,imshow(log(abs(F)),[-15],'notruesize');colormap(jet);

F2=fftshift(F);%将图像频谱中心由矩阵原点移至矩阵中心

figure,imshow(log(abs(F2)),[-15],'notruesize');colormap(jet);

图3.1-1:

图像f图3.1-2:

傅里叶变换图像F

图3.1-3:

零填充图像图3.1-4:

频谱中心移至矩阵中心图像

B)利用傅立叶变换分析两幅图像的相关性,定位图像特征。

读入图像‘text.tif’抽取其中的字母‘a’。

bw=imread('text.tif');

a=bw(59:

71,81:

91);

imshow(bw);

figure,imshow(a);

C=real(ifft2(fft2(bw).*fft2(rot90(a,2),256,256)));%求相关性

figure,imshow(C,[]);

thresh=max(C(:

));

figure,imshow(C>thresh-10)

figure,imshow(C>thresh-15)

图3.1-1:

原text图像图3.1-2:

字母图像a

图3.1-3:

图像的相关性对比

2.离散余弦变换(DCT)

A)使用dct2对图像‘autumn.tif’进行DCT变换。

RGB=imread('autumn.tif');

imshow(RGB)

I=rgb2gray(RGB);%转换为灰度图像

figure,imshow(I)

J=dct2(I);

figure,imshow(log(abs(J)),[]),colormap(jet(64));colorbar;

图3.2-1:

图像RGB图3.2-2:

转换为灰度图像

图3.2-1:

颜色块控制条

B)将上述DCT变换结果中绝对值小于10的系数舍弃,使用idct2重构图像并与原图像比较。

RGB=imread('autumn.tif');

I=rgb2gray(RGB);%转换为灰度图像

J=dct2(I);

figure,imshow(I)

K=idct2(J);

figure,imshow(K,[0255])

J(abs(J)<10)=0;%舍弃系数

K2=idct2(J);

figure,imshow(K2,[0255])

图3.3-1:

图像I图3.3-2:

图像K图3.3-3:

图像K2

C)利用DCT变换进行图像压缩。

I=imread('cameraman.tif');

I=im2double(I);

T=dctmtx(8);

B=blkproc(I,[8,8],'P1*x*P2',T,T');

mask=[11110000

11100000

11000000

10000000

00000000

00000000

00000000

00000000];

B2=blkproc(B,[88],'P1.*x',mask);

I2=blkproc(B2,[88],'P1*x*P2',T',T);

imshow(I)figure,imshow(I2)

图3.4-1:

图像I图3.4-2:

压缩后图像

3.Radon变换使用Radon逆变换重建图像。

P=phantom(256);%创建256灰度级大脑图

imshow(P)

theta1=0:

10:

170;[R1,xp]=radon(P,theta1);%18个投影

theta2=0:

5:

175;[R2,xp]=radon(P,theta2);%36个投影

theta3=0:

2:

178;[R3,xp]=radon(P,theta3);%90个投影

figure,imagesc(theta3,xp,R3);colormap(hot);colorbar%使用逆变换重构图像

I1=iradon(R1,10);%用R1重构图像

I2=iradon(R2,5);%用R2重构图像

I3=iradon(R3,2);%用R3重构图像

figure,imshow(I1)

figure,imshow(I2)

figure,imshow(I3)

图3.5-1:

256灰度级大脑图图3.5-2:

颜色块控制条

图3.5-3:

18个投影构图图3.5-4:

36个投影构图图3.5-5:

90个投影构图

4.Matlab线形滤波器设计

采用频率变换方式,通过一维最优波纹FIR滤波器创建二维FIR滤波器(p96)。

b=remez(10,[00.40.61],[1100]);%阶次,频率向量,对应的理想幅频响应

h=ftrans2(b);

[H,w]=freqz(b,1,64,'whole');

colormap(jet(64))

plot(w/pi-1,fftshift(abs(H)));%使x轴取值0处对应曲线中心

figure,freqz2(h,[3232])

图3.6-1:

一维FIR滤波器图3.6-2:

二维FIR滤波器

 

实验四形态学操作与空间变换

一、实验目的

1.了解膨胀和腐蚀的Matlab实现方法

2.掌握图像膨胀、腐蚀、开启、闭合等形态学操作函数的使用方法

3.了解二进制图像的形态学应用

4.了解空间变换函数及图像匹配方法

二、实验内容

1.图像膨胀

A)对包含矩形对象的二进制图像进行膨胀操作。

BW=zeros(9,10);

BW(4:

6,4:

7)=1;

imshow(BW,'notruesize')

se=strel('square',3);%正方形结构元素

BW2=imdilate(BW,se);

figure,imshow(BW2,'notruesize')

图4.1-1:

BW图4.1-2:

BW2

B)改变上述结构元素类型(如:

line,diamond,disk等),重新进行膨胀操作。

图4.2-1:

line类型图4.2-2:

disk类型图4.2-3:

diamond类型

C)对图像‘text.tif’进行上述操作,观察不同结构元素膨胀的效果。

BW3=imread('text.tif');

imshow(BW3)

se2=strel('line',11,90);%线型结构元素

BW4=imdilate(BW3,se2);

figure,imshow(BW4)

图4.3-1:

line类型图4.3-2:

disk类型

图4.3-3:

diamond类型图4.3-4:

square类型

2.图像腐蚀

A)对图像‘circbw.tif’进行腐蚀操作。

BW1=imread('circbw.tif');

se=strel('arbitrary',eye(5));

BW2=imerode(BW1,se);

imshow(BW1)

figure,imshow(BW2)

图4.4-1:

BW1图4.4-2:

BW2

B)对图像‘text.tif’进行腐蚀操作。

BW=imread('text.tif');

se=strel('line',11,90);

BW2=imerode(BW3,se);

imshow(BW)

figure,imshow(BW2)

图4.5-1:

BW图4.5-2:

BW2

3.膨胀与腐蚀的综合使用

A)从原始图像‘circbw.tif’中删除电流线,仅保留芯片对象。

方法一:

先腐蚀(imerode),再膨胀(imdilate);

BW1=imread('circbw.tif');imshow(BW1)

se=strel('rectangle',[4030]);%选择适当大小的矩形结构元素

BW2=imerode(BW1,se);%先腐蚀,删除较细的直线

figure,imshow(BW2)

BW3=imdilate(BW2,se);%再膨胀,恢复矩形的大小

figure,imshow(BW3)

图4.6-1:

BW1图4.6-2:

BW2图4.6-3:

BW3

方法二:

使用形态开启函数(imopen)。

BW1=imread('circbw.tif');

imshow(BW1)

se=strel('rectangle',[4030]);

BW2=imopen(BW1,se);%开启操作

figure,imshow(BW2)

图4.7-1:

BW1图4.7-2:

大小[4030]

B)改变结构元素的大小,重新进行开启操作,观察处理结果。

se=strel(‘rectangle’,[2010]);

se=strel(‘rectangle’,[5040]);

图4.8-1:

大小[2010]图4.8-2:

大小[5040]

C)置结构元素大小为[43],同时观察形态开启(imopen)与闭合(imclose)的效果,总结形态开启与闭合在图像处理中的作用。

I=imread('circbw.tif');

imshow(I)

se=strel('rectangle',[43]);

I1=imopen(I,se);%开启操作

I2=imclose(I,se);%闭合操作

figure,imshow(I1)

figure,imshow(I2)

图4.9-1:

I图4.9-1:

I1图4.9-1:

I2

4.高帽与低帽变换

A)读入图像‘pearlite.tif’,分别显示其高帽变换与低帽变换结果,并与原图像较。

(设se=strel('disk',5);)。

I=imread('pearlite.tif');

subplot(221),imshow(I)

se=strel('disk',5);

J=imtophat(I,se);

subplot(222),imshow(J)

K=imbothat(I,se);

subplot(223),imshow(K)

L=imsubtract(imadd(J,I),K);

subplot(224),imshow(L)

图4.10-1:

高帽与低帽变换

5.图像极值的处理方法

A)对于下图所示的图像矩阵A,利用函数imregionalmax寻找其局部极大值

A=[10101010101010101010;

10131313101011101110;

10131313101010111010;

10131313101011101110;

10101010101010101010;

10111010101818181010;

10101011101818181010;

10101110101818181010;

10111011101010101010;

10101010101011101010];

B=imregionalmax(A)

结果如下:

B)利用函数imextendedmax寻找像素值大于其邻域像素值2个单位的局部极值。

C=imextendedmax(A,2)

结果如下:

6.创建一幅图像,求其距离矩阵。

bw=zeros(5,5);

bw(2,2)=1;bw(4,4)=1;

D=bwdist(bw)

center1=-10;

center2=-center1;

dist=sqrt(2*(2*center1)^2);

radius=dist/2*1.4;

lims=[floor(cen

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

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

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