天天看點

CNN Matlab例子RGB_MATLAB中圖像的資料類型

CNN Matlab例子RGB_MATLAB中圖像的資料類型
CNN Matlab例子RGB_MATLAB中圖像的資料類型
CNN Matlab例子RGB_MATLAB中圖像的資料類型

如果你愛我們,就點選上方“藍字”關注我們吧!!

、幾種圖像的資料類型

表中羅列了常見的資料類型及其含義:

CNN Matlab例子RGB_MATLAB中圖像的資料類型

輸入圖像,指定為數值标量、向量、矩陣或多元數組。

如果 I 是灰階或真彩色 (RGB) 圖像,它可以是 uint8、uint16、double、logical、single或 int16。

    ②

如果 I為索引圖像,它可以是 uint8、uint16、double 或 logical。

    ③

如果 I為二值圖像,它必須是 logical。

、matlab圖像的存儲資料類型

imread函數把灰階圖像存入了一個八位矩陣,如果是RGB圖像,就存入8位RGB矩陣中。這個八位矩陣的每一個元素都是一個圖檔中的像素,由于這種矩陣一般占用的頁面較大,這裡我們用size函數來查詢一幅圖像的大小,例如:

>> [M,N]=size(BW)

M =

    258

N =

    350

因為我們前面的圖檔是灰階圖,是以傳回了一個M×N矩陣。

函數whos可以顯示出一個矩陣的附加資訊:

>> f=imread('abc.jpg');

>> whos f

 Name        Size              Bytes  Class    Attributes

 f         107x97x3            31137  uint8  

由此可見,matlab讀入圖像的資料是uint8的變量存儲為 1 個位元組(8 位)的無符号整數,而matlab中數值一般采用double型(64位)進行存儲和運算,是以要先把圖像轉換為double格式的才能運算。

注意:二值圖像在matlab中具有非常重要的意義,一幅二值圖像是一個取值隻有0和1的邏輯數組。是以一個取值隻包含0和1的uint8類數組,在matlab中不認為是二值圖像,為了解決這個問題,我們使用logical函數可以把數值數組轉換為二值數組,是以,若A是一個由0和1構成的數值數組,則可以用如下的語句建立一個邏輯數組B:

>> B=logical(f);

>> whos f

 Name        Size               Bytes  Class     Attributes

 f         107x97x3            249096  double 

可以看到這時候的資料類型為double精度類型。若A中含有除了0和1以外的其他元素,則使用logical函數可以将所有非0的量變換為邏輯1。

、幾種資料類型的轉換

1.把圖像數組轉換成double精度類型

這裡用到了im2double 函數,例子如下:

>> f=im2double(f);

>> whos f

 Name        Size               Bytes  Class     Attributes

 f         107x97x3            249096  double  

可見我們已經成功的完成了資料類型的轉換。

2.将圖x數組轉換成int8類型

這裡用im2int8函數:

I =reshape(uint16(linspace(0,65535,25)),[5 5])   %建立 uint16 類的數組

I =

 5×5 uint16 矩陣

      0   13653   27306   40959   54613

   2731   16384   30037   43690   57343

   5461   19114   32768   46421   60074

   8192   21845   35498   49151   62804

  10923   24576   38229   51882   65535

I2 = im2uint8(I)          %将數組轉換為 uint8 類。

I2 =

 5×5 uint8 矩陣

    0    53   106   159   213

   11    64   117   170   223

   21    74   128   181   234

   32    85   138   191   244

   43    96   149   202   255

輸入whos檢視

>> whos I2

 Name      Size            Bytes  Class    Attributes

 I2        5x5                25  uint8  

3.将圖像數組轉換成unit16類型

用im2uint16函數:

I = reshape(linspace(0,1,20),[5 4])      %建立 double類的數組

I =

        0    0.2632    0.5263    0.7895

   0.0526    0.3158    0.5789    0.8421

   0.1053    0.3684    0.6316    0.8947

   0.1579    0.4211    0.6842    0.9474

   0.2105    0.4737    0.7368    1.0000

I2 = im2uint16(I)     %将數組轉換為 uint16 類。

I2 = 5x4 uint16 matrix

      0   17246   34492   51738

   3449   20695   37941   55187

   6898   24144   41391   58637

  10348   27594   44840   62086

  13797   31043   48289   65535

輸入whos檢視

>> whos

 Name      Size            Bytes  Class     Attributes

 I         5x4               160  double              

 I2        5x4                40  uint16 

往期 · 推薦

MATLAB繪圖中對各種屬性的控制方法(一)

MATLAB繪圖中對各種屬性的控制方法(二)

MATLAB中圖像的初步處理

更多MATLAB學習資源請加入QQ群:953314432

CNN Matlab例子RGB_MATLAB中圖像的資料類型

掃碼關注我們

更多精彩等着你

出品:Asoul水雲天課堂工作室

繼續閱讀