im2double 、mat2gray与double
- double 就是简单地把一个变量类型转换成double类型,数值大小不变
- mat2gray是把一个double类的数组转换成取值范围为[0,1]的归一化double类数组。
- 函数im2double将输入转换成double类型。如果输入是 uint8 unit16或者是二值的logical类型,则函数im2double 将其值归一化到0~1之间
注:
如果输入为double类型,输出还是double类型,并不进行归一化;即先用double转换,再用im2double 转换,不会对double处理之后的图像进行归一化操作;mat2gray则会将像素值归一化处理。
im2uint8和uint8
- im2uint8用于将归一化到0~1之间(im2double 处理后的图像)转换为uint8类型
uint8就是简单地把一个变量类型转换成uint8类型,数值大小不变
注:
如果对double处理之后的图像使用uint8()操作,返回值与原本的图像相同,不会出错。即im2uint8转换对应im2double 转换,数据有归一化过程;uint8对应double转换,转换过程中数值不发生变化。如果不能一一对应,则会出错。代码
img=double(img);%img为图像变量
img=uint8(img);
img=im2double(img);
img=im2uint8(img);
img=mat2gray(img);img_re=reshape(img,size(img,1)*size(img,2),3);%将图像转换为3列的矩阵,便于查看结果。
运行结果
double转换结果
double转换后使用im2double
double转换之后使用mat2gray