Matlab图像处理的变换以及运算

上传人:自*** 文档编号:48461086 上传时间:2018-07-15 格式:PPT 页数:31 大小:2.73MB
返回 下载 相关 举报
Matlab图像处理的变换以及运算_第1页
第1页 / 共31页
Matlab图像处理的变换以及运算_第2页
第2页 / 共31页
Matlab图像处理的变换以及运算_第3页
第3页 / 共31页
Matlab图像处理的变换以及运算_第4页
第4页 / 共31页
Matlab图像处理的变换以及运算_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《Matlab图像处理的变换以及运算》由会员分享,可在线阅读,更多相关《Matlab图像处理的变换以及运算(31页珍藏版)》请在金锄头文库上搜索。

1、2 图像处理工具箱简介Matlab是一种基于向量(数组)而不是标量的高级程序 语言,因而Matlab从本质上就提供了对图像的支持。数字图 像实际上就是一组有序离散的数据,使用Matlab可以对这些离散数据形成的矩阵进行一次性的处理。Matlab对图像的处理功能主要集中在它的图像处理工具 箱(Image Processing Toolbox)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行图像的读取 、显示、写入、信息查询等基本操作,还可以进行图像变换 、图像分析与图像增强、图像复原以及压缩编码等操作。图像的数据类型在缺省的情况下,Matlab将图像中的数据存储为双精度类 型(d

2、ouble),即64bit浮点数。这种存储方法的优点在于, 使用中不需要数据类型的转换,因为几乎所有的Matlab及其工 具箱函数都可以使用double作为参数类型。然而对于图像存储来说,用64bit表示图像数据会导致巨大 的存储量,所以Matlab还支持图像数据的另一种类型无符号整 型(uint8),即图像矩阵中的每个数据占用1个字节。 Matlab及工具箱中的大多数操作及函数(比如最基本的矩阵相加)都 不支持uint8类型。uint8的优势仅在于节省存储空间,在涉及 运算时将其转换成double型。本次实验的目标1.掌握MATLAB中图像的基本类型;2.图像的读取、写入、信息查询与显示。2

3、.1 图像处理工具箱所支持的图像类型图像处理工具箱支持4种图像类型,它们是:真彩色图像(RGB images) 索引色图像(index images) 灰度图像(intensity images) 二值图像(binary images)1. 真彩色图像真彩色图像用 R、G、B 3个分量表示1个像素的颜 色,所以对1个尺寸为mn的真彩色图像来说,其数据 结构就是一个mn3的多维数组。如果要读取图像中 (100,50)处的像素值,可以查看三元组(100,50,13).真彩色图像可用双精度存储,此时亮度值的范围是 0,1。比较符合习惯的存储方法是用无符号整型存储 ,亮度值的范围为0,255。图2.2

4、 真彩色图像的结构2. 索引色图像索引图像是把像素值直接作为调色板下标的图像。 Matlab中的索引色图像包含2个结构,一个是调色板map ;另外一个是图像数据矩阵X。调色板是一个有3列和若干行的 色彩映像矩阵,矩阵的每行都代表一种色彩,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定的颜色。图 像数据可以是uint8或是双精度的。需要注意的是Matlab中的调色板的色彩强度是0,1中的 浮点数,0代表最暗,1代表最亮。图2.3 索引色图像的结构3. 灰度图像存储灰度图像只需要一个数据矩阵,数据类型 可以是double,值域为 0,1 ,也可以是uint8, 值域0,255。存储时不

5、使用调色板,会使用一个默认的调 色板来显示图像。4. 二值图像与灰度图像相同,二值图像只需一个数据矩阵,每个像素只 有2个灰度值。二值图像可以采用uint8或double类型存储,工 具箱中以二值图像作为返回结果的函数都使用uint8类型。2.2 图像文件的读写和查询Matlab为用户提供了特殊的函数,用于从图像格式的文件中读写图像数据。其中,读取图形文件格式的图像需要用imread函数;写入一个图形文件格式的图像需要调用imwrite函数;获取图像的信息需要调用imfinfo;以Mat文件加载或保存矩阵数据用loadsave函数;显示加载到Matlab中的图像用imshow。图像文件的读写和

6、查询1. 图形图像文件的读取利用函数imread可以完成图形图像文件的读取操作, 其语法如下:一般:A=imread(filename, fmt)索引图像:X, map=imread(filename, fmt)X, map=imread(m83.tif, tif)2. 图形图像文件的写入(保存)利用imwrite函数可以完成图形图像文件的写入操作,其语法如下 imwrite(A, filename, fmt)imwrite(X, map, filename, fmt) 当利用imwrite函数保存图像时,Matlab 缺省的保存方式就是 将其简化到uint8的数据格式。在Matlab中使用的

