matlab中的colormap说明

问题引出:
之前我们提出过,用imread命令可以读取图片转换为matlab矩阵,这是一个3维矩阵,存储了颜色信息,我们可以用imshow函数读取这个三维矩阵来还原图片。

那么我们是否可以用一个二维矩阵来存储有颜色的图片呢?可以,这时就会用到colarmap。我们知道,当map矩阵为2维矩阵时,用imshow函数读取这个二维矩阵只能识别里面的0和1,即只能显示出黑和白两种颜色,如果想要显示更多颜色,则矩阵里面必须有大于2个的多个数,每个数代表一种颜色,至于每个数代表什么颜色,则我们自己去定义,定义的方法就是写一个矩阵,如下:

cmap=[0 1 1; %bai
    0 0 0;    %hei
    1 0 0;   %hong
    0 0 1;  %lan
    0 1 0;  %lv
    1 1 0;
    1 1 1];

说明:这个矩阵每一列代表红绿蓝这三个三原色,每一行代表一种颜色,而每一行的三个数代表三种三原色的混合比例,而混合行程的颜色就是这一行的颜色。

这样的话,我们最开始定义的二维矩阵map中的数字代表的是cmap矩阵中的第几排颜色,比如map中的数字为3,则显示出来为红色。

但要注意:此时显示的函数为:imshow(map,cmap);即加上cmap作为参数。

举例:

clc;
close all;
clear all;
cmap=[0 0.4 1; %bai
    0 0 0;    %hei
    1 0 0;   %hong
    0 0 1;  %lan
    0 1 0;  %lv
    1 1 0;
    1 1 1];


x=imread('zhousan.png');
map=im2bw(x,0.9);

imshow(map,cmap);

原本map中的数据为0和1,如果只用imshow(map);只会显示黑白,而用imshow(map,cmap);后就会显示我们自己定义的颜色。

在这里插入图片描述

发布了183 篇原创文章 · 获赞 106 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/zouxu634866/article/details/104780719
今日推荐