這四個指令,對應兩種“資料格式”:分别是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型資料,并且進行“反歸一化”!
注意:這個指令相當于: uint8(a)*255;%大于255的算作255 %注意,如果此時a是double型的資料,并且都是大于1的,那麼進行im2double(a)指令以後,多有資料都是255。
提示:如果上面寫的看明白了,下面的例子就不必看了。
示例一:
前提: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這兩個指令中,這裡就不一一舉例了,自己動手體會一下。