如果你愛我們,就點選上方“藍字”關注我們吧!!
、幾種圖像的資料類型
一
表中羅列了常見的資料類型及其含義:
輸入圖像,指定為數值标量、向量、矩陣或多元數組。
①
如果 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
掃碼關注我們
更多精彩等着你
出品:Asoul水雲天課堂工作室