色图(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、绘制动图
慢慢更新。。。
 
 
 
 

Matlab绘图基础——colormap在数字图像处理及三维图形展示上的应用(分层设色)的更多相关文章

  1. Matlab绘图基础——colormap的使用

    **使用系统内置的colormap** ``` syms x y ezmesh(x*exp(-x^2-y^2),[-2.5,2.5],40) colormap(hot) ``` 自定义colormap ...

  2. Matlab绘图基础——绘制向量图,二维三维(绘制参数曲线图)

    ------------------------------------------- %绘制向量场图 %例一 clear all;clc; [X,Y] = meshgrid(-2:.2:2,-3:. ...

  3. Matlab绘图基础——图形修饰处理(入门)

    引入--标题.色条.坐标轴.图例等 例一: set(groot,'defaultAxesLineStyleOrder','remove','defaultAxesColorOrder','remove ...

  4. Matlab绘图基础——其他三维图形(绘制填充的五角星)

    其他三维图形 %绘制魔方阵的三维条形图 subplot(2,2,1); bar3(magic(4));   %以三维杆图形式绘制曲线y=2sin(x) subplot(2,2,2); y=2*sin( ...

  5. Matlab绘图基础——绘制三维表面

    %绘制三维表面 ------------------------------------- %1.绘制线框图:mesh:每一条曲线称为mesh line %首先利用meshgrid函数产生平面区域内的 ...

  6. Matlab绘图基础——用print函数保存图片(Print figure or save to file)

    print(figure_handle,'formats','-rnumber','filename')  %将图形保存为png格式,分辨率为number的(默认为72),最好指定的分辨率大一点,否则 ...

  7. Matlab绘图基础——散点生成三角网(TIN)

    %例一:二维三角网TIN模型的生成 X=rand(10,2)*5; dt=DelaunayTri(X(:,1),X(:,2));       %生成三角网 triplot(dt);hold on;   ...

  8. Matlab绘图基础——绘制等高线图

    % 等高线矩阵的获取 C = contourc(peaks(20),3);              % 获取3个等级的等高线矩阵 % 等高线图形的绘制 contour(peaks(20),10);c ...

  9. Matlab绘图基础——利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴)

    描述 axes在当前窗口中创建一个包含默认属性坐标系 axes('PropertyName',propertyvalue,...)创建坐标系时,同时指定它的一些属性,没有指定的使用DefaultAxe ...

随机推荐

  1. Network Security Services If you want to add support for SSL, S/MIME, or other Internet security standards to your application, you can use Network Security Services (NSS) to implement all your securi

    Network Security Services | MDN https://developer.mozilla.org/zh-CN/docs/NSS 网络安全服务 (NSS) 是一组旨在支持支持安 ...

  2. 多线程入门-第四章-线程的调度与控制之sleep

    /* sleep,阻塞当前线程,腾出CPU,让给其他线程 单位是毫秒 静态方法 */ public class ThreadTest04 { public static void main(Strin ...

  3. window7修改hosts文件

    以管理员身份登录系统 ,修改 C:\Windows\System32\drivers\etc\hosts文件, 在最下面加入类似 192.168.80.10 master192.168.80.11 s ...

  4. centos7通过阿里云配置docker加速镜像

    针对Docker客户端版本大于1.10.0的用户 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器: sudo mkdir -p /etc/docker s ...

  5. URL地址中的字符串转换

    url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,怎么解决?解决办法将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义 用其它 ...

  6. python中的抽象方法

    python中的抽象方法 父类要限制1.子类必须有父类的方法2.子类实现的方法必须跟父类的方法的名字一样 import abc class A(metaclass=abc.ABCMeta): @abc ...

  7. gcc __attribute__

    GNU C 的一大特色就是__attribute__ 机制.__attribute__ 可以设置函数属性(Function Attribute ).变量属性(Variable Attribute )和 ...

  8. Windows 和 Linux 的文件名

    Windows中文件名是区分大小写的,而Linux不区分. 在开发中,发现在Windows可以执行通过,在Linux可能由于文件名不一致而失败.

  9. ruby中的可调用对象--proc和lamdba

    ruby中将块转变成对象的三种方法 ruby中的大部分东西都是对象,但是块不是.那么,如果你想存下来一个块,方便以后使用,你就需要一个对象.ruby中有三种方法,把块转换成可以利用的对象. Proc. ...

  10. 零基础学习openstack【完整中级篇】及openstack资源汇总

    1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事 ...