zoukankan      html  css  js  c++  java
  • Matlab绘图基础——colormap在数字图像处理及三维图形展示上的应用(分层设色)

        色图(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、绘制动图
    慢慢更新。。。
  • 相关阅读:
    转载:quartz详解:quartz由浅入深
    git提交忽略文件或文件夹
    Spring学习笔记(一)
    转载:RabbitMQ常用命令
    linux安装rabbitMQ
    linux安装redis
    springMVC+spring+mybatis多数据源配置
    (二)RabbitMQ使用笔记
    ASP.NET Core 异常处理与日志记录
    ASP.NET Core中间件实现分布式 Session
  • 原文地址:https://www.cnblogs.com/stxs/p/8617250.html
Copyright © 2011-2022 走看看