色图(color map)是MATLAB系统引入的概念。在MATLAB中,每个图形窗口只能有一个色图。
色图是m×3 的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。
色图代表的就是一个映射(彩色映射),它不是连续函数类型的映射,而是用一个有三列的矩阵来代表,这三列分别代表颜色的R、G、B分量。
1、数字图像处理中的应用:生成伪彩色图像
索引图像(伪彩色图像)有两个分量,即整数矩阵X和彩色映射矩阵map。映射矩阵map是一个大小为m行3列,且范围在[0,1]之间的浮点值构成的double类二维数组。map的每一行都定义单色的红、绿、蓝三个分量。索引图像将亮度值(灰度)“直接映射”到彩色值。每个像素的颜色有对应的整数矩阵X的值作为指向map的一个指针决定。
下面是常用颜色的RGB值
这种映射,一般是一种多对一的映射,当colormap的行数m比较小时,图像上的多个灰度值就会映射到一个颜色。例如:假设灰度图X只有4个像素,它们的值分别为1,64,128,256。若指定彩色映射map=[0 0 0;0.9 0.9 0.9],则所有X中的值为1的元素会指向该图map的第一行(黑色),其他所有元素都会指向第二行(浅灰色)。下面是代码演示:
X = [1,65;128,256];
map = [0 0 0;0.9 0.9 0.9];
imtool(X,map);
参考自:《数字图像处理Matlab》,冈萨雷斯,P147
在数字图像中,它可以利用它将灰度图映射为伪彩色图像,如下图:
A = imread(\'pout.tif\') ;
% 第一步 显示图像
imshow(A);colorbar
|
% 第二步
colormap jet % 内置的colormap
|
% 第三步
colormap autumn % 内置的colormap
|
% 第四步 % 返回到原图
colormap gray % 内置的colormap |
下面是Matlab内置的Colormap
应用2、更美观地展示你的三维图像
通过上面的展示,我们其实可以把图像上的“灰度值”看做普通三维图像的Z轴。利用colormap可以将Z轴高度/值映射为对应的颜色;
使用系统内置的colormap
syms x y;
ezmesh(x*exp(-x^2-y^2),[-2.5,2.5],40);
colormap(hot);
|
自定义colormap
syms x y
ezmesh(x*exp(-x^2-y^2),[-2.5,2.5],40)
colormap([0,1,0.5 ;1,0,0]) % 分成两部分,分别映射成红色和绿色
|
syms x y
ezmesh(x*exp(-x^2-y^2),[-2.5,2.5],40)
colormap([0,1,0.5;1,0,0;0,0,0])
% 分成3部分,由图可以看出是按函数值的大小映射颜色
|
%来一个更漂亮的
surf(peaks);
mymap = [0 0 0;1 0 0;0 1 0;0 0 1;1 1 1];
colormap(mymap);
|
应用3、绘制动图
慢慢更新。。。