matlab画图常用函数image、imagesc、imshow区别

1、image函数

从数组显示图像,直接把矩阵中的值当作索引值(称为直接映射),即数值1对应RGB1,数值2对应于RGB2,当小于1或大于64时表现为两端的颜色。

语法1:image(c), 会将数组 C 中的数据显示为图像,C 的每个元素指定图像的 1 个像素的颜色。

案例1:

>> N=randi([0,255],6,6)   %产生随机矩阵
N =
   177   195   181    30   192   140
    81   203   193   127    65    35
   243    47    70   245   129    38
     8   125   174    87   178    65
   112   114   167   149   228   215
    97   165    41    57   245    65
>> image(N)   %画图
>> colorbar   %加右侧的条带

可以看出,下面多数元素是黄色,这是因为colorbar的范围为(0,64),大于等于64的均为黄色,接近于0 的偏向蓝色。matlab画图常用函数image、imagesc、imshow区别_第1张图片
若想要让colorbar的范围正好是矩阵极限值的范围,这样不同的像素值都能展现不同的颜色,而不是大于等于64的均为黄色。

语法2:默认情况下,图像的 CDataMapping 属性设置为 ‘direct’,(可以简单理解为,colorbar的范围默认情况是(0,64),矩阵数值范围仅限于这个范围时,才能展现不同颜色)
将 CDataMapping 属性设置为 ‘scaled’,将值的范围缩放到当前颜色图的完整范围

案例2:

>> image(N,'CDataMapping','scaled')
>> colorbar

matlab画图常用函数image、imagesc、imshow区别_第2张图片

注意!!!此时的效果与imagesc(N)画出的图一样。

语法3:image(x,y,C) ,指定图像位置,与imagesc的用法一样,可参照下面的案例。
语法4:显示三维真彩色数组的图像

案例3:定义了一个三维图像,三维分别代表R、G、B,因此只定义第一维,图形就为红色。因为第一维的3x3矩阵数值不同,所以显示出的红色深浅不同。

>> C = zeros(3,3,3);
>> C(:,:,1) = [.1 .2 .3; .4 .5 .6; .7 .8 .9]  %定义三维图像的第一维,其他二维默认为0
C(:,:,1) =
    0.1000    0.2000    0.3000
    0.4000    0.5000    0.6000
    0.7000    0.8000    0.9000
C(:,:,2) =
     0     0     0
     0     0     0
     0     0     0
C(:,:,3) =
     0     0     0
     0     0     0
     0     0     0
>> image(C)

matlab画图常用函数image、imagesc、imshow区别_第3张图片

2、imagesc函数

显示

语法1:imagesc(c),将数组 C 中的数据显示为一个图像,该图像使用颜色图中的全部颜色,即矩阵每个数值代表了一个颜色。

案例1:用imagesc函数给N矩阵画图的结果如下:

>> imagesc(N)

matlab画图常用函数image、imagesc、imshow区别_第4张图片

语法2:imagesc(x,y,C) ,指定图像位置,其中(x,y)代表了加载进来的这幅图像x、y的范围。

案例2:依然绘制N矩阵,但定义了图像的位置。注意x轴、y轴的变化。

>> x=[3 9]>> y=[12 18];
>> imagesc(x,y,N)

matlab画图常用函数image、imagesc、imshow区别_第5张图片

语法3:imagesc(C,clims),clims 指定映射到颜色图的第一个和最后一个元素的数据值。
将 clims 指定为 [cmin cmax] 形式的二元素向量,其中小于或等于 cmin 的值映射到颜色图中的第一种颜色,大于或等于 cmax 的值映射到颜色图中的最后一种颜色。

案例3:设置颜色显示的极大值和极小值分别为50和100,可以看出,图形像素颜色相对于前面两个案例,已经发生变化。

>> clims=[50,100]
>> imagesc(N,clims)

matlab画图常用函数image、imagesc、imshow区别_第6张图片
其他用法参照help文档,可调节透明度等。

3、imshow函数

可用来画tif格式的图像、二值图,功能强大,可更改显示图像的颜色。
语法1:imshow(I), 在图窗中显示灰度图像 I,以原尺寸直接映射。
案例1:

imshow(N)

可以看出,原尺寸显示,图形非常小,只有中间一点白色区域。
matlab画图常用函数image、imagesc、imshow区别_第7张图片

语法2:imshow(I,[low high]) 显示灰度图像 I,以二元素向量 [low high] 形式指定显示范围。线性映射。
案例2:

imshow(N,[50 100])

可以看出,刚刚纯白色的方块里面有黑的、白的了
matlab画图常用函数image、imagesc、imshow区别_第8张图片

语法3:imshow(X,map) ,显示带有颜色图 map 的索引图像 X,比如tif影像,有R、G、B三个通道,可用该方式读取某一个通道的结果。

区别总结:

(1)image和imagesc函数显示图像是彩色的,imshow是灰度图像。
(2)imshow将图像以原始尺寸显示,image和imagesc函数会适当进行缩放。
(3)image采用的是直接映射,而imagesc采用线性映射。imagesc函数可以调整映射的范围,比如imagesc函数中的案例3,将映射范围改到了【50 100】。imshow函数既可以直接映射,也可以线性映射。

以上理解需要先明白什么是索引图像,关于这3个函数的区别可以参考网页:
https://wenku.baidu.com/view/5d0a7b61306c1eb91a37f111f18583d049640fcd.html

你可能感兴趣的:(Matlab学习笔记,matlab)