天天看點

uint8,im2uint8,double,im2double的差別

這四個指令,對應兩種“資料格式”:分别是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這兩個指令中,這裡就不一一舉例了,自己動手體會一下。