Matlab颜色的使用

上传人:lis****211 文档编号:133392866 上传时间:2022-08-10 格式:DOCX 页数:20 大小:126.45KB
收藏 版权申诉 举报 下载
Matlab颜色的使用_第1页
第1页 / 共20页
Matlab颜色的使用_第2页
第2页 / 共20页
Matlab颜色的使用_第3页
第3页 / 共20页
资源描述:

《Matlab颜色的使用》由会员分享,可在线阅读,更多相关《Matlab颜色的使用(20页珍藏版)》请在装配图网上搜索。

1、第十九章颜色的使用MATLAB提供了许多在二维和三维空间内显示可视信息的工具。例如,看一条sin函数的曲 线图就会比一堆数据提供更多的信息。这种用图表和图形来表示数据的技术叫做数据可视化。 MATLAB不仅是一个强大的计算工具,并且在以引人入胜和直观方式可视地表示数据方面也很 有特色。但是很多时候,一个简单的二维或三维图形不能一次显示出想要提供的全部信息。这时, 颜色可以对图形提供一个附加的维数。前面章节讨论的许多绘图函数都可以接受一个可用的颜 色参量,来增加这附加的维数。本章的讨论以研究颜色映象开始:如何使用、显示、修改和如何创建用户自己的颜色映象。 然后,阐述在一个图形窗口中仿真多个颜色映

2、象的技术或只使用颜色映象的一部分的技术。最 后,讨论照明模型并提供例子。19.1颜色映象理解MATLAB有一个叫颜色映象的数据结构来代表颜色值。颜色映象定义为一个有三列和若干 行的矩阵。利用0到1之间的数,矩阵的每一行都代表了一种色彩。任一行的数字都指定了一 个RGB值,即红、黄、蓝三种颜色的强度,形成一种特定的颜色。一些有代表性的RGB值在 表19.1中给出。表 19.1简单颜色Red (红)Green (绿)Blue (蓝)颜色000黑八、111白100红010绿001蓝110黄101洋红011青蓝2/301天蓝11/20橘黄,500深红,5,5,5灰色有十个MATLAB函数产生预定的颜色

3、映象。见表19.2表 19.2标准颜色映象hsv色彩饱和值(以红色开始和结束)hot从黑到红到黄到白cool青蓝和洋红的色度pink粉红的彩色度gray线性灰度bone带一点蓝色的灰度jethsv的一种变形(以蓝色开始和结束)copper线性铜色度prim三棱镜。交替为红色、橘黄色、黄色、绿色和天蓝色flag交替为红色、白色、蓝色和黑色按缺省,上面所列的各个颜色映象产生一个64X3的矩阵,指定了 64种颜色RGB的描述。 这些函数都接受一个参量来指定所产生矩阵的行数。比如hot(m)产生一个mX3的矩阵,它包 含的RGB颜色值的范围从黑经过红、橘红和黄,到白。大多数计算机在一个8位的硬件查色表

4、中一次可以显示256种颜色,当然有些计算机的显 示卡可以同时显示更多的颜色。这就意味着在不同的图中,一般一次可以用三或四个64X3的 颜色映象。如果使用了更多的颜色映象输入项,计算机必须经常在它的硬件查色表中调出输入 项。比如,当在画MATLAB图形时背景图案发生了变化,就是发生了这种情况。所以,除非计 算机有一次显示更多种颜色的显示卡,最好任何一次所用的颜色映象输入项数都小于256。19.2颜色映象使用语句colormap(M)将矩阵M作为当前图形窗口所用的颜色映象。例如,colormap ( cool) 装入了一个有64个输入项的cool颜色映象。colormap default装入了缺省

