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

上传人:sh****n 文档编号:2905616 上传时间:2019-12-04 格式:PPT 页数:31 大小:2.73MB
返回 下载 相关 举报
Matlab图像处理的变换以及运算.ppt_第1页
第1页 / 共31页
Matlab图像处理的变换以及运算.ppt_第2页
第2页 / 共31页
Matlab图像处理的变换以及运算.ppt_第3页
第3页 / 共31页
点击查看更多>>
资源描述
,2 图像处理工具箱简介,Matlab是一种基于向量(数组)而不是标量的高级程序语言,因而Matlab从本质上就提供了对图像的支持。数字图像实际上就是一组有序离散的数据,使用Matlab可以对这些离散数据形成的矩阵进行一次性的处理。 Matlab对图像的处理功能主要集中在它的图像处理工具箱(Image Processing Toolbox)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行图像的读取、显示、写入、信息查询等基本操作,还可以进行图像变换、图像分析与图像增强、图像复原以及压缩编码等操作。,图像的数据类型,在缺省的情况下,Matlab将图像中的数据存储为双精度类型(double),即64bit浮点数。这种存储方法的优点在于,使用中不需要数据类型的转换,因为几乎所有的Matlab及其工具箱函数都可以使用double作为参数类型。 然而对于图像存储来说,用64bit表示图像数据会导致巨大的存储量,所以Matlab还支持图像数据的另一种类型无符号整型(uint8),即图像矩阵中的每个数据占用1个字节。 Matlab及工具箱中的大多数操作及函数(比如最基本的矩阵相加)都不支持uint8类型。uint8的优势仅在于节省存储空间,在涉及运算时将其转换成double型。,本次实验的目标,1.掌握MATLAB中图像的基本类型; 2.图像的读取、写入、信息查询与显示。,2.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 真彩色图像的结构,2. 索引色图像,索引图像是把像素值直接作为调色板下标的图像。 Matlab中的索引色图像包含2个结构,一个是调色板map;另外一个是图像数据矩阵X。调色板是一个有3列和若干行的色彩映像矩阵,矩阵的每行都代表一种色彩,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定的颜色。图像数据可以是uint8或是双精度的。 需要注意的是Matlab中的调色板的色彩强度是0,1中的浮点数,0代表最暗,1代表最亮。,图2.3 索引色图像的结构,3. 灰度图像,存储灰度图像只需要一个数据矩阵,数据类型可以是double,值域为0,1 ,也可以是uint8,值域0,255。 存储时不使用调色板,会使用一个默认的调色板来显示图像。,4. 二值图像,与灰度图像相同,二值图像只需一个数据矩阵,每个像素只有2个灰度值。二值图像可以采用uint8或double类型存储,工具箱中以二值图像作为返回结果的函数都使用uint8类型。,2.2 图像文件的读写和查询,Matlab为用户提供了特殊的函数,用于从图像格式的文件中读写图像数据。其中, 读取图形文件格式的图像需要用imread函数; 写入一个图形文件格式的图像需要调用imwrite函数; 获取图像的信息需要调用imfinfo; 以Mat文件加载或保存矩阵数据用loadsave函数; 显示加载到Matlab中的图像用imshow。,图像文件的读写和查询,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中使用的许多图像都是8bit,并且大多数的图像文件并不需要双精度的浮点数据。,imwrite(X, map, lena.bmp, bmp),3. 图形图像文件信息的查询,Matlab提供了imfinfo函数用于从图像文件中查询其信息。所获取的信息依文件类型的不同而不同。但是不管哪种类型的图像文件,至少包含下面的内容。 文件名。(如果该文件不在当前路径下,还包含该文件的完整路径。) 文件格式。 文件格式的版本号。 文件修改时间。 文件的字节大小。 图像的宽度(像素)。 图像的长度(像素)。 每个像素的位数。 图像类型。即该图像是RGB(真彩)图像、灰度图像还是索引图像。 ,查询图像信息,imfinfo(autumn.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矩阵的每一行分别表示红色、绿色和蓝色的颜色值。而数据矩阵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) 例如,以下语句将显示一幅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位颜色系统能够直接显示真彩图像,系统给每个像素的红、绿、蓝颜色分量分配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工作平台中的一个或多个变量。但是,如果不希望在显示图像之前装载图像,则可以使用以下命令格式直接进行图像文件的显示: 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) figure,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:27 mri(:,:,:,frame),map=imread(mri.tif,frame); end mov=immovie(mri,map); movie(mov);,初始化一个包括27帧的图像的文件mri.tif,将mri.tif的每一帧读入图相应的图像帧中,创建并显示电影片段,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!