Matlab图像显示方法.docx
- 文档编号:10305723
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:61
- 大小:9.38MB
Matlab图像显示方法.docx
《Matlab图像显示方法.docx》由会员分享,可在线阅读,更多相关《Matlab图像显示方法.docx(61页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 图像 显示 方法