资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,2,章,Matlab,图像处理工具箱,2.1,Matlab,简介,Matlab,是,Matrix Laboratory,的缩写,是当今很流行的科学计算软件。信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用,在诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其他计算问题,,Matlab,软件适时推出,为人们提供了一个方便的数值计算平台。,Matlab,软件主要由主包、,Simulink,和工具箱,3,部分组成。,1.,Matlab,主包,(,1,),Matlab,语言,Matlab,语言是一种基于矩阵,/,数组的高级语言,它具有流程控制语句、函数、数据结构、输入输出,以及面向对象的程序设计特性。,(,2,),Matlab,工作环境,Maltlab,工作环境集成了许多工具和程序,用户用工作环境中提供的功能完成他们的工作。,(,3,)句柄图形,句柄图形是,Matlab,的图形系统,它包括一些高级命令,用于实现二维和三维数据可视化、图像处理、动画等功能;还有一些低级命令,用来定制图形的显示,以及建立,Matlab,应用程序的图形用户界面。,Matlab,主包,(,4,),Matlab,数学函数库,Matlab,数学函数库是数学运算的一个巨大集合,该函数库既包含了各类简单函数,也包含了矩阵转置、特征值、贝塞尔函数、快速傅里叶变换等复杂函数。,(,5,),Matlab,应用程序接口,(API),Matlab,应用程序接口是一个,Matlab,语言向,C,和,Fortran,等其他高级语言进行交互的库,包括读写,Matlab,数据文件,(MAT,文件,),。,2.,Simulink,Simulink,是用于动态系统仿真的交互式系统。,Simulink,允许用户在屏幕上绘制框图模拟一个系统,并能够动态地控制该系统。,Simulink,采用鼠标驱动方式,能够处理线性、非线性、连续、离散、多变量以及多级系统。此外,,Simulink,还为用户提供了,Simulink,Extensions,(扩展)和,Blocksets,3,(模块集),2,个附加项。,3.,Matlab,工具箱,Matlab,工具箱是,Matlab,用来解决各个领域特定问题的函数库,它是开放式的,可以应用,也可以根据需要进行扩展。,Matlab,提供的工具箱为用户提供了丰富而实用的资源,工具箱的内容非常广泛,涵盖了科学研究的很多门类。目前,已有涉及数学、控制、通信、信号处理、图像处理、经济、地理等多种学科的,20,多种,Matlab,工具箱投入应用。,2.2,Matlab,常用的基本命令,1.,常用矩阵的生成,(,1,)全,0,矩阵,A=,zeros(n,):,生成,nn,的全,0,矩阵。,A=,zeros(m,n,):,生成,mn,的全,0,矩阵。,A=zeros(a1,a2,a3,):,生成,a1a2a3,的全,0,矩阵。,A=,zeros(size(B,):,生成与矩阵,B,大小相同的全,0,矩阵。,Matlab,常用的基本命令,(,2,)全,1,矩阵,A=,ones(n,):,生成,nn,的全,1,矩阵。,A=,ones(m,n,):,生成,mn,的全,1,矩阵。,A=ones(,m,n,):,生成,mn,的全,1,矩阵。,A=ones(a1,a2,a3,):,生成,a1a2a3,的全,1,矩阵。,A=,onse(size(B,):,生成与矩阵,B,大小相同的全,1,矩阵。,Matlab,常用的基本命令,(,3,)单位矩阵,A=,eye(n,):,生成,nn,的单位矩阵。,A=,eye(m,n,):,生成,mn,的单位矩阵。,A=eye(,m,n,):,生成,mn,的单位矩阵。,A=,eye(size(B,):,生成与矩阵,B,大小相同的单位矩阵。,Matlab,常用的基本命令,(,4,)均匀分布的随机矩阵,A=,rand(n,):,生成,nn,的随机矩阵。,A=,rand(m,n,):,生成,mn,的随机矩阵。,A=rand(,m,n,):,生成,mn,的全,1,矩阵。,A=rand(a1,a2,a3,):,生成,a1a2a3,的随机矩阵。,A=,rand(size(B,):,生成与矩阵,B,大小相同的随机矩阵。,Matlab,常用的基本命令,(,5,)正态分布的随机矩阵,A=,randn(n,):,生成,nn,的随机矩阵。,A=,randn(m,n,):,生成,mn,的随机矩阵。,A=,randn,(,m,n,):,生成,mn,的全,1,矩阵。,A=randn(a1,a2,a3,):,生成,a1a2a3,的随机矩阵。,A=,randn(size(B,):,生成与矩阵,B,大小相同的随机矩阵。,Matlab,常用的基本命令,2.,简单矩阵的生成,在,Matlab,中,可以采用多种不同的方式生成矩阵。,(,1,)直接输入矩阵元素,对于较小的简单矩阵,从键盘上直接输入矩阵是最常用的数值矩阵创建方法。需要遵循以下几个基本原则。,矩阵每行的元素必须用空格或逗号分开;,在矩阵中,采用分号或回车表明每行的结束;,整个输入矩阵必须包含在方括号中。,Matlab,常用的基本命令,(,2,)从外部数据文件调入矩阵元素,用,Matlab,生成的矩阵存储成二进制文件或包含数值数据的文本文件可以生成矩阵。文本文件中,数据必须排成一个数据表,数据之间用空格分隔,文件的每行包含矩阵的一行,并且每行的元素个数必须相等。,(,3,)利用用户文件创建的,M,文件矩阵,用户可以使用,M,文件生成自己的矩阵。,M,文件是一种包含,Matlab,代码的文本文件,这种文件的扩展名为,.m,,所包含的内容就是把在,Matlab,的命令行上输入的矩阵生成命令存入一个文件。,Matlab,常用的基本命令,3.,向量的生成,Matlab,可以采用多种不同的方式生成向量。,(,1,)利用冒号“:”生成向量,冒号“:”是,Matlab,中常用算子之一,不仅可以作数组下标,对数组元素进行引用、增加和删除,还可以用来生成向量。,Matlab,常用的基本命令,冒号“:”使用下列格式生成均匀等分向量:,x=,j:k,如果,jk,,则生成空向量,x=,;,x=,j:i:k,如果,i0,且,jk,或,ik,,则生成向量,x=,j,j+i,j+2i,k,;,如果,i0,且,jk,或,i0,且,jk,,则生成空向量,x=,;,2.3,图像处理工具箱简介,Matlab,是一种基于向量(数组)而不是标量的高级程序语言,因而,Matlab,从本质上就提供了对图像的支持。从图像的数字化过程可以知道,数字图像实际上就是一组有序离散的数据,使用,Matlab,可以对这些离散数据形成的矩阵进行一次性的处理。,1.,图像采集与导出,图像采集工具箱提供了大量的函数用于采集图像和视频信号。该工具箱支持的硬件设备包括工业标准的,PC,图像采集卡和相应的设备。,Matlab,的,Image Processing Toolbox,支持多种图像数据格式,这些图像文件格式主要有,JPEG,、,TIFF,、,HDF,、,HDF.EOS,和,DICOM,。同时,,Matlab,中还可以导入,/,导出,AVI,格式的数据文件,支持其他工业标准的数据文件格式。,2.,图像分析与增强,Matlab,的,Image Processing Toolbox,提供了大量的用于图像处理的函数,利用这些函数,可以分析图像数据,获取图像细节信息,并且设计相应的滤波算子,滤除图像数据所包含的噪声。,图像处理工具箱还提供了,Radon,变换(来重构图像,而离散余弦变换(,JPEG,图像压缩核心算法)可以作为实现新的压缩算法的核心。,在图像处理工具箱中还包含了众多数学形态学函数,这些函数可以用于处理灰度图像或者二值图像,可以快速实现边缘检测、图像去噪、骨架提取和粒度测定等算法。此外还包含一些专用的数学形态学函数,例如填充处理、峰值检测、分水岭分割等,且所有的数学形态学函数都可以处理多维图像数据。,3.,图像处理,图像处理工具箱提供了很多高层次的图像处理函数,这些函数包括排列、变换和锐化等操作。同样,利用这些函数能够完成裁减图像和尺寸变换等操作。,4.,数据可视化,Matlab,本身就是功能强大的数据可视化工具,可以通过各种形式显示分析数据,例如灰度直方图、等高线、蒙太奇混合、像素分析、图层变换及材质贴图等。利用可视化的图形,不仅能够评估图形图像的特性,还能够分析图像中的色彩分布情况。,5.,算法开发与发布,Matlab,允许用户自己开发算法,并且将其封装起来,不断扩展到工具箱函数中。此外,也可以在支持,Matlab,的平台上共享用户所开发的算法,并将算法同已有的,C,代码结合在一起,完成算法的发布工作。除此之外,,Matlab,还可以将用户开发的,GUI,、图像处理算法等应用程序发布为,C,或者,C+,源代码,进而编译生产,COM,组件或者,Java,接口,将,Matlab,开发的算法同其他开发工具结合起来。,2.4,Matlab,中的图像类型及类型转换,2.4.1,图像和图像数据,Matlab,中的数字图像是由一个或多个矩阵表示的。这意味着,Matlab,强大的矩阵运算功能完全可以应用于图像,那些适用于矩阵运算的语法对,Matlab,中的数字图像同样适用。,2.4.1,图像和图像数据,在缺省的情况下,,Matlab,将图像中的数据存储为双精度类型(,double,),即,64bit,浮点数。这种存储方法的优点在于,使用中不需要数据类型的转换,因为几乎所有的,Matlab,及其工具箱函数都可以使用,double,作为参数类型。然而对于图像存储来说,用,64bit,表示图像数据会导致巨大的存储量,所以,Matlab,还支持图像数据的另一种类型无符号整型(,uint8,),即图像矩阵中的每个数据占用,1,个字节。,Matlab,及工具箱中的大多数操作及函数(比如最基本的矩阵相加)都不支持,uint8,类型。,uint8,的优势仅在于节省存储空间,在涉及运算时将其转换成,double,型。,2.4.2,图像处理工具箱所支持的图像类型,图像处理工具箱支持,4,种图像类型,它们是:,真彩色图像(,RGB images,),索引色图像(,index images,),灰度图像(,intensity images,),二值图像(,binary images,),此外,,Matlab,还支持由多帧图像组成的图像序列。,1.,真彩色图像,真彩色图像用,R,、,G,、,B 3,个分量表示,1,个像素的颜色,所以对,1,个尺寸为,mn,的真彩色图像来说,其数据结构就是一个,mn3,的多维数组。如果要读取图像中,(100,,,50),处的像素值,可以查看三元组,(100,50,13).,真彩色图像可用双精度存储,此时亮度值的范围是,0,1,。比较符合习惯的存储方法是用无符号整型存储,亮度值的范围为,0,255,。,图,2.2,真彩色图像的结构,2.,索引色图像,Matlab,中的索引色图像包含,2,个结构,一个是调色板;另外一个是图像数据矩阵。调色板是一个有,3,列和若干行的色彩映像矩阵,矩阵的每行都代表一种色彩,通过,3,个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定的颜色。,需要注意的是,Matlab,中的调色板的色彩强度是,0,1,中的浮点数,,0,代表最暗,,1,代表最亮。,图,2.3,索引色图像的结构,3.,灰度图像,存储灰度图像只需要一个数据矩阵,数据类型可以是,double,,值域为,0,1,,也可以是,uint8,,值域,0,255,。,4.,二值图像,与灰度图像相同,二值图像只需一个数据矩阵,每个像素只有,2,个灰度值。二值图像可以采用,uint8,或,double,类型存储,工具箱中以二值图像作为返回结果的函数都使用,uint8,类型。,图,2.5,是一幅二值图像的结构,图,2.5,二值图像的结构,5.,图像序列,图像处理工具箱支持将多帧图像连接成图像序列。图像序列是一个四维的数组,图像帧的序号在图像的长、宽、颜色深度之后构成第四维。比如一个包含了,5,幅,400300,真彩色图像的序列,其大小为,4003005,。,要将分散的图像合并成图像序列可以使用,Matlab,的,cat,函数,前提是各图像的尺寸必须相同,如果是索引色图像,调色板也必须是一样的。,图像序列,比如要将,A1,、,A2,、,A3,、,A4,、,A5,五幅图像合并成一个图像序列,A,,,Matlab,语句为,A=cat(4,,,A1,,,A2,,,A3,,,A4,,,A5),也可以从图像序列中抽出,1,帧,比如语句,FRM3=MULTI(,:、:、:、,3),是将序列,MULTI,中的第,3,帧抽出来赋给矩阵,FRM3,。,2.4.3,Matlab,图像类型转换,工具箱中提供了许多图像类型转换的函数,从这些函数的名称就可以看出它们的功能。,1.dither,函数,功能:图像抖动。,格式:,X=dither(I1,,,map),bw,=dither(I2),2.gray2ind,函数,功能:将灰度图像转换成索引图像。,格式:,X,map=gray2ind(I,n),Matlab,图像类型转换,3.,grayslice,函数,功能:通过设定阈值将灰度图像转换成索引色图像。,格式:,X=,grayslice(I,n),X=,grayslice(I,v),4.imb2bw,函数,功能:将灰度图像、索引色图像和真彩色图像转化成二值图像。,格式:,BW=im2bw(I,level),BW=im2bw(X,map,level),BW=im2bw(RGB,level),Matlab,图像类型转换,5.ind2gray,函数,功能:将索引图像转换成灰度图像。,格式:,I=Ind2gray(X,map),6.ind2rgb,函数,功能:将索引色图像转换成真彩色图像。,格式:,RGB=ind2rgb(X,map),Matlab,图像类型转换,7.mat2gray,函数,功能:将一个数据矩阵转换成一幅灰度图像。,格式:,I=mat2gray(A,amin,amax,),I=mat2gray(A),8.rgb2gray,函数,功能:将一幅真彩色图像转换成灰度图像。,格式:,I=rgb2gray(RGB),newmap,=rgb2gray(map),9.rgb2ind,函数,功能:将真彩色图像转换成索引色图像。,格式:,RGB=rgb2ind(X,map),2.4.4,图像文件的读写和查询,Matlab,为用户提供了特殊的函数,用于从图像格式的文件中读写图像数据。其中,读取图形文件格式的图像需要用,imread,函数,写入一个图形文件格式的图像需要调用,imwrite,函数;而获取图形文件格式的图像的信息需要调用,imfinfo,ind2rgb,函数,以,Mat,文件加载或保存矩阵数据用,load,save,函数,显示加载到,Matlab,中的图像用,image,imagesc,。,图像文件的读写和查询,1.,图形图像文件的读取,利用函数,imread,可以完成图形图像文件的读取操作,其语法如下:,A=,imread(filename,fmt,),X,map,=,imread(filename,fmt,),=,imread(filename,),=,imread(filename,idx,),(只对,TIF,格式的文件),=,imread(filename,ref),(只对,HDF,格式的文件),1.,图形图像文件的读取,imread,函数可以从任何,Matlab,支持的图形文件中以特定的位宽读取图像。通常情况下,读取的大多数图像均为,8bit,。当这些图像加载到内存中时,,Matlab,就将其存储在类,uint8,中。此外,,Matlab,还支持,16bit,的,PNG,和,TIF,图像,所以,当读取这类文件时,,Matlab,就将其存储在类,uint16,中。,需要注意的是,对于索引图像来说,即使图像阵列的本身为类,uint8,或类,uint16,,,imread,函数仍然将颜色映像表读取并存储到一个双精度的浮点类型的阵列中。,2.,图形图像文件的写入(保存),利用,imwrite,函数可以完成图形图像文件的读取操作,其语法如下,imwrite(A,filename,fmt,),imwrite(X,map,filename,fmt,),imwrite,(.,filename),imwrite,(.,parameter,value),当利用,imwrite,函数保存图像时,,Matlab,缺省的保存方式就是将其简化到,uint8,的数据格式。在,Matlab,中使用的许多图像都是,8bit,,并且大多数的图像文件并不需要双精度的浮点数据。与读取图形图像文件类似,,Matlab,就将其存储在,16bit,的数据中。,3.,图形图像文件信息的查询,Matlab,提供了,imfinfo,函数用于从图像文件中查询其信息。所获取的信息依文件类型的不同而不同。但是不管哪种类型的图像文件,至少包含下面的内容。,文件名。,(,如果该文件不在当前路径下,还包含该文件的完整路径。,),文件格式。,文件格式的版本号。文件修改时间。,文件的字节大小。图像的宽度(像素)。,图像的长度(像素)。每个像素的位数。,图像类型。即该图像是,RGB(,真彩,),图像、灰度图像还是索引图像。,2.4.5,图像文件的显示,在,Matlab,7.0,中,显示一幅图像可以用,image,函数,这个函数将创建一个图形对象句柄,语法格式为:,image(C,),image(x,y,C),image(PropertyName,Property Value,image(PropertyName,Propety,Value,),handle=image(),其中,,x,y,分别表示图像显示位置的左上角坐标,,C,表示所需显示的图像。,imagesc,函数与,image,函数类似,但是它可以自动标度输入数据。,图,2.10,示出了用,image,函数显示的一幅小丑图像,图像的左上角坐标为(,10,,,10,)。,图像文件的显示,load clown,image(10,10,X,colormap(map,),图像文件的显示,Matlab,7.0,图像处理工具箱提供了一个高级的图像显示函数,imshow,。其语法格式为,imshow(I,n),imshow(I,low high,),imshow(BW,),imshow(X,map),imshow(RGB,),imshow(,display_option,),imshow(x,y,A,),imshow,filename,h=,imshow,(),图像文件的显示,第一和第二种调用格式用来显示灰度图像,其中,n,为灰度级数目,缺省值为,256,。,low high,为图像数据的值域。调用,imshow,函数显示图像,如,图,2.11,所示。,I=,imread(rice.png,),J=filter2(,1 2;-1-2,I),%,用模板,1 2;-1-2,对图像滤波,imshow(I,),figure,imshow(J,),图,2.11,用,imshow,显示滤波前后的图像,2.4.6,不同类型的图像显示方法,1.,索引图像及其显示,索引图像包括一个数据矩阵,X,,一个颜色映像矩阵,map,。其中,map,是一个,m3,的数据矩阵,其每个元素的值均为,0,U,之间双精度浮点型数据。,map,矩阵的每一行分别表示红色、绿色和蓝色的颜色值。在,Matlab,7.0,中,索引图像是从像素值到颜色映像表值的“直接映射”。,像素颜色内数据矩阵,X,作为索引值向矩阵,map,进行索引。例如,值,1,指向矩阵,map,中的第,1,行,,2,指向第,2,行,以此类推。,1.,索引图像及其显示,可以用下面的代码显示一幅索引图像:,image(X,),colormap(map,),颜色映像表通常和索引图像保存在一起。当用户调用函数,imread,时,,Matlab,7.0,自动同时加载颜色映像表与图像。,使用,imshow,命令显示索引图像,则需要指定图像矩阵和调色板:,imshow(X,map),索引图像及其显示,对于,X,的每个像素,,imshow,显示存储在,map,相应行中的颜色。图像矩阵中数值和调色板之间的关系依赖于图像矩阵的类型(,double,、,uint8,或,uint16,)。,如果图像矩阵是双精度类型的,那么数值,1,将指向调色板的第,1,行,数值,2,指向第,2,行,以此类推。如果图像矩阵是,uint8,或,uint16,型,则会有一个偏移量;数据,0,指向调色板的第一行,数值,1,指向第,2,行,以此类推。,偏移量是由图像对象自动掌握的,不能使用句柄图形属性进行控制。,索引图像及其显示,索引图像的每一个像素都直接映射为调色板的一个入口。如果调色板包含的颜色数目多于图像颜色数目,那么额外的颜色都将被忽略;如果调色板包含的颜色数目少于图像颜色数目,则超出调色板颜色范围的图像像素都将被设置为调色板中的最后一个颜色。,例如,如果一幅包含,256,色的,uint8,索引图像,使用一个仅有,16,色的调色板显示,则所有数值大于或等于,15,的像素都将被显示为调色板的最后一个颜色。,索引图像及其显示,显示一幅索引图像时,,imshow,函数将设置以下句柄图形属性控制颜色显示方式。,图像,CData,属性将设置为,X,中的数据。,图像,CDataMapping,属性将设置为,direct,(并使坐标轴的,CLim,属性无效)。,图形窗口的,Colormap,属性将被设置为,map,中的数据。,图像的,Map,属性设置为,map,中的数据。,2.,灰度图像及其显示,在,Matlab,7.0,中,灰度图像即,Windows,下常说的灰度图像。一幅灰度图像是一个数据矩阵,I,,其中数据均代表了在一定范围内的颜色灰度值。,Matlab,7.0,把灰度图像用数据矩阵的形式进行存储,每个元素则表示了图像中的每个元素。矩阵元素可以是,doudle,、,uint8,或,uint16,的整数类型。,多数情况下,灰度图像很少和颜色映像表一起保存,但在显示灰度图像时,,Matlab,7.0,仍然在后台使用系统预定义的缺省灰度颜色映像表。,灰度图像及其显示,Matlab,7.0,中,要显示一幅灰度图像,可以调用函数,imshow,或,imagesc,(即,imagescale,,图像缩放函数)。,(,1,),imshow,函数显示灰度图像,灰度图像显示最基本的调用格式如下:,imshow(I,),imshow,函数通过将灰度值标度为灰度级调色板的索引来显示图像。如果,I,是,double,型,若像素值为,0.0,,则显示为黑色,,1.0,则显示为白色,,0.0,和,1.0,之间的像素值将显示为灰影。如果,I,为,uint16,类型,则像素值为,65535,将被显示为白色。,灰度图像及其显示,灰度图像与索引图像在使用,m3,大小的,RGB,调色板方面是相似的,正常情况下无需指定灰度图像的调色板,而,Matlab,7.0,使用一个灰度级系统调色板(,R=G=B,)来显示灰度图像。缺省情况下,,24bit,颜色系统中调色板包含,256,个灰度级,其他颜色系统则包括,64,或,32,个灰度级。,imshow,函数显示灰度图像的另一种调用格式是使用明确指定的灰度级数目。例如,以下语句将显示一幅,32,个灰度级的图像,I:,imshow(I,32),灰度图像及其显示,由于,Matlab,7.0,自动对灰度图像进行标度以适合调色板的范围,因而可以使用自定义大小的调色板。某些情况下,还可能将一些超出数据惯例范围(对于,double,型数组为,0,1,对于,uint8,型数组为,0,,,255,,对于,uint16,型数组为,0,,,65535,)的数据显示为一幅灰度图像。,imshow,函数通过以下图形属性控制灰度图像的显示方式。,图像的,CData,属性设置为,I,中的数据。,图像的,CDataMapping,属性设置为,scaled,。,如果图像矩阵是,double,类型,则坐标轴的,CLim,属性设置为,0,,,1,;如果是,uint8,类型的,则坐标轴设置为,0,,,65535,。,图形窗口的,Colormap,属性设置为数据范围从黑到白的灰度级调色板。,灰度图像及其显示,(,2,),imagesc,函数显示灰度图像,下面的代码是用具有两个输入参数的,imagesc,函数显示一幅灰度图像。,imagese(1,0 1,);,colormap(gray,);,imagesc,函数中的第二个参数确定灰度范围。灰度范围中的第一个值(通常是,0,),对应于颜色映像表中的第一个值(颜色),第二个值(通常是,1,)则对应于颜色映像表中的最后一个值(颜色)。灰度范围中间的值则线性对应于颜色映像表中剩余的值(颜色)。,当然也可以使用其他颜色映像表。,灰度图像及其显示,例如,用系统缺省的灰色显示一幅灰度图像,显示结果如,图,所示,程序代码如下:,load clown,clims,=,10 60,;,imagesc(X,clims,),colormap(gray,),而使用浅蓝绿色显示该图像则是另外一番效果,如图,2.14,所示,程序代码如下:,load clown,clims,=,10 60,;,imagesc(X,clims,),colormap(winter,),灰度图像及其显示,图,2.13,系统缺省灰色强度图像 图,2.14,浅蓝绿色颜色映,射表显示的图像效果,RGB,图像及其显示,RGB,图像有,8,位和,6,位两种数据格式,,8,位,RGB,图像的颜色数据是,0,,,255,范围之内的整数,而不是,0,,,1,之间的浮点值。所以,在,8,位,RGB,图像中,颜色值为(,255,,,255,,,255,)的像素点显示为白色。不管,RGB,图像的类型是,double,浮点型,还是,uint8,或,uint16,无符号整数型,,Matlab,都能通过,image,函数将其正确显示出来。例如:,image(RGB,),RGB,图像及其显示,用,imshow,函数显示,RGB,图像基本的调用格式如下:,imshow(RGB,),参数,RGB,是一个,mn3,的数组。对于,RGB,中的每一个像素(,r,c,),,imshow,显示数值(,r,c,13,)所描述的颜色。每个屏幕像素使用,24,位颜色系统能够直接显示真彩图像,系统给每个像素的红、绿、蓝颜色分量分配,8,位(,256,级)。,RGB,图像及其显示,imshow,函数可以设置句柄图像属性控制颜色的显示方式。,图像的,CData,属性设置为,RGB,中的三维数值,,Matlab,将数组理解为真彩数据。,忽略图像的,CDataMapping,属性。,忽略坐标轴的,CLim,属性。,忽略图形窗口,Colormap,属性。,4.,二进制图像及其显示,显示二进制图像,可用下面方法:,BW=,imread(circles.png,);,imshow(BW,);,显示效果如,图,2.15,(,a,),所示。,在,Matlab,7.0,中,二进制图像是一个逻辑类,仅包括,0,和,1,两个数值,像素,0,显示为黑色,像素,1,显示为白色。,在显示时,也可以通过,NOT(),命令,对二进制图像进行取反,使数值,0,显示为白色,,1,显示为黑色。例如使用,imshow(BW,),命令形式,显示的结果如,图,2.15,(,b,),所示。,图,2.15,二进制图像显示效果,二进制图像及其显示,imshow,通过以下设置控制图像显示颜色的属性。,图像的,CData,属性设置为,BW,中的数值。,图像的,CDataMapping,属性设置为,direct,。,坐标轴的,CLim,属性设置为,0,,,1,;,图形窗口的,Colormap,属性设置为一个数值范围从黑到白的灰度级调色板。,需要说明的是,以上图像属性设置是由,imshow,函数自动完成的,以上说明仅供了解。,5.,直接从磁盘显示图像,通常,在显示一幅图像前首先要调用,imread,函数装载图像,将数据存储为,Matlab,7.0,工作平台中的一个或多个变量。但是,如果不希望在显示图像之前装载图像,则可以使用以下命令格式直接进行图像文件的显示:,imshow filename,其中,,filename,为要显示的图像文件的文件名。,直接从磁盘显示图像,如果图像是多帧的,那么,imshow,将仅显示第一帧。但需要注意的是,在使用这种方式时,图像数据没有保存在,Matlab,7.0,工作平台。如果希望将图像装入工作平台中,则需使用,getimage,函数,从当前的句柄图形图像对象中获取图像数据,命令形式为,rgb,=,getimage,;,如果显示,rice.png,的图形窗口被激活,那么该语句就会将图像赋给变量,rgb,。,
展开阅读全文