MATLAB im2double、double、mat2gray、im2uint8和uint8的區別及使用

im2double 、mat2gray與double

  1. double 就是簡單地把一個變量類型轉換成double類型,數值大小不變
  2. mat2gray是把一個double類的數組轉換成取值範圍爲[0,1]的歸一化double類數組。
  3. 函數im2double將輸入轉換成double類型。如果輸入是 uint8 unit16或者是二值的logical類型,則函數im2double 將其值歸一化到0~1之間
    注:
    如果輸入爲double類型,輸出還是double類型,並不進行歸一化;即先用double轉換,再用im2double 轉換,不會對double處理之後的圖像進行歸一化操作;mat2gray則會將像素值歸一化處理。

im2uint8和uint8

  1. im2uint8用於將歸一化到0~1之間(im2double 處理後的圖像)轉換爲uint8類型
  2. uint8就是簡單地把一個變量類型轉換成uint8類型,數值大小不變
    注:
    如果對double處理之後的圖像使用uint8()操作,返回值與原本的圖像相同,不會出錯。即im2uint8轉換對應im2double 轉換,數據有歸一化過程;uint8對應double轉換,轉換過程中數值不發生變化。如果不能一一對應,則會出錯。

    代碼

    img=double(img);%img爲圖像變量
    img=uint8(img);
    img=im2double(img);
    img=im2uint8(img);
    img=mat2gray(img);

    img_re=reshape(img,size(img,1)*size(img,2),3);%將圖像轉換爲3列的矩陣,便於查看結果。

運行結果
double轉換結果
double轉換

double轉換後使用im2double
double轉換後使用im2double

double轉換之後使用mat2gray
double轉換之後使用mat2gray

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章