问题引出:
之前我们提出过,用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);后就会显示我们自己定义的颜色。
标签:map,代表,颜色,colormap,imshow,矩阵,说明,cmap,matlab
来源: https://blog.csdn.net/zouxu634866/article/details/104780719