在matlab中调用imagesc()将一幅灰阶图像以彩色显示时,默认使用的color mapping是Jet,其color bar 为:

Jet的color mapping图为:

Color mapping图的绘制(Matlab代码):

function showRGBchannels(Fignr,Map); 
      x = linspace(0,1, size(Map, 1));
      figure(Fignr)
      lw = 4;
      plot( x, Map(:,1),'color',[1,0,0],'linewidth',lw,...
         x, Map(:,2),'color',[0,1,0],'linewidth',lw,... 
         x, Map(:,3),'color',[0,0,1],'linewidth',lw,...
         x, mean(Map,2),'color',[0.7,0.7,0.7],'o'); 
      xlabel 'fraction'
      ylabel 'intensity'
      end

调用:showRGBchannels(1,jet(500))

根据此color mapping图,我将C / C++代码实现如下:

void mapJet(double v, double vmin, double vmax, BYTE& r, BYTE& g, BYTE& b)
{
    r = 255;
    g = 255;
    b = 255;

if (v < vmin) {
        v = vmin;
    }

if (v > vmax) {
        v = vmax;
    }

double dr, dg, db;

if (v < 0.1242) {
        db = 0.504 + ((1.-0.504) / 0.1242)*v;
        dg = dr = 0.;
    } else if (v < 0.3747) {
        db = 1.;
        dr = 0.;
        dg = (v - 0.1242) * (1. / (0.3747-0.1242));
    } else if (v < 0.6253) {
        db = (0.6253 - v) * (1. / (0.6253-0.3747));
        dg = 1.;
        dr = (v - 0.3747) * (1. / (0.6253-0.3747));
    } else if (v < 0.8758) {
        db = 0.;
        dr = 1.;
        dg = (0.8758 - v) * (1. / (0.8758-0.6253));
    } else {
        db = 0.;
        dg = 0.;
        dr = 1. - (v - 0.8758) * ((1.-0.504) / (1.-0.8758));
    }

r = (BYTE) (255 * dr);
    g = (BYTE) (255 * dg);
    b = (BYTE) (255 * db);
}

其中,v为归一化的图像像素值(0.-1.)。

函数使用:

BYTE red, green, blue;

mapJet(image[i][j], 0., 1., red, green, blue);

matlab jet color mapping C / C++ / VC 实现的更多相关文章

  1. VC 与Matlab混合编程之引擎操作详解

    Visual C++ 是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快.但在科学计算方面函数库显得不够丰富.读取.显示数据图形不方便. Matlab 是一款将数值分析.矩阵计算.信 ...

  2. VC 编译 MATLAB 的 mex 文件

    VC 编译 MATLAB 的 mex 文件mex 文件是 MATLAB 调用其他程序设计语言程序或算法的接口.在 Windows 环境中,mex 文件是扩展文件名为 DLL 的动态链接库,可以在 m ...

  3. change grayscale to pseudo colouring using colormap in Matlab

    change grayscale to pseudo colouring using colormap in Matlab In matlab you can view a grayscale ima ...

  4. MATLAB中文论坛帖子整理(GUI)

    MATLAB中文论坛帖子整理(GUI) 目   录  1.GUI新手之——教你读懂GUI的M文件... 10 2.GUI程序中改变current directory引起的问题... 15 3.GUI中 ...

  5. VS2015调用matlab Plot函数

    最近经常采用Matlab仿真,然后C语言实现,最后需要将计算结果使用Qt的qwt或者matlab中的plot函数绘图. 因此想借用matlab的plot函数接口,使用VS2015来编写信号处理代码,最 ...

  6. Visual Studio 与 Matlab实现混合编程

    环境: Win10 vs2010 Matlab2015 里面有很多选做的内容,其中2.3必做 1.Matlab环境设置:   (选做)我没有做这步,因为打mbuild -setup指令不识别,缺少SD ...

  7. Matlab: 作图

    控制图的大小 figure('position',[x0,y0,dx,dy]); figure(fig number); 显示图例 legend('leg1','leg2') depend on ho ...

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

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

  9. Matlab绘图基础——用print函数批量保存图片到文件(Print figure or save to file)

    一.用法解析 1.1. 分辨率-rnumber 1.2.  输出图片的“格式”formats 二.用法示例 2.1. 设置输出图片的“图像纵横比” 2.2. Batch Processing(图片保存 ...

随机推荐

  1. 后台管理UI皮肤的选择

    后台管理UI的选择 目录 一.EasyUI 二.DWZ JUI 三.HUI 四.BUI 五.Ace Admin 六.Metronic 七.H+ UI 八.Admin LTE 九.INSPINIA 十. ...

  2. MyCat:取代Cobar数据库中间件

    什么是MyCAT?简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务.ACID.可以替代Mysql的加强版数据库 ? 一个可以视为“Mysql”集群的企业级数据库 ...

  3. WPF学习之路(十四)样式和模板

    样式 实例: <Window.Resources> <Style x:Key="BtnStyle"> <Setter Property=" ...

  4. Hbase安装配置(靠谱亲测)

    Hbase是Hadoop生态系统中的NoSql列式数据库.通过Hbase,可以进行数据读写,比较适合Top n场景.Hbase搭建的系统,瓶颈在于硬盘的传输速度.RDBMS一般的瓶颈在于寻道速度. 实 ...

  5. 优化SQLServer——表和分区索引

    概念: 简单地说,分区是将大型的对象(如表)分成更小的且易于管理的小块.分区的基本单位是行,需要注意的是与分区视图不同的地方时,分区必须位于同一个数据库内. 分区的原因:            对于非 ...

  6. MySQL入门(二)

    一 MySQL概述 MySQL是一个很受欢迎的开源数据库,当我从Oracle转来做MySQL的时候,感觉最深刻的一点就是,这家伙居然是Server和Storage分开的!而且更不能忍的是,它竟然是插件 ...

  7. pl/sql developer——instant-client 简单配置

    instant-client(数据库即时客户端) 官方说明:即时客户端在一个单独的针对 Instant Client 的 OTN 开发和分发许可下提供,它允许大多数许可下载.重新分发和部署到生产环境中 ...

  8. ubuntu同时安装qt4.8和qt5.7

    这是ubuntu默认安装(从apt安装)的路径和相关文件,建议编译安装到/opt目录下,使用./configure --prefix=/opt/Qt4.8 /usr/share/qt4 /usr/sh ...

  9. Android中在sdcard上创建文件夹

    //在SD卡上创建一个文件夹    public void createSDCardDir(){     if(Environment.MEDIA_MOUNTED.equals(Environment ...

  10. chrome内核浏览器input边框

    直接给input加outline:none和设置input {outline:none}都没效 最后逼得没法,*:focus { outline: none; },然后整个世界就安静了,嚯嚯