上篇中我们对MATLAB的数据类型以及最基本的double类型和uint8类型的转换进行了讲解,除此之外,MATLAB里边仍然有部分函数可以实现数据类型转换的功能,在此我们将对这些函数进行学习;考虑到MATLAB里边图像读取和显示仍然和数据类型有莫大关系,所以我们也将对读取和显示函数进行必要说明。
#MATLAB中常用类型转换函数
在一般情况下,由于图像读取类型uint8和MATLAB的默认类型double之间存在转换的必要,除了使用基本的double类型和uint8类型的转换之外,常常也使用下边的函数进行类型转换1
函数名 | 输入 | 输出 |
---|---|---|
mat2gray | uint8,uint16,double | 归一化double |
im2double | uint8,uint16,double | 普通的double或归一化double |
im2uint8 | uint8,uint16,double | uint8 |
im2bw | uint8,uint16,double | logical |
注:在没有特别说明的情况下,double类型包括普通的double类型和归一化的double类型
##MAT2GRAY函数
函数使用的范例如下,其中A为uint8类型矩阵:
A =
77 78 77 76
>> B=double(A)
B =
77 78 77 76
>> C=mat2gray(A)
C =
0.5000 1.0000 0.5000 0
>> C1=mat2gray(A,[0,255])
C1 =
0.3020 0.3059 0.3020 0.2980
>> D=mat2gray(B)
D =
0.5000 1.0000 0.5000 0
>> D1=mat2gray(B,[0,255])
D1 =
0.3020 0.3059 0.3020 0.2980
>> E=mat2gray(B/255)
E =
0.5000 1.0000 0.5000 0
>> E1=mat2gray(B/255,[0,1])
E1 =
0.3020 0.3059 0.3020 0.2980
从上边的代码可知,MAT2GRAY函数有两种格式,分别为:
I = MAT2