7、许多图像都是 8bit,并且大多数的图像文件并不需要双精度的浮点数据。imwrite(X, map, lena.bmp, bmp)3. 图形图像文件信息的查询Matlab提供了imfinfo函数用于从图像文件中查询其信息。 所获取的信息依文件类型的不同而不同。但是不管哪种类型的 图像文件,至少包含下面的内容。文件名。(如果该文件不在当前路径下,还包含该文件的完整路 径。) 文件格式。文件格式的版本号。 文件修改时间。 文件的字节大小。 图像的宽度(像素)。 图像的长度(像素)。 每个像素的位数。图像类型。即该图像是RGB(真彩)图像、灰度图像还是索引图 像。 查询图像信息imfinfo(aut

8、umn.tif)2.3 图像文件的显示Matlab 7.0图像处理工具箱提供了一个高级的图像显示函数 imshow。其语法格式为 灰度图像 imshow(I)imshow(I, n) imshow(I, low high) 二值图像 imshow(BW) 索引图像 imshow(X, map) 真彩色图像 imshow(RGB)前三种调用格式用来显示灰度图像,其中 n为灰度级数目,缺省值为256。low high为图像数据的值域。索引图像包括一个数据矩阵X,一个颜色映像矩阵 map。其中map是一个p3的数据矩阵,其每个元素的 值均为0, U之间双精度浮点型数据。map矩阵的每一行分别表示红色

9、、绿色和蓝色的颜色值。而数据矩 阵X可以是double和uint8型的,调用格式如下:imshow(X, map)1. 索引图像及其显示2 灰度图像及其显示 imshow函数显示灰度图像(1) 灰度图像显示最基本的调用格式如下:imshow(I)Matlab 7.0中 imshow函数使用一个灰度级系统调色板( R=G=B)来显示灰度图像。如果I是double型,若像素值为0.0 ,则显示为黑色,1.0则显示为白色,0.0和1.0之间的像素值将显示为灰影。灰度图像及其显示(2) imshow函数显示灰度图像的另一种调用格式是使用明确指定的灰度级数目。imshow(I, n)例如,以下语句将显示

10、一幅32个灰度级的图像I: imshow(I, 32)灰度图像及其显示(3) 为了将超过数据范围的数据显示为图像,用户可以直接定义 数据范围,其调用格式:imshow(I,low high)其中low, high分别为数据的最大和最小值。如果用户使用一个空矩阵 指定数据范围, imshow将自动进 行数据标度。3.RGB图像及其显示用imshow函数显示RGB图像基本的调用格式如下:imshow(RGB)参数RGB是一个mn3的数组。对于RGB中的每一个像素( r,c),imshow显示数值(r,c,13)所描述的颜色。每个屏幕像 素使用24位颜色系统能够直接显示真彩图像,系统给每个像素 的红

11、、绿、蓝颜色分量分配8位(256级)。4. 二进制图像及其显示显示二进制图像用如下语句: imshow(BW);在Matlab 7.0中,二进制图像是一个逻辑类,仅包括0和1 两个数值,像素0显示为黑色,像素1显示为白色。在显示时,也可以通过NOT()命令,对二进制图像进行取 反,使数值0显示为白色,1显示为黑色。例如使用 BW=imread(circles.png);imshow(BW);imshow(BW)命令形式,显示的结果如图所示。二进制图像显示效果5. 直接从磁盘显示图像通常,在显示一幅图像前首先要调用imread函数装载图像, 将数据存储为Matlab 7.0工作平台中的一个或多个

12、变量。但是,如果不希望在显示图像之前装载图像,则可以使用以下命令 格式直接进行图像文件的显示:imshow filename其中,filename为要显示的图像文件的文件名。imshow rice.png Imshow(rice.png)6.多幅图像的显示(1)创建新的图像窗口,每个图像显示在一个窗口中。figure,imshow功能:新建一个图像窗口,用于显示新图像(从而不让新的图像 覆盖原来图像)多幅图像文件的显示调用imshow函数显示图像,如下图所示。I=imread(rice.png)J=filter2(1 2;-1 -2,I)%用模板1 2;-1 -2对图像滤波imshow(I)f

13、igure,imshow(J, )思考:如果没有figure的话,将产 生什么结果?用imshow显示滤波前后的图像多幅图像文件的显示(2)用子图,多个图像显示在一个图像窗口中。 Subplot(m,n,k),imshow %绘制并显示m行n 列第k个子图 例: X1=imread(rice.png);X2=imread(coins.png);X3=imread(bag.png);subplot(1,3,1),imshow(X1); subplot(1,3,2),imshow(X2); subplot(1,3,3),imshow(X3);子图显示效果7.多帧图像的电影片段一般来说一个tif的图像文件包含有多帧的图像。我们一般用 immovie来实现创建电影片段的功能,比如说,一下调用将根据 多帧索引图像X创建电影片段。mov=immovie(X,map)mri=uint8(zeros(128,128,1,27);for frame=1:27mri(:,:,:,frame),map=imread(mri.tif,frame);endmov=immovie(mri,map);movie(mov);初始化一个包括27帧的 图像的文件mri.tif将mri.tif的每一帧读入图 相应的图像帧中创建并显示电影片段

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号