Matlab 版 (精华区)
发信人: bage (最近比较烦), 信区: Matlab
标 题: 精通Matlab(十一)
发信站: 哈工大紫丁香 (Sun Feb 4 14:04:04 2001), 转信
发信人: Security (淼水), 信区: MathTools
发信站: BBS 水木清华站 (Tue Jun 1 22:39:09 1999)
第十九章 颜色的使用
MATLAB提供了许多在二维和三维空间内显示可视信息的工具。例如,看一条sin函数的曲线图就会比一堆数据提供更多的信息。这种用图表和图形来表示数据的技术叫做数据可视化。MATLAB不仅是一个强大的计算工具,并且在以引人入胜和直观方式可视地表示数据方面也很有特色。
但是很多时候,一个简单的二维或三维图形不能一次显示出想要提供的全部信息。这时,颜色可以对图形提供一个附加的维数。前面章节讨论的许多绘图函数都可以接受一个可用的颜色参量,来增加这附加的维数。
本章的讨论以研究颜色映象开始:如何使用、显示、修改和如何创建用户自己的颜色映象。然后,阐述在一个图形窗口中仿真多个颜色映象的技术或只使用颜色映象的一部分的技术。最后,讨论照明模型并提供例子。
19.1 颜色映象理解
MATLAB有一个叫颜色映象的数据结构来代表颜色值。颜色映象定义为一个有三列和若干行的矩阵。利用0到1之间的数,矩阵的每一行都代表了一种色彩。任一行的数字都指定了一个RGB值,即红、黄、蓝三种颜色的强度,形成一种特定的颜色。一些有代表性的RGB值在表19.1中给出。
表19.1
简单颜色
Red(红) Green(绿) Blue(蓝) 颜色
0 0 0 黑
1 1 1 白
1 0 0 红
0 1 0 绿
0 0 1 蓝
1 1 0 黄
1 0 1 洋红
0 1 1 青蓝
2/3 0 1 天蓝
1 1/2 0 橘黄
.5 0 0 深红
.5 .5 .5 灰色
有十个MATLAB函数产生预定的颜色映象。见表19.2
表19.2
标准颜色映象
hsv 色彩饱和值(以红色开始和结束)
hot 从黑到红到黄到白
cool 青蓝和洋红的色度
pink 粉红的彩色度
gray 线性灰度
bone 带一点蓝色的灰度
jet hsv的一种变形(以蓝色开始和结束)
copper 线性铜色度
prim 三棱镜。交替为红色、橘黄色、黄色、绿色和天蓝色
flag 交替为红色、白色、蓝色和黑色
按缺省,上面所列的各个颜色映象产生一个64×3的矩阵,指定了64种颜色RGB的描述。这些函数都接受一个参量来指定所产生矩阵的行数。比如hot(m)产生一个m×3的矩阵,它包含的RGB颜色值的范围从黑经过红、橘红和黄,到白。
大多数计算机在一个8位的硬件查色表中一次可以显示256种颜色,当然有些计算机的显示卡可以同时显示更多的颜色。这就意味着在不同的图中,一般一次可以用三或四个64×3的颜色映象。如果使用了更多的颜色映象输入项,计算机必须经常在它的硬件查色表中调出输入项。比如,当在
画MATLAB图形时背景图案发生了变化,就是发生了这种情况。所以,除非计算机有一次显示更多种颜色的显示卡,最好任何一次所用的颜色映象输入项数都小于256。
19.2 颜色映象使用
语句colormap(M)将矩阵M作为当前图形窗口所用的颜色映象。例如,colormap(cool)装入了一个有64个输入项的cool颜色映象。colormap default装入了缺省的颜色映象(hsv)。
函数plot、plot3、contour和contour3不使用颜色映象,它们使用列在plot颜色和线形表中的颜色。而大多数其它绘图函数,比如mesh、surf、fill、pcolor和它们的各种变形函数,使用当前的颜色映象。
接受颜色参量的绘图函数中的颜色参量通常采用以下三种形式之一:(1)字符串。代表plot颜色或线型表中的一种颜色,比如,' r '代表红色;(2)三个输入的行向量。它代表一个单独的RGB值,比如[.25 .50
.75];(3)矩阵。如果颜色参量是一个矩阵,其元素作了调整,并把它们用作当前颜色映象的下标。最后一种形式会在以后作更多讨论。
19.3 颜色映象显示
可以用多种途径来显示一个颜色映象。其中一个方法是 ? surfl(X,Y,Z,[-90 30],[.55 .6 2 10]) , shading interp
如前所述,插值上色会极大地降低打印速度。这是因为每一象素都有一个不同的颜色值,打印机对每点都要分别地上色。
19.8 小结
本章所用的函数总结在表19.3、表19.4、表19.5和表19.6中。
表19.3
简单颜色
Red(红) Green(绿) Blue(蓝) 颜色
0 0 0 黑
1 1 1 白
1 0 1 红
0 1 0 绿
0 0 1 蓝
1 1 0 黄
1 0 1 洋红
0 1 1 青蓝
2/3 0 1 天蓝
1 1/2 0 橘黄
.5 0 0 深红
.5 .5 .5 灰色
表19.4
标准颜色映象
hsv 色彩饱和值(以红色开始和结束)
hot 从黑到红到黄到白
cool 青蓝和洋红的色度
pink 粉红的彩色度
gray 线性灰度
bone 带一点蓝色的灰度
jet hsv的一种变形(以蓝色开始和结束)
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.^2+Y.^2) 根据z=0平面距原点(x=0,y=0)的距离施加颜色
surf(X,Y,Z,del2(Z)) 根据曲面的拉氏函数值施加颜色
[dZdx,dZdy]=gradient(Z);
surf(X,Y,Z,abs(dZdx)) 根据X轴方向的曲面斜率施加颜色
dz=sqrt(dZdx.^2+dZdy.^2);
surf(X,Y,Z,dz) 根据曲面斜率大小施加颜色
表19.6
颜色和照明函数
colormap(map) 在当前的图形窗口中安装一个颜色映象
coorbar 在当前的图形上显示一个水平的或垂直的颜色标尺
rgbplot(map) 颜色映象中红、绿、蓝分量的直线图
brighten(a) 0<a<1,当前颜色映象加亮;-1<a<0,当前颜色映象加暗
m=brighten(map,a) 返回加亮的颜色映象m
[cmin,cmax]=caxis 返回颜色轴的界限
caxis([cmin,cmax]) 设置颜色轴的界限
关键词索引
chap 19
data 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 镜面扩展因子
--
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bage.bbs@smth.org]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.387毫秒