(translator=roro, ChineseSource=roro-20020502-9\imread.html, EnglishSource=c:\matlabr12\help\techdoc\ref\imread.html)
MATLAB Function Reference    
imread

從圖檔中讀取影像

Syntax

Description

A = imread(filename,fmt) 將檔名為 filename 之灰階或全彩的圖檔讀進變數 A中。若檔案包含灰階層次(grayscale intensity)的影像,則變數 A 為一個二維陣列。若檔案包含的是全彩(RGB)的影像,變數 A 則為三維(m-by-n-by-3)陣列。

[X,map] = imread(filename,fmt) 將檔案 filename 中的索引式(indexed)影像存入 X,而相關對應的色盤(colormap)則存入 map 中。色盤的值等比例放大或縮小至 [0,1] 的範圍。Xmap 皆為二維陣列。

[...] = imread(filename) 將會從檔案的內容來推論其檔案的格式。

filename 是一個表示圖檔檔名的字串,而 fmt 則是表示檔案格式的字串。若檔案不是存放在現行工作的目錄或是 MATLAB 的路徑,則 filename 的內容是完整的系統路徑。如果 imread 找不到檔名為 filename 的檔案,它將會去找檔名為 filename.fmt 的圖檔。但若沒有對字串 fmt 下定義,則工具盒將會從檔案的標頭檔來識別檔案的格式。

以下的表格列出 fmt 可能的值。

