(1)显示:
image()可以直接显示8位数图像,但8位图像和double型数据在image()中意义是不一样的。
二值图可用uint8或double来储存;
索引图像uint8和double型显示方法没区别。但8位数据矩阵的值和颜色种类之间有一个数值为1的偏差。调用格式 image(x); colormap(map);
对于灰度图像,uint8范围0~255,double范围0~1,二者转换方式: i8 = uint(round(i64*255)); i64 = double(i8)/255 ;
imshow(f,[low,high]) 所有小于low显示黑色,所有大于high显示白色;
imshow(f,G) g表示灰度级数;
imshow(f,[]) 解决uint8范围0~255转换为0~1;
(2)读取:
[r宽度,c高度,d]=imread()根据文件图像种类进行不同处理。灰色图像存入8位矩阵中,把色图矩阵转换为双精度矩阵;rgb图像会存入8位的rgb矩阵中。
matlab读入图像是uint8类型,而在矩阵中使用的是double,所以需要转换。im2double(),im2uint8(),im2uint16();
(3)存取:
matlab默认将图片存储double型;也支持uint8或uint16,优势在于节省空间。
mat2gray()把double型数组转换到0~1之间,将矩阵转换成灰度图像得出double格式。
isgray()函数判断矩阵是否为图像数据矩阵。
(4)转换:
gray2ind() ind2gray() [x,map]=rgb2ind() ind2rgb(x,map) rgb2gray() im2bw(rgb,level)阈值
(5)写入:
imwrite(I,‘snight.jpg‘) 或imwrite(I,‘snight‘,‘jpg‘)