MATLAB Function Reference    
imwrite

イメージをグラフィックスファイルに書き込む

表示

詳細

imwrite(A,filename,fmt) は、A のイメージをfmtで指定したフォーマットで、 filename に書き込みます。A は、グレースケールイメージ(M 行 N 列)、または、トゥルーカラーイメージ(M*N*3)のどちらかです。A が、uint8、または、uint16 の場合、 imwrite は、配列の中の実際の値をファイルに書き込みます。A が、クラスdouble の場合、imwrite は、uint8(round(255*A)) を使って、書き込む前に、配列の中の値を再スケーリングします。この演算は、[0,1] のレンジの中の浮動小数点数を[0,255] の範囲の8ビット整数に変換します。

imwrite(X,map,filename,fmt) は、fmt で指定したフォーマットで、X にインデックスイメージを、filename に関連したカラーマップ map を書き込みます。X が、クラス uint8 、または、uint16 の場合、imwrite は、配列内の実際の値をファイルに書き込みます。X が、クラス double の場合、imwrite は、uint8(X-1) を使って、書き込む前に、配列内の値にオフセットを適用します(例外に関しては、つぎの注意を参照してください)。map は、クラス double のMATLAB のカラーマップである必要があります。imwrite は、uint8(round(255*map)) を使って、map の中の値を再スケールします。ほとんどのイメージファイルフォーマットでは、256要素以上のカラーマップをサポートしていないことに注意してください。

imwrite(...,filename) は、イメージをファイル名の拡張子から使用するフォーマットを決定し、filename に書き込みます。拡張子は、fmt に対して、使用可能な値の一つである必要があります。

imwrite(...,Param1,Val1,Param2,Val2...) は、出力ファイルの種々の特性をコントロールするパラメータを指定します。パラメータの設定は、カレントでは、HDF, PNG, JPEG, TIFF に対して可能です。たとえば、JPEG ファイルを記述する場合、JPEG 圧縮の"質"を設定します。各フォーマットに対して、利用可能なパラメータリストについては、つぎのテーブルを参照してください。

filename は、出力ファイルの名前を指定する文字列で、fmt は、ファイルのフォーマットを指定する文字列です。

つぎのテーブルは、fmt に対して、使用可能な値のリストです。

フォーマット
ファイルタイプ
'bmp'
Windows Bitmap (BMP)
'hdf'
Hierarchical Data Format (HDF)
'jpg' or 'jpeg'
Joint Photographic Experts Group (JPEG)
'pcx'
Windows Paintbrush (PCX)
'png'
Portable Network Graphics (PNG)
'tif' or 'tiff'
Tagged Image File Format (TIFF)
'xwd'
X Windows Dump (XWD)

つぎのテーブルは、HDF ファイルで使用可能なパラメータを記述しています。

パラメータ

デフォルト
'Compression'

つぎの文字列の一つ:'none' (デフォルト)、'rle', 'jpeg'. 'rle' は、グレースケール、インデックス付きイメージに対してのみ、有効です。'jpeg' は、グレースケール、RGB イメージに対してのみ、有効です。

'rle'
'Quality'
0から100までの間の数:このパラメータは、'Compression' が、 'jpeg' の場合のみ、適用されます。
より高い数字は、高精度(圧縮によりイメージの劣化が少ない)を意味し、結果のファイルサイズが、より大きくなります。
75
'WriteMode'
つぎの文字列の一つ:'overwrite' (デフォルト)、または、 'append'
'overwrite'

つぎのテーブルは、JPEG ファイルに対して、使用可能なパラメータを記述します。

パラメータ

デフォルト
'Quality'
0から100までの間の数:このパラメータは、'Compression' が、 'jpeg' の場合のみ、適用されます。
より高い数字は、高精度(圧縮によりイメージの劣化が少ない)を意味し、結果のファイルサイズが、より大きくなります。
75

つぎのテーブルは、TIFF ファイルに対して、使用可能なパラメータを記述します。

パラメータ

デフォルト
'Compression'
つぎの文字列の一つ: 'none', 'packbits', 'ccitt', 'fax3', 'fax4''ccitt', 'fax3', 'fax4' 圧縮手法は、バイナリイメージのみに対して有効です。

バイナリイメージの場合、'ccitt'; バイナリイメージでない場合、'packbits'

'Description'
文字列:imfinfo で戻されるImageDescription フィールドに入力

'Resolution'
XResolution と YResolution を含む2要素ベクトル、または、二つの解像度を共に示すスカラ値
72
'WriteMode'
つぎの文字列の一つ: 'overwrite'、または、'append'
'overwrite'

つぎのテーブルは、PNG ファイルに対して、利用可能なパラメータを記述します。

パラメータ

デフォルト
'Author'
文字列

'Description'
文字列

'Copyright'
文字列

'CreationTime'
文字列

'Software'
文字列

'Disclaimer'
文字列

'Warning'
文字列

'Source'
文字列

'Comment'
文字列

'InterlaceType'
'none'、または、'adam7'のいずれか
'none'
'BitDepth'
希望するビット深さを示すスカラ値。グレースケールイメージに対して、1, 2, 4, 8, 16 のいずれかを設定。
alphaチャンネルをもつグレースケールイメージに対して、8、または、16を設定。インデックス付きイメージに対しては、1、2、4、8のいずれかを設定。トゥルーカラーイメージに関しては、alpha チャンネルをもつ、もたないに関わらず、8、または、16を設定。
イメージが、double、または、uint8 のいずれかの場合、ピクセルあたり、8ビット。
イメージが uint16 の場合、ピクセルあたり16ビット
イメージが論理値の場合、ピクセルあたり 1 ビット
'Transparency'