格式
檔案型態
'bmp'
Windows 點陣圖 (BMP)
'cur'
Windows Cursor resources (CUR)
'hdf'
Hierarchical Data Format (HDF)
'ico'
Windows 圖示 (ICO)
'jpg' or 'jpeg'
JPEG檔案交換格式 (JPEG)
'pcx'
Windows Paintbrush (PCX)
`png'
可攜式網路圖形 (PNG)
'tif' or 'tiff'
Tagged Image File Format (TIFF)
'xwd'
X Windows Dump (XWD)

Special Case Syntax:

TIFF-Specific Syntax

[...] = imread(...,idx) 從複合式影像 TIFF 檔案中讀取一張影像。idx 代表在檔案中影像出現的順序。舉例來說,若 idx 為 3,則 imread 將會讀取檔案中的第三張影像。如果省略不寫,imread 將讀取檔案中的第一張影像。

PNG-Specific Syntax

在這一段主要是探討有透明像素的 PNG 檔案。當透明像素存在時,將會被視為下列兩者之一:transparency chunk 或是 alpha channel。(PNG 檔案不能同時擁有兩者)

由 transparency chunk 定義每個被視為透明的像素,若一 8 位元的影像其在 transparency chunk 中的值為 0.5020,則所有影像中顏色值為 0.5020 的像素都會顯示透明。alpha channel 為一個存放影像中相同數值像素的陣列,其代表在影像中對應像素的透明度(透明或不透明)。

另一個關於透明度的 PNG 元件則是 background color chunk,它所定義的顏色值可用於所有的透明像素。這一段落主要探討工具盒讀 PNG 影像時會用到的 transparency chunk 或 alpha channel。

Case 1. 不輸出 alpha channel,也沒有指明所要使用的背景顏色。例如:

若 PNG 檔案包含 background color chunk,則透明像素將會和指定的背景顏色結合。

若 PNG 檔案沒有 background color chunk,當影像為灰階時,透明像素將和 0 結合(黑色);當影像為索引式影像時,將和 1 結合(色盤中的第一個顏色);當為全彩影像時,則和 [0 0 0] 結合(黑色)。

Case 2. 不輸出 alpha channel,但有指明所要使用的背景顏色。例如:

透明像素將和所指定的顏色結合。bg 依不同的檔案類型(灰階、索引式或全彩)而有不同的值。若輸入影像為索引式影像,bg 則為範圍在 [1,P] 之間的整數。P 表示色盤的長度。若輸入影像為灰階層,則 bg 為範圍在 [0,1] 之間的數。若為全彩影像,bg 則是一含有三元素的向量,其元素值分佈於 [0,1] 之間。

依工具盒的方法使用背景顏色有個例外。若你把背景設為 'none' ,則將不會有任何結合的效果。例如:

Case 3. 把 alpha channel 當成一輸出變數。舉例來說,

alpha channel 將會從影像中被分散地放置(並不像 cases 1 及 2 會被合併成一影像)。若有 alpha channel,則 imread 回傳 aplha channel 、影像及所對應的色盤。若沒有 alpha channel,alpha 則為 []。若無色盤或是灰階、全彩的影像,則變數 map 也將是空字串。

HDF-Specific Syntax

[...] = imread(...,ref) 依據關聯(reference)的號碼 ref 來讀取複合式 HDF 檔案中的影像。舉例來說,若 ref 的值為 12,imread 將會讀取其關聯號碼(reference number)為 12 的影像。(在 HDF 檔案中的關聯號碼不一定就是影像在檔案中的順序)若省略這個係數,則 imread 將會讀取檔案中的第一張影像。

CUR- and ICO-Specific Syntax

[...] = imread(...,idx) 從複合式圖示(icon)或游標(cursor)檔讀取影像。idx 表示欲讀取影像在檔案中的順序。舉例來說,若 idx 為 3,表示將讀取檔案中的第三張影像。若省略這一項,imread 將讀取檔案中的第一張影像。

[A,map,alpha] = imread(...) 回傳一交集 (AND)遮罩,可用來決定透明度的相關資訊。對游標(cursor)檔案而言,遮罩可只含有用的資料。

Format Support

下表總結可被 imread 讀取的檔案型態。

格式
不同版本
BMP
1 位元, 4 位元, 8 位元, 及 24 位元未經壓縮的影像;4 位元和 8 位元 run-length encoded (RLE) 影像。
CUR
1 位元, 4 位元, 及 8 位元未壓縮的影像。
HDF
含有或不包含對應色盤的 8 位元光柵(raster)影像;24 位元光柵(raster)影像。
ICO
1 位元, 4 位元, 和 8 位元未壓縮的影像。
JPEG
任何底層(baseline)的 JPEG 影像(8 或 24 位元)。
PCX
1 位元, 8 位元, 和 24 位元的影像。
PNG
任何包括 1 位元, 2 位元, 4 位元, 8 位元, 及 16 位元灰階影像的 PNG 檔案;8 位元及 16 位元的索引式影像;24 位元和 48 位元的全彩影像。
TIFF
任何包括 1 位元, 8 位元, 及 24 位元的底層(baseline)TIFF 影像;1 位元, 8 位元, 16 位元, 及 24 位元經包裝位元(packbits)壓縮後的影像;1 位元經 CCITT 壓縮的影像;或是 16 位元的灰階影像,16 位元的索引式影像及 48 位元的全彩影像。
XWD
1 位元和 8 位元的 ZPixmaps;XYBitmaps;1 位元的 XYPixmaps。

Class Support

imread 支援大多數的影像格式。當讀取一個檔案時,輸出 (AX) 的資料型態屬於 uint8imread 也支援每像素 16 位元的 TIFF 及 PNG 檔案;像這類的影像檔,輸出的 (A or X) 資料型態為 uint16。至於索引式影像,即使影像陣列本身屬於 uint8uint16imread 仍然會將色盤讀進 double 的陣列中。

Remarks

imread 是 MATLAB 中的一個函式。

Examples

從 TIFF 檔案中讀取第六張影像。

從 HDF 檔案中讀取第四張影像。

讀取一 24 位元的 PNG 影像,並把所有的透明(alpha channel)像素設定為紅色。

從 PNG 影像傳回 alpha channel。

把透明遮罩(transparency mask)用於 ICO 影像,並顯示出來。

See Also

double, fread, imfinfo, imwrite, uint8, uint16


 importdata imwrite