《matlab数据可视化.ppt》由会员分享,可在线阅读,更多相关《matlab数据可视化.ppt(32页珍藏版)》请在三一办公上搜索。
1、Matlab程序设计,第五章 高级图形处理功能,Matlab程序设计,一、图形对象与句柄,句柄图形(Handle Graphics)是一种面象对象的绘图系统。该系统提供创建计算机图形所必需的各种软件。它所支持的指令,可直接创建线、文字、网线、面以及图形用户界面。上一章所介绍的各种MATLAB高层(High-level)图形指令(如plot,mesh)都是以句柄图形软件为基础写成的。也正是这个原因,句柄图形也被称为低层(Low-level)图形。,(一)句柄图形体系,Matlab程序设计,图形对象、对象句柄、属性,1、图形对象把用于数据可视化和界面制作的基本绘图要素称为句柄图形对象(Handle
2、 graphics object)。构成MATLAB句柄图形体系的有13个图形对象。每个图形对象可以被独立地操作。在MATLAB中生成的每个具体图形都由若干不同对象构成。每个具体图形不必包含全部对象,但每个图形必须具备根对象(根屏幕)和图形窗。,Matlab程序设计,Root,Figure,Matlab程序设计,2、对象句柄,每个具体对象都有一个“与生俱来、终生不变”的独特“身份(Identifier)”,即句柄(Handle)。句柄是存取图形对象唯一规范识别符。不同对象的句柄不可能重复和混淆。每个计算机,根对象只有一个,即屏幕。它的句柄总是数字0。而图形窗(Figure Windows)的句
3、柄总是正整数,它用来标识图形窗的序号。除以上两种对象外,其余对象的句柄则是双精度浮点数。注意:对根屏幕、图形窗对象来说,数字可直接作为调用对象的句柄。但不要企图通过直接输入浮点数,作为其他对象的句柄;这些对象的句柄只能由相关指令运作而得。,Matlab程序设计,对象属性,1、属性:所有对象都有一组定义和刻画其外貌和性状的属性。属性由两部分组成:属性名和属性值。在创建或修改属性的指令中,属性名和属性值总是成对出现。属性名是英文词组字符串。该英文词组每个单词的第一个字母大写,而单词间没有空格,例如LineStyle和ColorMap等。在指令中援引属性名时,为输入方便,MATLAB采取了两个措施:
4、不分字母大小写,都同样识别;只要不引起歧义,属性名不必写全。比如lines就代表LineStyle.不同的属性值将使对象具有不同的表现。,Matlab程序设计,2、缺省属性,在创建图形对象时,MATLAB并不需要对每个属性加以定义。若用户不对属性加以定义,MATLAB总会自动给对象的每个属性赋予“厂家定义(Factory-defined)”的属性值。若希望创建具有个性的图形,就需要通过指令对某些属性进行定义。属性值的这种定义方式称为“宗量”赋值方式。,Matlab程序设计,图形对象的操作,除根屏幕外,所有图形对象都由与之同名的指令创建。,Matlab程序设计,Matlab程序设计,对象句柄的获
5、取方法,要设置图形对象属性值,首先要知道该对象的句柄。基本方法从图形创建指令获得句柄追溯法获取图柄当前对象句柄的获取根据对象特性获取句柄根据对象“诨名”获取句柄,Matlab程序设计,1 从图形创建指令获得句柄,所有高层或低层指令都能通过以下格式产生句柄:H_GC=GraphicCommand()绘图同时给出句柄的调用指令H_GC。,Matlab程序设计,2 追溯法获取图柄,若一个对象的句柄已知,那么可用如下格式追溯获得其“父”或“子”的句柄:H_pa=get(H_known,Parent)获取H_known句柄对象之“父”的句柄。H_ch=get(H_known,Children)获取H_k
6、nown句柄对象之“子”的句柄。,Matlab程序设计,3 当前对象句柄的获取,MATLAB有如下三个专用获取图柄的指令:gcf返回当前图形窗口的句柄=get(0,CurrentFigure)gca返回当前轴的句柄=get(get(0,CurrentFigure),CurrentAxes)gco返回“被鼠标最近点击”的图形对象的句柄=get(get(0,CurrentFigure),CurrentObject)前两个是直接指令式;后一个必须与鼠标配合使用。,Matlab程序设计,4 根据对象特性获取句柄,利用对象特性搜索那对象句柄可以得到较高的搜索速度。,H=FINDOBJ(P1Name,P1
7、Value,.)返回在所有对象层中那些符合特定条件的对象的句柄值。,H=FINDOBJ(ObjectHandles,P1Name,P1Value,.)返回在ObjectHandles所对应的句柄对象及其子对象中那些符合条件的对象的句柄值。,H=FINDOBJ(ObjectHandles,flat,P1Name,P1Value,.)只返回在Objecthandles所对应的句柄对象中那些符合特定条件的句柄值。,Matlab程序设计,4 根据对象特性获取句柄,H=FINDOBJ返回根对象和其所有子对象的句柄值,H=FINDOBJ(ObjectHandles)返回ObjectHandels对应的句柄
8、对象及其所有子对象的句柄值,利用对象特性搜索那对象句柄可以得到较高的搜索速度。,Matlab程序设计,5 根据对象“诨名”获取句柄,可以通过Tag属性,给对象一个“诨名”。此后,就可以通过“诨名”获取该对象的句柄。设置“诨名”的两个方法:创建时赋名,如subplot(3,2,4),plot(x,y,Tag,A4);用set赋名,如subplot(3,2,4),h=plot(x,y),set(h,Tag,A4)据诨名获取对象句柄:如果屏幕上有多个图形窗,且有的窗又有多个子图,那么获取带“诨名”对象句柄的简便指令是:hax=fidobj(0,Tag,A4)。,Matlab程序设计,图形对象操作,C
9、=copyobj(H,P),1)H和P都是向量,2)H是向量,P是标量,3)P是向量,H是标量,Copyobj:复制图形对象及其子对象。,DELETE(H):删除图形对象,RESET(H):恢复图形对象所有属性值为默认值,position除外。,Matlab程序设计,对象属性的获取和设置,创建对象时设置属性H_GC=GraphicCommand(,PN,PV)利用“属性对”设置的绘图指令H_GC=GraphicCommand(,PS)利用“构架”进行属性设置的绘图指令get 和 set对象属性的缺省设置和查询属性查询和设置示例,Matlab程序设计,get 和 set,get(H)获取H句柄对
10、象所有属性的当前值get(H,PN)获取H句柄对象由PN所指定属性的当前值set(H)显示H句柄对象的所有可设置属性名和全部供选属性值set(H,PN)显示H句柄对象PN指定属性名的全部供选属性值set(H,PN,PV,)设置H句柄对象的PN属性名取PV属性值set(H,PS)利用构架数组设置H的属性值,Matlab程序设计,对象属性的缺省设置和查询,get(H,DefaultObjectTypeObjectProperty)获取缺省值set(H,DefaultObjectTypeObjectProperty,propertyValue)设置“用户定义”缺省值set(H,DefaultObje
11、ctTypeObjectProperty,remove)删除“用户定义”缺省值,Matlab程序设计,三维图形的精细控制,视点控制色彩控制照明和材质处理,Matlab程序设计,(一)视点控制,改变观察点是获得较好三维视觉效果的一个重要途径。view(az,el)通过方位角、俯视角设置视点view(vx,vy,vz)通过直角坐标设置视点view(3)/view(2)az,el=view 返回当前的方位角和仰角说明:指令中,az是方位角(Azimuth),el是俯视角(Elevation)。它们的单位是“度”。vx,vy,vz是视点的直角坐标。若绘制三维图形时,不使用 view指令,那么MATLA
12、B将使用缺省的视点设置:az=-37.5,el=30。当az=0,el=90时,图形将以习惯的平面直角坐标表现。MATLAB图形窗可交互式调节视点。为获得最佳视觉效果,用户先通过鼠标操作调节视点,然后再用指令view把相应的试点加以固定。,Matlab程序设计,(二)色彩控制,用色风格colordef浓淡处理shading 透明度控制 alpha,Matlab程序设计,用色风格,colordef options 对根屏幕上的所有子对象设置缺省值colordef(fig,options)对图形窗fig上的所有子对象设置缺省值h=colordef(new,options)对新图形窗上的所有子对象设
13、置缺省值,WhiteBlacknone,Matlab程序设计,whitebg 使当前图形窗上“轴”的背景色在黑白间切换whitebg(fig)使指定图形窗上“轴”的背景色在黑白间切换whitebg(C)使当前图形窗上“轴”的背景色变为指定的颜色说明:MATLAB默认的“轴背景色”为white。Options的取值及缺省设置见下表:,用色风格,Matlab程序设计,Matlab程序设计,透明度控制 alpha,alpha(v)对面、块、象三种图形对象的透明度加以控制说明:v可以取0到1之间的数值。1表示完全不透明,0表示完全透明。本指令对mesh,surf,slice等高层指令都适用。,Matl
14、ab程序设计,(三)照明和材质处理,灯光light照明模式lighting控制光效果的材质指令material,Matlab程序设计,灯光light,light(color,option1,style,option2,position,option3)灯光设置说明:在该指令使用前,图形采用的是等强度各处相等的漫射光。一旦该指令被执行,虽然光源本身并不出现,但图形上“轴”、“面”等子对象所有与光有关的属性(如背景光、边缘光)都被激活。假如该指令不包含任何输入宗量,则采用缺省设置:白光、无穷远、穿过1,0,1射向坐标原点。任何一个输入宗量对都可缺省,此时采用缺省设置。option1可采用RGB三元
15、组或相应的色彩字符,如1 0 0或r都代表红光。option2有两个取值:infinite和local。前者表示无穷远光,后者为近光。option3总为直角坐标的三元组形式。对远光,它表示光线穿过该点射向原点;对近光,它表示光源所在位置。,Matlab程序设计,照明模式lighting,lighting options设置照明模式说明:该指令只有在light指令执行后才起作用。options有以下四种取值:flat射入光均匀洒落在图象对象的每个面上,主要与facted配用。它是缺省模式。gouraund先对顶点颜色插补,再对顶点勾画的面色进行插补。用于曲面表现。phong对顶点处法线插值,再计
16、算个像素的反光。表现效果最好,但费时较多。none使所有光源关闭。,Matlab程序设计,控制光效果的材质指令material,material options使用预定义反射模式说明:为用户使用方便,MATLAB提供了四种预定义表面反射模式,即的options取值:shiny使对象比较明亮。镜反射份额较大,反射光颜色仅取决于光源颜色。dull使对象比较暗淡。漫反射份额较大,没有镜面亮点,反射光颜色仅取决于光源颜色。使对象带金属光泽。镜反射份额很大,背景光metal和漫射光份额很小。反射光源和图形表面两者的颜色。该模式为缺省模式。default返回缺省设置模式,Matlab程序设计,三、其他图形处理技术,图像在MATLAB中,图像通常由数据矩阵和色图矩阵组成。根据图像着色方法的不同,把图像分为三类:变址图像(索引图)(Indexed image)强度图像(Intensity image)真彩或RGB图像(truecolor or RGB image)如果事先不知道图像的类别,那么就应该首先用imfinfo指令获取那图像的信息,然后再进行读操作。图像着色类型不同,其显示和写入指令也不同。图形的输出,