(translator=roro, ChineseSource=roro-20020502-9\imwrite.html, EnglishSource=c:\matlabr12\help\techdoc\ref\imwrite.html)
MATLAB Function Reference |
|
imwrite
將影像寫入圖檔中
Syntax
imwrite(A,filename,fmt
)
imwrite(X,map,filename,fmt
)
imwrite(...,filename)
imwrite(...,Param1,Val1,Param2,Val2...)
Description
imwrite(A,filename,
fmt
)
依照格式 fmt
將在 A
中的影像寫入檔名為 filename
的檔案。A
可能是灰階的影像(M-by-N)或全彩的影像(M-by-N-by-3)。若 A
屬於 uint8
或 uint16
,imwrite
會將陣列中實際的值寫入檔案。若 A
屬於 double
,則 imwrite
將會在寫進檔案前先做 uint8(round(255*A))
的動作。這個式子是將原本範圍在 [0,1] 的浮點數轉換成範圍在 [0,255] 的 8 位元整數。
imwrite(X,map,filename,
fmt
)
將 X
中的索引式影像(indexed image)和存放在 map
對應的色盤(colormap)依格式 fmt
寫入檔名為 filename
的檔案中。若 X
屬於 uint8
或 uint16
,imwrite
會將陣列中實際的值寫入檔案。若 X
屬於 double
則 imwrite
會在寫入檔案前以 uint8(X-1)
公式作調整。(下面的註解中針對不同的情形有其他的用法)map
是 MATLAB 中 double
的色盤;imwrite
使用式子 uint8(round(255*map))
來調整色盤 map
中的值。注意:大多數的影像檔案不支援超過 256 色的色盤。
註釋
若影像為 double 格式,並且用 16 bbp 位元深度(bit depth)的 PNG 格式當做輸出格式,則陣列的值將會依 uint16(X-1) 的公式來做調整。
|
imwrite(...,filename)
將影像寫入檔案 filename
中,並依 fmt
來推論檔案的格式。
imwrite(...,Param1,Val1,Param2,Val2...)
依照參數來控制輸出檔案中不同的數值。HDF, PNG, JPEG, 及 TIFF 檔案可使用參數的設定功能。舉例來說,如果想寫入一 JPEG 檔案,則可以設定 JPEG 檔案壓縮的品質。各格式可用的參數列於下表。
filename
為輸出檔的檔名;而 fmt
則是表示檔案的格式,兩者皆以字串的型態來表示。
此表列出 fmt
可能的值。
格式
|
檔案類型
|
'bmp'
|
Windows 點陣圖 (BMP)
|
'hdf'
|
Hierarchical Data Format (HDF)
|
'jpg' or 'jpeg'
|
JPEG 圖形交換格式 (JPEG)
|
'pcx'
|
Windows Paintbrush (PCX)
|
'png'
|
網路可攜式圖形 (PNG)
|
'tif' or 'tiff'
|
Tagged Image File Format (TIFF)
|
'xwd'
|
X Windows Dump (XWD)
|
此表格列出 HDF 檔案可用的參數。
參數
|
數值
|
HDF 預設值
|
'Compression'
|
下列三者之一:'none' (預設值), 'rle' , 'jpeg'. 'rle' 用在灰階或索引式影像,'jpeg' 則是用於灰階或全彩影像。
|
'rle'
|
'Quality'
|
在 0 到 100 之間的數字;當 'Compression' 為 'jpeg' 時,這個參數才會出現。 數字愈大就代表品質愈好,不過相對地,檔案的的容量也會比較大。
|
75
|
'WriteMode'
|
下列兩者之一:'overwrite' (預設值), 或 'append'.
|
'overwrite'
|
此表格列出 JPEG 檔案可用的參數。
參數
|
數值
|
JPEG 預設值
|
'Quality'
|
在 0 到 100 之間的數字;數字愈大就代表品質愈好,不過相對地,檔案的的容量也會比較大。
|
75
|
此表格列出 TIFF 檔案可用的參數。
參數
|
數值
|
TIFF 預設值
|
'Compression'
|
下列幾項之一:'none' , 'packbits' , 'ccitt' , 'fax3' , 或 'fax4' 。'ccitt' , 'fax3' , 和 'fax4' 只能用在二位元的影像檔案。
|
對於二位元的影像檔案,使用 'ccitt' 為預設值;否則用 'packbits' 為預設值。
|
'Description'
|
任何字串;當使用 imfinfo 指令時會在回傳值中的 ImageDescription 欄位出現。
|
空字串
|
'Resolution'
|
一個兩元素的向量,其分別代表水平及垂直方向每單位的像素。或是以一個值來表示兩者的解析結果。
|
72
|
'WriteMode'
|
下列兩者之一:'overwrite' 或 'append'
|
'overwrite'
|
此表格列出 PNG 檔案可用的參數。
參數
|
數值
|
PNG 預設值
|
'Author'
|
字串
|
空字串
|
'Description'
|
字串
|
空字串
|
'Copyright'
|
字串
|
空字串
|
'CreationTime'
|
字串
|
空字串
|
'Software'
|
字串
|
空字串
|
'Disclaimer'
|
字串
|
空字串
|
'Warning'
|
字串
|
空字串
|
'Source'
|
字串
|
空字串
|
'Comment'
|
字串
|
空字串
|
'InterlaceType'
|
'none' 或 'adam7'
|
'none'
|
'BitDepth'
|
以一個數字表示所期望的位元深度(bit depth)。若是灰階影像,則可能為 1, 2, 4, 8, 或 16。 若是有 alpha channel 的灰階影像則可能為 8 或 16。若是索引式圖像則為 1, 2, 4, 或 8。若是全彩影像則為 8 或 16。
|
若影像屬於 double 或 uint8,則預設值為每像素 8 位元。 若影像屬於 uint16,則預設值為每像素 16 位元。 若影像屬於 logical,則預設值為每像素 1 位元。
|
'Transparency'
|
在沒有使用 alpha channel 時,這個值表示透明度(transparency)的資訊。設定的值代表所應被視為透明的像素。(若影像有使用色盤,則這個值表示色盤的索引值)
若為索引式影像:含有 Q 個元素,範圍在 [0,1] 之間的向量,Q 不會比色盤的長度還長,而每個值都對應至色盤的值,在大多數的範例中,Q=1 。
若為灰階影像:一個範圍在 [0,1] 之間的數。這個值表示灰階層中的某種顏色將被視為透明。
若為全彩影像:含有三個元素,範圍在 [0,1] 之間的向量。這個值表示全彩中的某種顏色將被視為透明。
你不能同時設定 'Transparency' 和 'Alpha' 。
|
無
|
'Background'
|
當合成透明像素時,這個值用來表示背景的顏色。若為索引式影像:範圍 [1,P ] 之間的一個數字,P 表示色盤的長度。若為灰階影像:範圍 [0,1] 之間的一個數字。若為全彩影像:三個元素的向量,範圍分佈於 [0,1] 之間。
|
無
|
'Gamma'
|
一個表示檔案 gamma 的數,其值大於等於零。
|
無
|
'Chromaticities'
|
一個含有八個元素 [wx wy rx ry gx gy bx by] 的向量。表示 the reference white point 和主要的色像差(chromaticities)。
|
無
|
'XResolution'
|
在水平方向每一單位有多少像素。
|
無
|
'YResolution'
|
在垂直方向每一單位有多少像素。
|
無
|
'ResolutionUnit'
|
'unknown ' 或 'meter '
|
無
|
'Alpha'
|
以一個陣列來表示每個像素的透明度。如同一般的資料陣列,其行、列的單位可為 uint8 , uint16 , 或 double ,陣列中元素的範圍在 [0,1] 之間。
|
無
|
'SignificantBits'
|
用數字或向量來表示在資料陣列中有多少位元應被視為有意義的(significant);數值的範圍在 [1,BitDepth ] 之間。 若為索引式影像:一個三元素的向量。若為灰階影像:一個數字。若含有 alpha channel 的灰階影像:為一二元素的向量。若為全彩影像:一三元素的向量。若含有 alpha channel 的全彩影像:一四元素向量。
|
無
|
除了上述這些 PNG 的參數外,你可以使用任何參數的名字,包括可印出的字元和不為起始的空白字元,來達到 PNG 對關鍵字的辨別。而使用者定義的參數必須是字串,並且沒有除了 linefeed 之外的任何控制字元。
Format Support
此表格對 imwrite
可寫入的影像格式作個總結。
格式
|
不同版本
|
BMP
|
8 位元有相關對應色盤的無壓縮影像; 24 位元的無壓縮影像。
|
HDF
|
8 位元光柵(raster)影像, 24 位元光柵(raster)影像;無壓縮過或是已壓縮的 RLE 或 JPEG。
|
JPEG
|
底層(Baseline)JPEG 影像(8 或 24 位元)。 註釋: 在寫成 JPEG 檔案之前,索引式影像會先轉成 RGB,因為 JPEG 格式並不支援索引式影像。
|
PCX
|
8 位元影像。
|
PNG
|
1 位元, 2 位元, 4 位元, 8 位元, 和 16 位元的灰階影像; 8 位元和 16 位元有 alpha channels 的灰階影像; 1 位元, 2 位元, 4 位元, 和 8 位元的索引式影像; 24 位元和 48 位元的全彩影像。
|
TIFF
|
底層(Baseline)TIFF 影像,包括 1 位元, 8 位元, 及 24 位元未壓縮的影像; 1 位元, 8 位元, 及 24 位元經包裝位元(packbits)壓縮的影像; 1 位元經 CCITT 1D, Group 3, 及 Group 4 壓縮的影像。
|
XWD
|
8 位元 ZPixmaps。
|
Class Support
大多數所支援的影像檔案格式都屬於 uint8
的資料。PNG 及 TIFF 額外地支援 uint16
的資料。對於灰階及全彩的影像,若資料陣列的資料型態為 double
,則預設動態的範為在 [0,1] 之間。當資料要轉為 uint8
時,資料陣列會自動地乘上 255 倍。若其原本就為 uint8
或 uint16
(只有 PNG 和 TIFF 格式),則會以原來的形式寫入。
註釋
若將一 double 或 uint8 資料寫入 PNG 或 TIFF 檔案中,它將會自動判斷為二元影像,並且將其位元深度(bit depth)設為 1。
|
對於索引式影像,若索引陣列的型態為 double
,則索引值為先轉為以零為基準的索引值,也就是將所有的索引值減去 1,然後再將其轉為 uint8
。若索引陣列的型態為 uint8
或 uint16
(只有PNG 及 TIFF),則其將不會改變其原先的值。當寫入 PNG 檔案時,可以 override this behavior with the 'BitDepth'
參數;詳情請見在此 imwrite
指令中的 PNG 表格。
Remarks
imwrite
是 MATLAB 中的一個函式。
Example
將索引式影像 X
和其色盤 map
添附一未經壓縮在檔名為 flowers.hdf
的複合式 HDF 檔案。
imwrite(X,map,'flowers.hdf','Compression','none',...
'WriteMode','append')
See Also
fwrite
, imfinfo
, imread
| imread | | ind2rgb | |