【MATLAB Image Processing Toolbox 入门教程八】
在【MATLAB Image Processing Toolbox 入门教程六】“导入、导出和转换”之“图像类型转换Ⅰ——在不同图像类型之间转换”
中,我们讲解了不同图像类型之间转换的方法,在本节中,我们将对存储图像信息的数据的类型转换进行讲解。
我们知道,数据类型一般分为整型、浮点型,整型又分为有符号性和无符号型,浮点型又分为双精度和单精度。在MATLAB中,保存图像信息的数据是以矩阵的形式排列,矩阵中的数据也分为这样几种类型。
1 im2double函数
此函数的作用是将图像数据转换为双精度值,用法很简单:
I1=im2double(I):I是输入图像,可以为灰度图像、彩色图像、二值图像,I1是输出图像。
我们举个简单的例子演示一下函数的用法:
首先载入一个图像:
I=imread('peppers.png');
whos I; %查看图像的信息
可以看出,保存此图像的数据类型为8位无符号整数。接下来使用im2double函数将其转为双精度类型:
I1=im2double(I);
whos I1;
可以看出,I1的数据类型转化为double。
2 im2single函数
此函数的作用是将图像数据类型转化为单精度数,用法很简单:
I1=im2single(I):I是输入图像,可以为灰度图像、彩色图像、二值图像,I1是输出图像。如果输入图像是二值图像,即数据类型是逻辑类型,那么im2single函数会将真值变为65535.
接下来举个例子演示一下函数的用法,在此例子中,我们将一个8位无符号型整数的数组转化为单精度类型。
首先创建数组:
I=reshape(uint8(linspace(1,255,25)),[5 5]); %linspace的作用是生成线性的间距向量,linspace(x,y,n)的作用就是产生n个点,点的间距为(y-x)/(n-1)
接着,将其转为单精度类型:
I1=im2double(I)
3 im2int16函数
此函数的作用是将图像数据类型转化为16位有符号整数型,用法是:
I1=im2int16(I):I是输入图像,可以为灰度图像、彩色图像、二值图像,I1是输出图像。如果输入图像是二值图像,即数据类型是逻辑类型,那么im2int16函数会将真值变为32767,假值变为-32768.
举个简单的例子演示一下函数用法:
首先还是创建一个数值矩阵:
I = reshape(linspace(0,1,20),[5 4])
接着使用im2int16函数将其转为整数类型:
I2 = im2int16(I)
显然,im2int16函数是将之前的数值矩阵映射到[-32768,32767]之间,然后给对应的元素赋一个新值。
4 im2uint16函数
此函数的作用是将图像数据类型转化为16位无符号型整数,用法是:
I1=im2uint16(I):I是输入图像,可以为灰度图像、彩色图像、二值图像,I1是输出图像。如果输入图像是二值图像,即数据类型是逻辑类型,那么im2uint16函数会将真值变为65535,假值变为0.
使用和第三节中I一样的矩阵举个例子:
I = reshape(linspace(0,1,20),[5 4])
接着使用im2int16函数将其转为整数类型:
I2 = im2uint16(I)
显然,im2uint16函数是将之前的数值矩阵映射到[0,65535]之间,然后给对应的元素赋一个新值。同样的,im2uint8函数是将之前的数值矩阵映射到[0,255]之间,然后给对应的元素赋一个新值,这里就不再赘述。
至此,“导入、导出和转换”之图像类型转换已经讲解完毕,接下来,我们要讲解“导入、导出和转换”之图像序列和批处理。下次见:)