这四个命令,对应两种“数据格式”:分别是uint8(范围是0~255)还有 double.
四个命令的区别:
1. double(a)是将a转换成double型数据(注意:只是改变数据格式,并不进行“归一化”)
2. im2double(a)是将a转换成double型数据,并且进行“归一化”!
注意:这个指令相当于:
double(a)/255;
3. 同理,uint8(a)是将a转换成uint8型的数据(注意:只是改变数据格式,并不进行“反归一化”)
4. 同理,im2uint(a)是将a转换成uint8型数据,并且进行“反归一化”!
提示:如果上面写的看明白了,下面的例子就不必看了。
示例一:
前提:a是uint8型
a =
10 89
155 208
那么,>> im2double(a)
ans =
0.0392 0.3490
0.6078 0.8157
示例二:
前提:a还是uint8型
>> a1=double(a)a1 =
10 89
155 208
到现在为止,a1已经是double型数据(但是并没有“归一化”)那么,
>> im2double(a1)
ans =10 89
155 208
注意:我们发现这里的结果并不是0到1的小数!那是由于a1已经是double型!那么怎样得到示例一的结果呢?猜对了!看下面:
>> a1/255
ans =
0.0392 0.3490
0.6078 0.8157
同样的情况会发生在uint8和im2uint8这两个命令中,这里就不一一举例了,自己动手体会一下。