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