この値は、Alphaチャンネルが使用されない場合にのみ、透明度に関する情報を示すために使われます。値を設定して、透明度を考えるピクセルを示します(イメージがカラーマップを使用する場合、この値は、カラーマップへのインデックス番号を表すものです)。

インデックス付きイメージ:レンジ [0,1] の中の Q-要素ベクトル。Q は、カラーマップ長より短く、各値が、対応するカラーマップ要素に関連した透明度を示すものでなければなりません。多くの場合は、Q = 1 です。

グレースケールイメージに対して、は、レンジ [0,1] の中に入るスカラ値。値は、透明度を考えるグレースケールカラーを示しています。

トゥルーイメージに対しては、[0,1 ]に入る3要素ベクトル。 値は、透明度を考えるトゥルーカラーを示しています。

同時に、'Transparency''Alpha' を指定することはできません。


'Background'
値は、透明度を表すピクセルを組み合わせる場合に使用するバックグランドカラーを指定します。インデックス付きイメージに対して、[1,P] の中の整数になります。P は、カラーマップ長です、グレースケールイメージに対して、レンジ [0,1] 内のスカラ値で、トゥルカラーイメージに対して、3要素ベクトルは、レンジ[0,1]の中の数です。

'Gamma'
ファイルガンマを示す非負のスカラ


'Chromaticities'
参照白点と基本の色彩を指定する8要素ベクトル [wx wy rx ry gx gy bx by]

'XResolution'
水平方向に単位あたりのピクセル数を示すスカラ

'YResolution'
垂直方向に単位あたりのピクセル数を示すスカラ

'ResolutionUnit'
'unknown'、または、'meter'のいずれか

'Alpha'
個々に、各ピクセルの透明度を示す行列。行と列の次元は、データ配列と同じです。これらは、 uint8uint16double のいずれでも可能です。double の場合、値は、レンジ [0,1] に入ります。

'SignificantBits'
データ配列の中で、意味をもつビット数の数を指定するスカラ、または、ベクトル。値は、レンジ[1,BitDepth] に入る必要があります。
インデックス付きイメージの場合は、3要素ベクトルです。グレースケールイメージの場合はスカラです。Alpha チャンネルをもつグレースケールイメージの場合は、2要素ベクトルです。トゥルーカラーイメージの場合は、3要素ベクトルです。Alpha チャンネルをもつトゥルーカラーイメージの場合は、4要素ベクトルです。

これらの PNG パラメータに加えて、キーワードに対して、PNG 仕様を満足するパラメータ名を使うこともできます。これらには、印刷可能なキャラクタで、80キャラクタ以内で、スペースを前や後ろには付けられません。これらのユーザ設定のパラメータに対応する値は、ラインフィード以外のコントロールキャラクタを含まない文字列です。

フォーマットサポート

このテーブルは、imwrite が記述可能なイメージのタイプをまとめています。

フォーマット
相違点
BMP
関連したカラーマップをもつ8ビット非圧縮イメージ
24-ビット非圧縮イメージ
HDF
関連したカラーマップをもつ、または、もたない、8ビットラスタイメージデータセット
24-ビットラスタイメージデータセット;非圧縮、または、RLE、または、JPEG 圧縮
JPEG
ベースライン JPEG イメージ(8、または、24-ビット)
注意: インデックス付きイメージは、JPEG ファイルに書き出す前に、RGB に変換します。これは、JPEG フォーマットが、インデックス付きイメージをサポートしていないためです。
PCX
8-ビットイメージ
PNG
1-ビット, 2-ビット, 4-ビット, 8-ビット, 16-ビット グレースケールイメージ;
Alpha チャンネル付き 8-ビット と 16-ビット グレースケールイメージ
1-ビット, 2-ビット, 4-ビット, 8-ビット インデックス付きイメージ;
24-ビット と 48-ビット トゥルーカラーイメージ(Alpha チャンネル付き、または、なし)
TIFF
非圧縮の 1-ビット, 8-ビット, 24-ビットイメージを含むベースライン TIFF イメージ; パックビット圧縮付き、1-ビット, 8-ビット, 24-ビットイメージ;
CCITT 1D, Group 3, Group 4 圧縮を使った 1-ビットイメージ
XWD
8-ビット ZPixmaps

クラスサポート

多くのサポートしているイメージファイルフォーマットは、uint8 データをストアします。PNG と TIFF は、付加的に、uint16 データもサポートしています。グレースケール、RGB イメージに対して、データ配列がdoubleの場合、仮定したダイナミックレンジは、[0,1]になります。データ配列は、uint8 として書き込まれる前に、255で自動的にスケーリングされます。 データ配列が、uint8、または、uint16 (PNG と TIFF のみ)のいずれかの場合、uint8、または、uint16のどちらかとして、スケーリングしないで書き出されます。

インデックス付きイメージに対して、インデックス配列が、double の場合、インデックスは、各要素から1を引くことで、ゼロベースのものに変換します。そして、uint8 として、書き出されます。インデックス配列が、uint8、または、uint16 (PNG と TIFF のみ)の場合、uint8、または、uint16 として、各々、変更しないで、書き出されます。PNG ファイルを書き出す場合、'BitDepth' パラメータを使って、この挙動を書き換えることができます。詳細は、つぎのimwrite のリファレンスの中の PNG テーブルを参照してください。

注意

imwrite は、MATLAB の関数です。

例題

つぎの例題は、インデックス付きイメージ X とそのカラーマップ map を、既存の非圧縮マルチページ HDF ファイル flowers.hdf に加えます。

参考

fwrite, imfinfo, imread


 imread ind2rgb