第一二次实验.docx

上传人:b****9 文档编号:26383234 上传时间:2023-06-18 格式:DOCX 页数:20 大小:1.20MB
下载 相关 举报
第一二次实验.docx_第1页
第1页 / 共20页
第一二次实验.docx_第2页
第2页 / 共20页
第一二次实验.docx_第3页
第3页 / 共20页
第一二次实验.docx_第4页
第4页 / 共20页
第一二次实验.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

第一二次实验.docx

《第一二次实验.docx》由会员分享,可在线阅读,更多相关《第一二次实验.docx(20页珍藏版)》请在冰豆网上搜索。

第一二次实验.docx

第一二次实验

说明

一、实验设备

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.点运算和代数运算的实现方法各是怎样的?

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

当前位置:首页 > 求职职场 > 自我管理与提升

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

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