19-4 v仵蛌讀PgJ

MATLAB 的 imread 指令可用於讀取影像檔案,而 imwrite 則可用於寫入影像檔案。這兩個指令可以處理的影像格式有下列幾種:

影像檔案格式副檔名相關字串
微軟視窗的 Bitmap bmp 'bmp'
階層式資料格式
(Hierarchical Data Format)
hdf 'hdf'
Joint Photographic Expert Group jpg 或 jpge 'jpg' 或 'jpeg'
微軟視窗的 Paintbrush pcx 'pcx'
可攜式網路圖形
(Portable Network Graphics)
png 'png'
標記式影像檔案格式
(Tagged Image File Format)
tiff 'tif' 或 'tiff'
X視窗傾印
(X Windows Dump)
xwd 'xwd'
圖形交換格式
(Graphic Interchange Format)
gif 'gif'

imread 指令可以讀取上述格式的影像檔案,並進行必要之轉換,如下:

  1. 對於強度影像,imread 將資料以 uint8 的矩陣(大小為 m×n)傳回。
  2. 對於索引影像,imread 將資料以 uint8 的矩陣(大小為 m×n)傳回,並同時傳回一個雙精準的色盤矩陣,其每個元素值介於[0,1]。
  3. 對於全彩矩陣,imread 將資料以 uint8 的矩陣(大小為 m×n×3)傳回。

例如,imread 可讀出下列全彩影像:

Example 1: 19-影像顯示與讀寫/imread01.mRGB = imread('simulinkteam.jpg'); image(RGB); class(RGB) ans = uint8

Hint
上圖事實上是 MathWorks 公司裡面的 Simulink發展成員。在 MATLAB 5.3,如果您有安裝 Simulink,這個檔案就在 {MATLAB 根目錄}\toolbox\simulink 之下。

imwrite 指令可將資料寫成影像檔如下:

Example 2: 19-影像顯示與讀寫/imwrite01.mload clown.mat imwrite(X, map, 'myClown.jpg'); !start myClown.jpg

上述最後一列敘述將會呼叫作業系統下的應用程式來開啟 myClown.jpg 檔案。(作業系統若是 Windows,則用來開啟 myClown.jpg 的應用程式很可能是 Windows 相片檢視器。)

Hint
對於不同的檔案格式,imread 及 imwrite 的用法有時候需加上額外參數,請詳見線上說明。

imfinfo 指令可用於傳回影像檔案的各項資訊,而且對於不同的檔案格式,imfinfo 傳回的資訊項目可能有所不同,例如:

Example 3: 19-影像顯示與讀寫/imfinfo01.minfo1=imfinfo('simulinkteam.jpg') info2=imfinfo('sbtree.gif') info1 = Filename: 'D:\users\jang\books\matlabProgramming4beginner\example\19-影像顯示與讀寫\simulinkteam.jpg' FileModDate: '28-Mar-2000 17:30:36' FileSize: 24071 Format: 'jpg' FormatVersion: '' Width: 234 Height: 126 BitDepth: 24 ColorType: 'truecolor' FormatSignature: '' NumberOfSamples: 3 CodingMethod: 'Huffman' CodingProcess: 'Sequential' Comment: {'CREATOR: XV Version 3.10a Rev: 12/29/94 Quality = 95, Smoothing = 0 '} info2 = Filename: 'D:\users\jang\books\matlabProgramming4beginner\example\19-影像顯示與讀寫\sbtree.gif' FileModDate: '10-Sep-1997 14:53:14' FileSize: 7121 Format: 'GIF' FormatVersion: '87a' Left: 1 Top: 1 Width: 99 Height: 80 BitDepth: 8 ColorType: 'indexed' FormatSignature: 'GIF87a' BackgroundColor: 1 AspectRatio: 0 ColorTable: [256x3 double] Interlaced: 'no'

常見的欄位可說明如下:

讀者可將 clown 資料存入 BMP 檔案,再用 imfinfo 讀出其資訊,以比較其差異。


MATLAB程式設計:入門篇