matlab中的image函数和colormap的参数


imshow和image: 用imshow和image都可以显示图像,但是有一定的区别。

image是用来显示附标图像,即显示的图像上有x,y坐标轴的显示,可以看到图像的像素大小。

imshow只是显示图像。

它们都可以用subplot来定位图像显示的位置,用colormap来定义图像显示用的颜色查找表,比如用colormap(pink),可以把黑白图像显示成带粉红色的图像,很有趣的。

在这里最值得注意的是要显示的图像像素矩阵的数据类型。

显示真彩色图像像素三维矩阵X,如果是uint8 类型,要求矩阵的数据范围为0-255,如果是double型,则其数据范围为0-1,要不就会出错或者出现空白页。类型转换很简单,如果你原来的数值是 uint8,在运算中转换为double后,实际要显示的数值没有改变的话,只要用uint8(X)就可转换为uint8型,如果不想转换频繁,也可在显示时用X/255来转换为符合0-1double类型范围要求的数值显示。

如果显示索引图像(二维矩阵),因为不同数据类型对应颜色查找表colormap的基点不同,会有所区别,如果不对的话,会出现很多意外的显示效果的。如果索引图像像素数值是double型,则它的取值范围为1-length(colormap),数值起点为1,则矩阵中数值为1的对应colormap中第一行数据,

如果索引图像像素数值是uint8,则取值范围为0-255,数值起点为0,则矩阵中数值为0的对应colormap中第一行数据,所以索引图像这两个数据类型之间的转换,要考虑到+1或-1。直接用uint8或double转换则会查找移位,产生失真情况。uint16数据类型与uint8类似,取值范围为0-65536。

 

MATLAB figure的colormap中默认共有64种不同的颜色,所以colorbar的范围只能是[ 
1, 64](注意,不是[0, 63])。所以你矩阵中的数值范围也应该是[1, 64]。 

比如

x=-5:1:5; 
y=-5:1:5; 
[xx,yy]=meshgrid(x,y); 
zz=sqrt(xx.^2+yy.^2); 
image(x,y,zz) 
colormap(cool) 
hold on 
plot(x,y,'k+') 
colorbar 

结果只有蓝色,没有其他颜色,因为zz的数值在[0,7.13]之间

对于image函数,可以用三种方法:

1、使用imagesc函数, 
2、使用image函数的'direct',但手动把zz的数值缩放到1~64 

3、使用image函数的'scaled'

例如下面的程序

x=-5:1:5; 
y=-5:1:5; 
[xx,yy]=meshgrid(x,y); 
zz=sqrt(xx.^2+yy.^2); 
h=image(x,y,zz); 
set(h,'CDataMapping','scaled')

colormap(cool) 
hold on 
plot(x,y,'k+') 
colorbar 


另外,gray(8),你会发现,此时colormap只有八个颜色,colorbar范围为[1~8].例如

x=-5:0.5:5;  

y=-5:0.5:5;  

[xx,yy]=meshgrid(x,y);  

zz=sqrt(xx.^2+yy.^2);  

image(x,y,zz)  

colormap(gray(8))  

hold on  

plot(x,y,'k+')  

colorbar 

换为colormap(gray(8)),你会发现,此时colormap有108个颜色,colorbar范围为[1~108]

此时图像漆黑一片

 

事实上,灰度图和伪彩图是一回事。

灰度colormap不过是colormap的一种,其他colormap有多少种颜色,灰度colormap就有 
多少种颜色。只要在image中使用了colormap,那图上的不同颜色(灰度)不会超过64种 
。 

比如上面的程序
分别用colormap(gray(8))  
colormap(gray(64))  
和colormap(gray(89))  

结果表明,前面两个差别很大。后面两个没有差别

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值