第一二次实验.docx
- 文档编号:26383234
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:20
- 大小:1.20MB
第一二次实验.docx
《第一二次实验.docx》由会员分享,可在线阅读,更多相关《第一二次实验.docx(20页珍藏版)》请在冰豆网上搜索。
第一二次实验
说明
一、实验设备
1.PC计算机系统;
2.MatLab软件/语言包括图像处理工具箱(ImageProcessingToolbox);
3.实验所需要的图片。
二、实验步骤
1.启动MatLab,在MatLab命令窗口中输入相应程序;
A)书写程序时,首先读取图像,一般调用MatLab自带的图像,如cameraman.tif图像;再调用相应的图像处理函数,设置参数;最后输出处理后的图像;
B)Matlab自带图像存储路径为:
Matlab安装路径\toolbox\images\imdemos\,如果Matlab安装在C盘根目录下,则的自带图像路径为:
“C:
\MATLAB7\toolbox\images\imdemos\”;
C)*.m文件默认保存的文件夹为:
Matlab安装路径\work\,如“C:
\MATLAB7\work\”;
D)除Matlab自带的图像外,新添加的被处理图像一般与其*.m文件放在同一文件夹中;
2.浏览源程序并理解含义;
3.运行,观察并截图记录显示结果;
A)运行过程中改变相应参数,观察结果图像,理解参数含义;
B)截图方法:
键盘上PrintScreen键可截取整个屏幕,Alt+PrintScreen组合键可截取活动窗口,粘贴到Windows附件中的画图工具中保存即可。
另外也可自带专用截图软件截取;
4.结束运行,退出程序,撰写实验报告。
三、实验报告要求
描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,必须包括原始图像及其计算/处理后的图像。
1.实验报告中必须包含完整的图像处理过程、代码和结果及其分析;
2.处理前后的图像可以打印出来粘贴到实验报告上;
3.图像应有简单注释(程序中用title标记或用笔添加注释),且必须与程序代码对应。
实验一数字图像处理系统MATLAB初识
实验目的:
通过实际操作,掌握MATLAB的安装过程,养成良好的计算机使用、安装习惯。
通过实际操作,了解MATLAB的使用界面、基本的操作使用,并在以后的实验中熟练运用。
实验原理:
MATLAB语言是由美国MathWorks公司推出的计算机软件,现已成为国际公认的最优秀的科学计算与数学应用软件之一,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境,而且还具有可扩展性特征。
MathWorks公司针对不同领域的应用,推出了信号处理、控制系统、神经网络、图像处理、小波分析、鲁棒控制、非线性系统控制设计、系统辨识、优化设计、统计分析、财政金融、样条、通信等30多个具有专门功能的工具箱,这些工具箱是由该领域内的学术水平较高的专家编写的,无需用户自己编写所用的专业基础程序,可直接对工具箱进行运用。
同时,工具箱内的函数源程序也是开放性的,多为M进行文件,用户可以查看这些文件的代码并进行更改,MALAB支持用户对其函数二次开发,用户的应用程序也可以作为新的函数添加到相应的工具箱中。
MATLAB中的数字图像是以矩阵形式表示的,这意味着MATLAB强大的矩阵运算能力用于图像处理非常有利,矩阵运算的语法对MATLAB中的数字图像同样适用。
数字图像处理工具箱函数包括以下15类:
、⑴、图像显示函数;⑵、图像文件输入、输出函数;⑶、图像几何操作函数;⑷、图像像素值及统计函数;⑸、图像分析函数;⑹、图像增强函数;⑺、线性滤波函数;⑻、二维线性滤波器设计函数;⑼、图像变换函数;⑽、图像邻域及块操作函数;⑾、二值图像操作函数;⑿、基于区域的图像处理函数;⒀、颜色图操作函数;⒁、颜色空间转换函数;⒂、图像类型和类型转换函数。
MATLAB图像处理工具箱支持四种图像类型,分别为真彩色图像、索引色图像、灰度图像、二值图像,由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转换函数相互转换。
MATLAB可操作的图像文件包括BMP、HDF、JPEG、PCX、TIFF、XWD等格式。
实验内容:
MATLAB操作基础
包括MATLAB的安装及界面使用。
参考资料:
实验二Matlab图像处理基础
一、实验目的
1.了解Matlab的基本功能及操作方法
2.练习图像读写和显示函数的使用方法
3.掌握Matlab支持的五类图像的显示方法(灰度、索引、黑白、彩色等)
4.熟悉常用的图像文件格式与格式转换;
二、常用函数
●读写图像文件
imread:
读入各种图像文件(文件类型)
imwrite:
写入图像文件
imfinfo:
读取图像文件的有关信息
whos:
提取图像的基本信息
●图像的显示
figure:
设定图像显示窗口
subplot:
把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。
subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。
image:
MATLAB提供的最原始的图像显示函数
imshow:
图像文件的显示,
subimage:
在一个图形中显示多个图像,结合函数subplot使用
colorbar:
显示图像的颜色条
plot:
绘制二维图形
●图像类型转换
rgb2gray:
把真彩图像转换为灰度图像
im2bw:
通过阈值化方法把图像转换为二值图像
imresize:
改变图像的大小
三、实验内容
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');
D)利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为***.jpg;语法:
imwrite(原图像,新图像,‘quality’,q),q取0-100。
%%
E)图像综合操作
利用matlab提供的函数将图像读入;编写程序实现对给定图像进行一定比例的放大和缩小处理,在Mfile编辑器中写入以下程序,全速执行:
;%读入图像
I=imread('cameraman.tif')
J=imresize(x,10);%放大10倍;
K=imresize(I,0.1);%缩小10倍
L=imrotate(I,-10,'bilinear','crop');%逆时针旋转10°
figure
subplot(2,2,1),imshow(I),title('原图');%原图
subplot(2,2,2),imshow(J),title('放大10');%放大10倍
subplot(2,2,3),imshow(K),title('缩小0.1');%缩小10倍
subplot(2,2,3),imshow(K),title('缩小0.1');%逆时针转10°
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.png');
imshow(BW);
figure,imshow(~BW);
figure,imshow(BW,[100;001]);
B)灰度图像的显示
I=imread('testpat1.tif');
J=filter2([12;-1-2],I);
figure,imshow(I)
figure,imshow(J)
figure,imshow(J,[])
C)索引图像的显示
loadclown%装载一幅图像
imwrite(X,map,'clown.bmp');%保存为bmp文件
figure,imshow(X)
figure,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初始化
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帧
F)显示多幅图像
[X1,map1]=imread('forest.tif');
[X2,map2]=imread('trees.tif');
figure
subplot(1,2,1),imshow(X1,map1)
subplot(1,2,2),imshow(X2,map2)
figure
subplot(1,2,1),subimage(X1,map1)
subplot(1,2,2),subimage(X2,map2)
三、具体实现
1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。
a=imread('f:
\1.jpg')
i=rgb2gray(a)subplot
I=im2bw(a,0.5)
subplot(3,1,1);imshow(a);title('原图像')
subplot(3,1,2);imshow(i);title('灰度图像')
subplot(3,1,3);imshow(I);title('二值图像')
。
。
。
。
。
。
。
。
三、思考题
1.MatLab软件可以支持哪些图像文件格式?
2.如何显示多帧图像的所有帧?
如何根据多帧图像创建电影片段?
3.图像显示时,若不带参数’notruesize’,显示效果如何?
4.如何显示RGB图像的某一个颜色分量?
tmp2=x;
>>tmp3=zeros(256,256);
>>fori=1:
8
tmp=zeros(size(x));
tmp(x>=2^(8-i))=1;
y(:
:
i)=tmp;
tmp3=imadd(x,tmp);
tmp3=tmp2.*tmp-2^(8-i);
实验三图像运算
一、实验目的
1.熟悉图像点运算和代数运算的实现方法
2.了解图像几何运算的简单应用
3.了解图像的邻域操作
二、常用函数
imadd:
加运算
imopen:
估计背景图像
imsubtract:
减运算
immultiply:
乘运算
individe:
除运算
imresize:
改变图像的大小
translate:
图像平移
imdilate:
对图像实现膨胀操作
imrotate:
旋转
imtransform:
图像空间变换
imcrop:
图像剪切
二、实验内容
1.图像点运算
读入图像‘rice.png’,通过图像点运算改变对比度。
rice=imread('rice.png');
subplot(131),imshow(rice)
I=double(rice);%转换为双精度类型
J=I*0.43+60;
J=I*0.43+60;%转换为uint8
subplot(132),imshow(rice2)
J=I*1.5-60;
rice3=uint8(J);%转换为uint8
subplot(133),imshow(rice3)
2.图像的代数运算
A)图像加法运算
I=imread('rice.png');
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.png');
imshow(I)
background=imopen(I,strel('disk',15));%估计背景图像
figure,imshow(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)图像缩放
读入图像‘trees.tif’,改变图像大小,分别将原图像放大1.5倍和缩小0.5倍。
(改变imresize中的插值方式,再次实现下面的程序,分析结果)
I=imread('trees.tif');
J=imresize(I,1.25);
K=imresize(I,0.8);
figure,imshow(I)
figure,imshow(J)
figure,imshow(K)
Y=imresize(I,[100,150]);
figure,imshow(Y)
在matlab环境中,程序首先读取图像,然后调用图像缩放函数,设置相关参数,再输出处理后的图像。
I=imread('cameraman.tif');
figure,imshow(I);
scale=0.5;
J=imresize(I,scale);
figure,imshow(J);
B)图像平移
将图像沿水平和垂直方向任意移动,观察显示效果。
I=imread('trees.tif');
se=translate(strel
(1),[2525]);
J=imdilate(I,se);
imshow(I),title('Original')
figure,imshow(J),title('Translated');
在matlab环境中,程序首先读取图像,然后调用图像平移函数,设置相关参数,再输出处理后的图像。
C)图像旋转
将上述图像顺时针和逆时针旋转任意角度,观察显示效果。
(改变imrotate中的插值方式,再次实现下面的程序,分析结果)
I=imread('trees.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)
在matlab环境中,程序首先读取图像,然后调用图像旋转函数,设置相关参数,再输出处理后的图像。
D)图像的空间变换
I=imread('cameraman.tif');
tform=maketform('affine',[100;.510;001]);%仿射变换
J=imtransform(I,tform);
imshow(I),figure,imshow(J)
tformfwd([1020],T)
tforminv(tformfwd([1020],T),T)
E)图像剪切
I=imread('trees.tif');
imshow(I);
I1=imcrop;通过交互式操作,从一幅图像中剪切一个矩形区域。
figure,imshow(I1)
I2=imcrop(I,[3060120160]);
figure,imshow(I2)
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)
三、思考题
1.点运算和代数运算的实现方法各是怎样的?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一 二次 实验