软工123-廖杰-1208060324-实验1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贵州大学实验报告
学院:计算机科学与技术学院专业:软件工程班级:123 姓名廖杰学号1208060324 实验组实验时间2015.10.27 指导教师戴丹成绩
实验项目名称实验一图像基本操作
实验目的
利用MATLAB软件,熟悉图像的数据矩阵操作、图像的类型转换及图像的存储等基本操作。
1.熟悉图像矩阵的基本操作
2.掌握图像数据类型转换及图像类型转换
3.掌握图像文件的读写
4.掌握图像及灰度图像直方图的显示
5.掌握图像缩放和旋转
实
验
要
求
必做
实验原理1.关于图像矩阵---MATLAB中图像数据以矩阵方式的存储。所以有必要学会关于矩阵的操作,由于篇幅有限,这里只作简要的介绍。
生成矩阵的函数有:
eye 生成单位矩阵 ones全1阵 zeros 全零阵
rand 均匀随机阵 randn 正态随机阵
2.图像数据类型及图像类型
2.1 图像数据类型转换---MATLAB中图像数据矩阵的存储方式为双精度(double)类型即64位浮点数。而存储图像时MATLAB有时采用无符号整型(uint8)即图像矩阵中的每个数据占用一个字节。由于大多数运算和函数(比如最基本的矩阵加减运算)都不支持uint8类型,所以运算时通常要将图像转换成 double型。
函数double将数据转换为双精度浮点类型,调用格式为:
X64=double(x8) /256
2.2 图像类型及转换---在MATLAB中,一幅图像可能包含一个数据矩阵,也可能有一个颜色映像表矩阵。MATLAB图像处理工具箱支持四种图像类型,其区别在于数据矩阵元素的不同含意。它们是:真彩色图像,索引图像,灰度图像,二值图像。
(1)真彩色图像---真彩色图像又称RGB图像,对于一个尺寸为M×N的彩色图像来说,在MATLAB中则存储为一个M×N×3的多维数组,像素的颜色由保存在像素位置上的R、G、B的强度值的组合来确定。如果需要知道图像A中(x,y)处的像素值,则可以使用这样的代码A(x,y,1:3)。
(2)索引图像---MATLAB中的索引图像包含两个结构,一个是调色板,一个是图
像数据矩阵。调色板是一个m×3的色彩映射矩阵,矩阵的每一行都代表一种色彩,与真彩色图像相同,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定的颜色。调色板通常和索引图像存在一起,当读入图像时,MATLAB同时加载调色板和图像。
(3)灰度图像---灰度图像就是只有强度信息,而没有颜色信息的图像。存储灰度图像只需要一个数据矩阵,矩阵的每个元素表示对应位置像素的灰度值,灰度图像的数据类型可以是doubIe类型,这时值域为[0,1],也可以uint8类刑,值域是[0,255]。
(4)二值图像---二值图像就是只有黑白两种值的图像,我们可以把它看作是特殊的灰度图像。二值图像只需一个数据矩阵来存储,每个像素只取0或1。
MATLAB提供了若干函数,用于图像类型的转换,这些函数如下所示:
●rgb2gray 将RGB图像转换成灰度图像
●Gray2ind 将灰度图像转换成索引图像
●Im2bw 设定阈值将图像转换为二值图像
●Im2double 将图像数据阵列转换为double型
●Im2unit8 将图像数据阵列转换为unit8型
●Im2unit16 将图像数据阵列转换为unit16型
●Ind2gray 将索引图像转换为灰度图像
●Ind2rgb 将索引图像转换成真彩色图像
2.3 图像读写及显示---MATLAB为用户提供了专门的函数以从图像格式的文件中读写图像数据。
(1)图像文件的读取---利用imread函数可以完成图像文件的读取操作,常见调用格式为:
A = imread(FILENAME,FMT)
其作用是将文件名用字符串FILENAME表示的、扩展名用字符串FMT(表示图像文件格式)表示的图像文件中的数据读到矩阵A中。如果FILENAME所指的为灰度图像,则A为M×N的二维矩阵;如果FILENAME所指的为RGB图像,则A为M×N×3的三维矩阵。
(2)图像文件的写入(保存)---利用imwrite函数完成图像的写入操作,也完全支持上述各种图像文件的格式,其常用的调用格式为:
imwrite(A,FILENAME,FMT)
(3)图像文件的显示---MATLAB的图像处理工具箱提供了多种图像显示技术。例如,imshow函数可以直接从文件显示多种类型的图像;image函数可以将矩阵作为图像显示;colorbar函数可以用来显示颜色条。
●imshow函数是最常用的显示各种图像的函数,格式为:
●imshow(I,n); %显示灰度矩阵I, n设置显示的灰度值范围(级数),默认值为
256。
●imshow(RGB) %显示真彩色图像
●imshow filename %直接显示图像,但图像数据不在MATLAB的workspace中。
可以将多幅图像显示在一个图形窗口中,达到这一目的有两种方法:一种方法是联合使用subplot函数和imshow函数,但此方法在一个图形窗口只能有一个调色板;另一种方法是联合使用subplot函数和subimage函数,此方法可在一个图形窗口内使用多个调色板。
subplot函数将一个图形窗口划分为多个显示区域,其调用格式如下:
subplot(m,n,p)
subplot函数将图形窗口划分为m(行)×n(列)个显示区域,并选择第p个区域作为当前绘图区。
(4)灰度直方图的显示---MATLAB图像处理工具箱提供了imhist函数来计算和显示
图像的直方图,imhist函数的语法格式为:
imhist(I, n)
imhist(X, MAP)
其中imhist(I,n)计算和显示灰度图像I的直方图,n为指定的灰度级数目,默认值为256。imhist(X, MAP)计算和显示索引色图像X的直方图,map为调色板。
3.图像的几何运算
3.1 图像的缩放---MATLAB图像处理工具箱中的函数imresize可以用三种方法对图像进
行插值缩放,如果不指定插值方法,则默认为最邻近插值法。imresize函数的语法格式为:
B = imresize(A, m, method), 返回原图像A的m倍放大的图像(m小于1时效果是缩
小)。
这里参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest'。
B = imresize(A, [numrows numcols]),返回的图像B具有由[numrows numcols]指定的
行、列数。
3.2 图像的旋转
在工具箱中的函数imrotate可用上述三种方法对图像进行插值旋转,默认的插值方法也是最邻近插值法。imrotate的语法格式为:
B = imrotate(A, angle, method)
函数imrotate对图像进行旋转,参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest'。
一般说来旋转后的图像会比原图大,超出原图部分值为0。
实
验
仪
器
安装有MATLAB软件的PC
实验步骤
(1)使用命令figure(1)开辟一个显示窗口
(2)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内显示RGB 图像、二值图像和灰度图像,注上文字标题。
(3)保存转换后的灰度图像和二值图像
(4)在同一个窗口显示转换后的灰度图像的直方图
(5)将原RGB图像的R、G、B三个分量图像显示在figure(2)中,观察对比它们的特点,体会不同颜色所对应的R、G、B分量的不同之处。
(6)将图像放大1.5倍,插值方法使用三种不同方法,在figure(3)中显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;
(7)图像顺时针旋转30度,插值方法使用三种不同方法,在figure(3)中显示旋转后的图像并比较结果有什么不同。