5、的颜色映象(hsv)。函数plot、plot3、contour和contour3不使用颜色映象,它们使用列在plot颜色和线形表 中的颜色。而大多数其它绘图函数,比如mesh、surf、fill、pcolor和它们的各种变形函数,使 用当前的颜色映象。接受颜色参量的绘图函数中的颜色参量通常采用以下三种形式之一:(1)字符串。代表plot 颜色或线型表中的一种颜色,比如, r 代表红色;(2)三个输入的行向量。它代表一个单独 的RGB值,比如.25 .50 .75 ; (3)矩阵。如果颜色参量是一个矩阵,其元素作了调整, 并把它们用作当前颜色映象的下标。最后一种形式会在以后作更多讨论。19.3颜

6、色映象显示可以用多种途径来显示一个颜色映象。其中一个方法是观察颜色映象矩阵的元素。 hot(8)ans =0.33330.66671.00000000000.33330.66671.00001.00001.00001.00001.00001.00000.50001.00001.00001.0000上面的数据显示出第一行是1/3红色,而最后一行是白色。另外,函数pcolor可以用来显 示一个颜色映象。例如: n=16; colormap(jet(n) pcolor(1:n+1;1:n+1 ) title( Using Pcolor to Display a Color Map )输出见图19.1

7、.图19.1用伪彩色来显示颜色映象因为上面这一段程序很有用处,它已经装入精通MATLAB工具箱中的函数mmshow中。 help mmshowMMSHOW PCOLOR Colormap DisplayMMSHOW uses pccolor to display the current colormap.MMSHOW(MAP) displays the colormap MAP.MMSHOW(MAP(N) displays the colormap MAP having N elements.Examples:MMSHOW(hot)MMSHOW(pink(30)帮助信息:MMSHOW显示PCO

8、LOR颜色映象MMSHOW 使用pcolor来显示当前颜色映象MMSHOW(MAP)显示MAP颜色映象MMSHOW(MAP(N)显示一个有N个元素的MAP颜色映象例子:MMSHOW(hot)MMSHOW(pink(30)函数mmshow取和colormap同样的输入参量,但在这种情况下它用自己的伪彩色显示而 不是把颜色映象施加到当前图形。另一种途径是使用MATLAB的函数rgbplot,它可以把颜色映象的各列分别画成红、绿和蓝 色。例如: rgbplot(hot)输出见图19.2.图19.2用红、绿和蓝色画颜色映象图中显示红色分量首先增加,然后是绿色,最后是蓝色。rgbplot (gray)表

9、示所有三列数 据均匀线性地增加(三条线重叠)。最后,函数colorbar在当前的图形窗口中增加水平或垂直的颜色标尺以显示当前坐标轴的 颜色映象。colorbar( horiz )在当前的图形下面放一个水平的颜色条。colorbar( vert )在 当前的图形右边放一个垂直的颜色条。对无参量的colorbar,如果当前没有颜色条就加一个垂 直的颜色条,或者更新现有的颜色条。下面的例子就演示了 colorbar的用法。 x,y,z=peaks; mesh(x,y,z); colormap(hsv) axis(-3 3 -3 3 -6 8) colorbar输出见图19.3.图19.3使用颜色条1

10、9.4颜色映象的建立和修改颜色映象就是矩阵,意味着你可以象其它数组那样对它们进行操作。函数brighten就利用 这一点通过调整一个给定的颜色映象来增加或减少暗色的强度。brighten(n)( 01=1)使当前颜 色映象变亮;而brighten(n)( -1=n0)使它变暗。brighten(n)后加一个brighten(-n)使颜色映 象恢复原来状态。newmap=brighten(n)命令创建一个比当前颜色映象更暗或者更亮的新的颜色 映象,而并不改变当前的颜色映象。命令newmap=brighten(cmap,n)对指定的颜色映象创建一 个已调整过的式样,而不影响当前的颜色映象或指定的颜

11、色映象cmap。可以通过生成mX3的矩阵mamap来建立用户自己的颜色映象,并用colormap(mymap) 来安装它。颜色映象矩阵的每一个值都必须在0和1之间。如果企图用大于或小于3列的矩阵 或者包含着比0小比1大的任意值,函数colormap会提示一个错误然后退出。也可以在算术上来组合颜色映象,虽然结果有时是不可预料的。比如,一个叫pink的颜色 映象仅仅是: pinkmap=squr(2/3*gray+1/3*hot);只当所有元素都在0与1之间时,才能保证结果是一个有效的颜色映象。精通MATLABX 具箱中包含了一个名叫rainbow的颜色映象,它把可视范围扩展到整个颜色映象。函数r

12、ainbow 的在线帮助为: help rainbowRAINBOW Colormap varient to HSV.RAINBOW(M) Rainbow Colormap with M entries.Red-Orange-Yellow-Green-Blue-VioletRAINBOW by itself is the same length as the current colormap.Apply using :colormap(rainbow)帮助信息:RAINBOW HSV颜色映象的变形RAINBOW(M)有M个入口项的RAINBOW颜色映象红一橘黄一黄一绿一蓝一天蓝RAINBOW本

13、身和当前颜色映象的长度相同应用:colormap(rainbow)精通MATLAB工具箱中还包含了一个名叫mmap的函数,它可以根据你所提供的颜色建立 一个单色(比如粉红、灰色或铜黄色)的颜色映象。函数mmap的在线帮助是: help mmapMMAP Single Color Colormap.MMAP(C,M) makes a colormap of length M starting with the basic colorspec C.The mapchanges from dark to light.MMAP(C) is the same length as current colo

14、rmap.Examples:mmap( y ) is a yellow colormap.mmap(.49 1 .83) is an aquamarine colormap.mmap( c ,20) is a cyan colormap having length 20.帮助信息:MMAP 单色颜色映象MMAP(C,M)制作一个以颜色C为基色的长度为M的颜色映象。该表的颜色从暗到明变 化。MMAP(C) 颜色映象的长度和当前颜色映象相同例子:mmap( y )是一个黄色颜色映象mmap(.49 1 .83)是一个水色的颜色映象mmap( c ,20)是一个长度为20的青蓝色的颜色映象应用:co

15、lormap(mmap(c,m)一个颜色映象定义了用于绘制图形的调色板。一个缺省的颜色映象允许对数据使用64种不 同的RGB值。MATLAB使用函数cxis来决定哪一个数据值映射到颜色映象中输入项。通常,颜色映象进行过调节,把数据从最小扩展到最大,也就是说整个颜色映象都用于绘 图。有时也许想改变颜色使用的方法。函数caxis代表颜色轴,因为颜色增加了另一个维数,它 允许对数据范围的一个子集使用整个颜色映象或者对数据的整个集合只使用当前颜色映象的一 部分。cmin,cmax=caxis返回映射到颜色映象中第一和最后输入项的最小和最大的数据。它们通 常被设成数据的最小值和最大值。比如,函数mesh

16、(peaks)会画出函数peaks的网格图,并把 颜色轴caxis设为-6.5466,8.0752,即Z的最小值和最大值。这些值之间的数据点,使用从颜 色映象中经插值得到的颜色。caxis(cmin,cmax)对cmin和cmax范围区内的数据使用整个颜色映象。比cmax大的 数据点用与cmax值相关的颜色绘图,比cmin小的数据点的颜色用与cmin值相关的颜色绘图。 如果cmin小于min(data)和/或cmax大于max(data),那么与cmin和/或cmax点相关的颜色将 永远用不到。也就是说,只用到和数据相关的那一部分颜色映象。caxis( auto )设置cmin和 cmax的缺

17、省值。由于下面的例子很难在书中清晰区分灰度,运行脚本M文件mmcaxisd.m可显示所包含的 一系列更多的例子。缺省的颜色范围由下例说明: pcolor(1:17;1:17 ),colormap(hsv(8) title( Default Color Range ) caxis( auto ) colorbar caxisans =117输出见图19.4.图19.4缺省的颜色范围可见对整个数据集合,当前颜色映象使用了所有8种颜色。每种颜色有两条。如果颜色被 映射到从-3到23的数据,那么,图中只用到五种颜色。这可以通过下面的命令实现: title( Extended Color Range )

18、 caxis(-3,23) % extended the color range colorbar % redraw the color scale输出见图19.5.图19.5扩展的颜色范围如果颜色映射到从5到12的值,会用到所有的颜色。但是,比5小的数据和比12大的数据 分别映射到与数据值5和12相关的颜色。这可以通过下面的命令产生: title( Restricted Color Range ) caxis(5,12) % resstrict the color range colorbar % redraw the color scale输出见图19.6.图19.6受限的颜色范围19.5

19、图形中使用一个以上的颜色映象有时,在一幅图的不同部分使用不同的颜色是很有作用的。由于颜色映象是图形窗口本身 的一个属性,在任意一个图形窗口中,只能用一个颜色映象。但是,可以创建自己的颜色映象 来达到想要的效果。例如,精通MATLAB工具箱中含有脚本M文件mmcmapd.m ,它执行下述 操作。 figure % create a figure window mymap=rainbow(32);copper(32); % stack two color maps into one colormap(mymap) % install it mesh(peaks+8);view(0,0); % cr

20、eate two sample polots hold on ;mesh(peaks-8); colorbar % and add a color scale title( Merging two colormaps ) hold off输出见图19.7.图19.7合并两个颜色映象19.6用颜色描述第四维一些函数,比如mesh和serf,除非给出颜色参量,颜色将沿z轴数据变化。比如,surf(X, Y, Z)等效于surf(X,Y,Z,Z)。将颜色施加于z轴能够产生色彩漂亮的图画,但由于z 轴已经存在,它并不提供新的信息。为更好的利用颜色,建议用颜色来描述不受三个轴影响的 数据的某些属性。为此

21、需要赋给三维作图函数的颜色参量不同的数据。如果作图函数的颜色参量是一个向量或矩阵,那么就用作颜色映象的下标。这个参量可以 是任何实向量或与其参量维数相同的矩阵。考虑下面这些例子: x=-7.5: .5 : 7.5; y=x; % create a data set - the frame scmbrero X Y=meshgrid(x,y); % create placid data R=sqrt(X.A2+Y.A2)+eps; Z=sin(R)./R surf(X,Y,Z,Z) % default color order surf(X,Y,Z,-Z) % reverse the defaul

22、t color order surf(X,Y,Z,X) % color varies along the X-axis surf(X,Y,Z,X+Y) % color varies along the XY diagonal surf(X,Y,Z,R) % color varies radially from the center surf(X,Y,Z,abs(del2(Z) % color varies with absolute value of Laplacian dZdx,dZdy=gradient(Z); % compute gradient or slope of surface

23、surf(X,Y,Z,abs(dZdx) % color varies with absolute slope in x-direction surf(X,Y,Z,abs(dZdy) % color varies with absolute slope in y-direction dz=sqrt(dZdx.A2+dZdy.A2); surf(X,Y,Z,dZ) % color varies with magnitude of slope输出分别见图19.8、图19.9、图19.10、图19.11、图19.12、图19.13和图19.14.图 19.8 surf(X,Y, Z,Z)图 19.1

24、0 surf(X,Y,Z,X)图 19.12 surf(X,Y,Z,R)图 19.14 surf(X,Y, Z,dZ)图 19.15 surf(X,Y,Z,abs(dZdx)图 19.16 surf(X,Y,Z,abs(dZdy)注意到上面后五个例子中,颜色如何为所画的曲面提供了一个附加的维数。函数del2是离 散拉氏函数,它根据表面弯曲程度来使用颜色。函数del2描述如下: help del2DEL2 Five-point discrete Laplacian.V=del2(U) is a matrix the same size as U with each element equal t

25、o the difference between an element of U and the average of its four neighbours.For the “corners” and “edges”,only two or three neighbours are used.See also GRADIENT,DIFF帮助信息:DEL2 五点的离散LaplacianV=del2(U是一个和U同样大小的矩阵。它的每个元素是U中的对应位置的元素和它的四 个相邻点元素的平均值的差值。对于角上和边上的元素,只使用两个或三个相邻点。参阅函数:GRADIENT ,DIFF如上述,函数g

26、radient逼近表面的梯度或坡度。为了方便,通过运行精通MATLAB工具箱 中的脚本M文件mm4d,便可执行上述命令。19.7照明模型基于运用漫射、镜面反光和环境照明模型,函数surfl画出了一个类似于函数surf产生的 带彩色的曲面。使用一个单色颜色映象(如灰色,纯白,铜黄或粉红色)和插值色彩,会画 出效果最好的曲面。正常的参量表为surfl( X,Y,Z,S),这里X,Y和Z与surf(X,Y,Z)相同。而S 以Sx,Sy,Sz或az , el的形式定义了光源的方向。如果没有指明,其缺省光源是逆时针45 度,即从现在的视角向右转45度。环境照明,漫射反射,镜面反光对视觉效果的相对贡献以及

27、镜面扩展因子可以通过 K=ka,kd,ks,spread的五个元素来设定,这里K是函数surfl的第五个参量,即surfl( X,Y, Z,S,K)。K的缺省值是.55 .6 .4 10。为了了解这些参量如何影响图形照明,可以参 阅下面这些例子。 X,Y,Z=peaks(32); % data to plot surfl(X,Y,Z) , colormap(copper) , title( Default Lighting ) , shading interp surfl(X,Y,Z,7.5 30,.55 .6 .4 10) , shading interp surfl(X,Y,Z,-90 3

28、0,.55.6 2 10) , shading interp如前所述,插值上色会极大地降低打印速度。这是因为每一象素都有一个不同的颜色值, 打印机对每点都要分别地上色。19.8小结本章所用的函数总结在表19.3、表19.4、表19.5和表19.6中。表 19.3简单颜色Red (红)Green (绿)Blue (蓝)颜色000黑八、111白101红010绿001蓝110黄101洋红011青蓝2/301天蓝11/20橘黄.500深红.5.5.5灰色表 19.4标准颜色映象hsv色彩饱和值(以红色开始和结束)hot从黑到红到黄到白cool青蓝和洋红的色度pink粉红的彩色度gray线性灰度bone

29、带一点蓝色的灰度jethsv的一种变形(以蓝色开始和结束)copper线性铜色度prim三棱镜。交替为红色、橘黄色、黄色、绿色和天蓝色fag交替为红色、白色、蓝色和黑色表 19.5在 surf,mesh和pcolor图中作第四维的颜色surf(X,Y,Z,fun(X,Y,Z)根据函数fun(X,Y,Z)来施加颜色surf(X,Y,Z)=surf(X,Y,Z,Z)缺省动作,加颜色于Z轴surf(X,Y,Z,X)加颜色于X轴surf(X,Y,Z,Y)加颜色于Y轴surf(X,Y,Z,X.A2+Y.A2)根据z=0平面距原点(x=0, y=0)的距离施加颜色surf(X,Y,Z,del2(Z)根据曲

30、面的拉氏函数值施加颜色dZdx,dZdy=gradient(Z);surf(X,Y,Z,abs(dZdx)根据X轴方向的曲面斜率施加颜色dz=sqrt(dZdx.A2+dZdy.A2);surf(X,Y,Z,dz)根据曲面斜率大小施加颜色表 19.6颜色和照明函数colormap(map)在当前的图形窗口中安装一个颜色映象coorbar在当前的图形上显示一个水平的或垂直的颜色标 尺rgbplot(map)颜色映象中红、绿、蓝分量的直线图brighten(a)0a1,当前颜色映象加亮;-1a0,当前颜色映象加暗m=brighten(map,a)返回加亮的颜色映象mcmin,cmax=caxis返回颜色轴的界限caxis(cmin,cmax)设置颜色轴的界限关键词索引chap 19data visualization数据可视化lighting model照明模型hardware color lookup table硬件查色表entry输入项color scale颜色标尺color bar颜色条dark color暗色color axis颜色轴discrete Laplacian function离散拉氏函数diffuse漫射specular镜面反光ambient lighting model环境照明模型specular-spread coefficient镜面扩展因子

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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