如何使用、显示、修改和如何创建用户自己的颜色映象。然后,阐述在一个 图形窗口 中仿真多个颜色映象的技术或只使用颜色映象的一部分的技术。最后,讨论照明模型并提供例子。
颜色映象理解
MATLAB 有一个叫颜色映象 的数据结构来代表颜色值。颜色映象定义为一个有三列和若干行的矩阵。利用 0 到 1 之间的数,矩阵的每一行都代表了一种色彩。任一行的数字都指定了一个 RGB 值,即红、黄、蓝三种颜色的强度,形成一种特定的颜色。一些有代表性的 RGB 值在下表中给出。
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 | 青蓝 |
0.667 | 0.667 | 1 | 天蓝 |
1 | 0.5 | 0 | 橘黄 |
0.5 | 0 | 0 | 深红 |
0.5 | 0.5 | 0.5 | 灰色 |
有十个 MATLAB 函数产生预定的颜色映象:
hsv | 色彩饱和值 |
hot | 从黑到红到黄道白 |
cool | 青蓝和洋红的色度 |
pink | 粉红的彩色度 |
bone | 带一点蓝色的灰度 |
jet | hsv的一种变形(以蓝色开始和结束) |
copper | 线性铜色度 |
prim | 三棱镜。交替为红,橘黄,黄,绿,天蓝 |
flag | 交替为红,白,蓝,黑 |
gray | x线性灰度 |
按缺省,上面所列的各个颜色映象产生一个 64 × 3 的矩阵,指定了 64 种颜色 RGB 的描述。这些函数都接受一个参量来指定所产生矩阵的行数。比如 hot(m) 产生一个 m × 3 的矩阵,它包含的 RGB 颜色值的范围从黑经过红、橘红和黄,到白。
大多数计算机在一个 8 位的硬件查色表中一次可以显示 256 种颜色,当然有些计算机的显示卡可以同时显示更多的颜色。这就意味着在不同的图中,一般一次可以用三或四个 64 × 3 的颜色映象。如果使用了更多的颜色映象输入项,计算机必须经常在它的硬件查色表中调出输入项。比如,当在画 MATLAB 图形时背景图案发生了变化,就是发生了这种情况。所以,除非计算机有一次显示更多种颜色的显示卡,最好任何一次所用的颜色映象输入项数都小于 256 。
颜色映象使用 :
语句 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 )矩阵。如果 颜色参量 是一个矩阵,其元素作了调整,并把它们用作当前颜色映象的下标。
函数 pcolor 可以用来显示一个颜色映象。例如:
» n=32;
» colormap(hsv(n))
» pcolor([1:n+1;1:n+1] ’ )
细节请访问:Matlab颜色使用