Main Content

imread

グラフィックス ファイルからイメージを読み込む

説明

A = imread(filename) は、filename で指定されたファイルの形式をコンテンツから推定して、そのファイルからイメージを読み取ります。filename が複数のイメージを含むファイルである場合、imread はファイルの最初のイメージを読み取ります。

A = imread(filename,fmt) ではさらに、fmt で示す標準のファイル拡張子でファイルの形式を指定します。filename で指定された名前のファイルを見つけることができない場合、imread は名前が filename.fmt のファイルを検索します。

A = imread(___,idx) は、複数のイメージを含むファイルから、指定された 1 つ以上のイメージを読み取ります。この構文は、GIF、PGM、PBM、PPM、CUR、ICO、TIF、SVS および HDF4 のファイルにのみ適用されます。filename の入力は必須であり、オプションで fmt を指定できます。

A = imread(___,Name,Value) は、前述の構文の入力引数のいずれかに加え、1 つ以上の名前と値のペアの引数を使用して、形式に固有のオプションを指定します。

[A,map] = imread(___)filename のインデックス付きイメージを A、その関連カラーマップを map に読み取ります。イメージ ファイルのカラーマップ値は、自動的に、範囲 [0,1] に再スケーリングされます。

[A,map,transparency] = imread(___) はさらに、イメージの透明度を返します。この構文は、PNG、CUR および ICO のファイルにのみ適用されます。PNG ファイルの場合、transparency はアルファ チャネルです (存在する場合)。CUR および ICO のファイルの場合、これは AND (不透明性) マスクです。

すべて折りたたむ

サンプル イメージを読み取ります。

A = imread('ngc6543a.jpg');

imread は、650×600×3 の配列 A を返します。

イメージを表示します。

image(A)

Figure contains an axes object. The axes object contains an object of type image.

サンプルのインデックス付きイメージ ファイル corn.tif の最初のイメージを読み取ります。

[X,cmap] = imread('corn.tif');

インデックス付きイメージ X は、uint8 型の 415 行 312 列の配列です。カラーマップ cmapdouble 型の 256 行 3 列の行列であるため、インデックス付きイメージには 256 色あります。イメージを表示します。

imshow(X,cmap)

Figure contains an axes object. The axes object contains an object of type image.

インデックス付きイメージを RGB イメージに変換します。結果は double 型の 415×312×3 の配列になります。

RGB = ind2rgb(X,cmap);

RGB イメージの値が範囲 [0, 1] 内にあることを確認します。

disp(['Range of RGB image is [',num2str(min(RGB(:))),', ',num2str(max(RGB(:))),'].'])
Range of RGB image is [0.0078431, 0.97647].

サンプル ファイル corn.tif の 3 番目のイメージを読み取ります。

[X,map] = imread('corn.tif',3);

サンプル イメージ peppers.png のアルファ チャネルを返します。

[X,map,alpha] = imread('peppers.png');
whos alpha
  Name       Size            Bytes  Class     Attributes

  alpha      0x0                 0  double              

アルファ チャネルが存在しないため、alpha は空です。

サンプル イメージ corn.tif の特定のピクセル領域を読み取ります。

読み取る領域の境界を示すベクトルの cell 配列で 'PixelRegion' パラメーターを指定します。最初のベクトルでは読み取る行の範囲を指定し、2 番目のベクトルでは読み取る列の範囲を指定します。

A = imread('corn.tif','PixelRegion',{[1,2],[2,5]});

imread は、corn.tif から行 1 ~ 2、列 2 ~ 5 のイメージ データを読み取り、2 行 4 列の配列 A を返します。

入力引数

すべて折りたたむ

グラフィックス ファイルの名前。文字ベクトルまたは string スカラーとして指定します。

ファイルの場所によって、filename は次のいずれかの形式をとります。

場所

形式

現在のフォルダー、または MATLAB® パス上のフォルダー

ファイル名を filename で指定します。

例: 'myImage.jpg'

フォルダー内のファイル

ファイルが現在のフォルダーまたは MATLAB パス上のフォルダーにない場合は、絶対パス名または相対パス名を指定します。

例: 'C:\myFolder\myImage.ext'

例: '\imgDir\myImage.ext'

URL

ファイルがインターネット URL にある場合、filename には http:// などのプロトコル タイプが含まれていなければなりません。

例: 'http://hostname/path_to_file/my_image.jpg'

リモートの場所

リモートの場所に保存されたファイルの場合、filename は次の形式の Uniform Resource Locator (URL) として指定されたファイルの絶対パスを含まなければなりません。

scheme_name://path_to_file/my_file.ext

リモートの場所に基づいて、scheme_name には次の表の値のいずれかを指定できます。

リモートの場所scheme_name
Amazon S3™s3
Windows Azure® Blob Storagewasb, wasbs
HDFS™hdfs

詳細については、リモート データの操作を参照してください。

例: 's3://bucketname/path_to_file/my_image.jpg'

それぞれのファイルの種類でサポートされるビット深度、圧縮方式および色空間は、アルゴリズムを参照してください。

データ型: char | string

イメージ形式。標準のファイル拡張子を示す文字ベクトルまたは string スカラーとして指定します。サポートする形式とそのファイル拡張子の一覧を表示するには、imformats を呼び出します。

例: 'png'

データ型: char | string

読み取るイメージ。整数スカラー、GIF ファイルの場合は整数ベクトルとして指定します。たとえば、idx が 3 の場合、関数 imread は、ファイルの 3 番目のイメージを返します。GIF ファイルで idx1:5 の場合、imread は最初の 5 フレームのみを返します。引数 idx は、複数のイメージを含む GIF、CUR、ICO および HDF4 のファイルでのみサポートされています。

1 つの GIF ファイルから複数のフレームを読み取る場合は、idx をフレームのベクトルとして指定するか、名前と値のペアの引数 'Frames','all' を使用します。GIF ファイルの構造的な仕組みにより、これらの構文を使用すると、ループ内で imread を呼び出すよりも高速のパフォーマンスが得られます。

HDF4 ファイルの場合、idx は読み取るイメージの参照番号に対応します。参照番号は、必ずしもファイル内のイメージの順番と対応しません。関数 imfinfo を使用すると、イメージの順番と参照番号を対応付けることができます。

例: 3

データ型: double

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: 'Index',5 は、TIFF ファイルの 5 番目のイメージを読み取ります。

GIF ファイル

すべて折りたたむ

読み取るフレーム。'Frames' と、正の整数、整数ベクトルまたは 'all' からなるコンマ区切りのペアとして指定します。たとえば、3 を指定した場合、imread はファイルの 3 番目のフレームを読み取ります。'all' を指定した場合、imread はすべてのフレームをファイル内の順序で読み取って返します。

例: 'frames',5

JPEG 2000 ファイル

すべて折りたたむ

読み取るサブイメージ。'PixelRegion' と、{rows,cols} の形式をもつ cell 配列とで構成されるコンマ区切りのペアとして指定します。rows の入力は、読み取る行の範囲を指定します。cols の入力は、読み取る列の範囲を指定します。rowscols は両方とも、1 ベースのインデックスを含む 2 要素ベクトルでなければなりません。たとえば、'PixelRegion',{[1 2],[3 4]} は、イメージ データ内の第 1 行と第 2 行、第 3 列と第 4 列で囲まれたサブイメージを読み取ります。'ReductionLevel' の値が 0 より大きい場合、rowscols がサブイメージの座標です。

例: 'PixelRegion',{[1 100],[4 500]}

イメージ解像度の低減。'ReductionLevel' と非負の整数で構成されるコンマ区切りのペアとして指定します。低減レベルが L の場合、イメージの解像度は 2^L の係数で低減されます。低減レベルは、関数 imfinfo の出力の 'WaveletDecompositionLevels' フィールドで指定された分解レベルの総数によって制限されます。

例: 'ReductionLevel',5

データ型: single | double

MATLAB 7.9 (R2009b) 以前との互換性。'V79Compatible' と、true または false のいずれかとで構成されるコンマ区切りのペアとして指定します。true を指定した場合、返されるグレースケールまたは RGB のイメージは、旧バージョンの imread (MATLAB 7.9 (R2009b) 以前) と互換性をもちます。

例: 'V79Compatible',true

データ型: logical

PNG ファイル

すべて折りたたむ

背景色。'none'、整数、あるいは整数の 3 要素ベクトルとして指定します。BackgroundColor'none' の場合、imread は合成を実行しません。それ以外の場合、imread は透明ピクセルに背景色をブレンドします。

  • 入力イメージがインデックス付きの場合、BackgroundColor の値は、範囲 [1,P] の整数でなければなりません。ここで、P は、カラーマップの長さです。

  • 入力イメージがグレースケールの場合、BackgroundColor の値は、範囲 [0,1] の整数でなければなりません

  • 入力イメージが RGB の場合、BackgroundColor の値は範囲 [0,1] の 3 要素ベクトルでなければなりません。

BackgroundColor の既定値は、出力引数 transparency の有無およびイメージの種類によって異なります。

  • 出力引数 transparency を要求した場合、BackgroundColor の既定値は 'none' です。

  • transparency の出力を要求せず、PNG ファイルに背景色チャンクが含まれる場合、この色は BackgroundColor の既定値になります。

  • transparency の出力を要求せず、ファイルに背景色チャンクが含まれない場合、BackgroundColor の既定値は、インデックス付きイメージでは 1、グレースケール イメージでは 0、トゥルーカラー (RGB) イメージでは [0 0 0] になります。

TIFF ファイル

すべて折りたたむ

読み取るイメージ。'Index' と正の整数で構成されるコンマ区切りのペアとして指定します。たとえば、Index の値が 3 の場合、imread はファイルの 3 番目のイメージを読み取ります。

データ型: single | double

イメージに関する情報。'Info' と、関数 imfinfo から返された構造体配列とで構成されるコンマ区切りのペアとして指定します。名前と値のペアの引数 Info を使用すると、複数のイメージを含む TIFF ファイルから imread がより高速にイメージを検出できるようになります。

データ型: struct

領域の境界。'PixelRegion' と、{rows,cols} の形式をもつ cell 配列とで構成されるコンマ区切りのペアとして指定します。rows の入力は、読み取る行の範囲を指定します。cols の入力は、読み取る列の範囲を指定します。rowscols は、1 ベースのインデックスをもつ 2 要素ベクトルまたは 3 要素ベクトルのいずれかでなければなりません。読み取りの最初と最後の行または列は、2 要素ベクトルで指定します。たとえば、'PixelRegion',{[1 2],[3 4]} は、イメージ データ内の第 1 行と第 2 行、第 3 列と第 4 列で囲まれた領域を読み取ります。

3 要素ベクトルは、[start increment stop] の形式でなければなりません。ここで、start は読み取る最初の行または列、increment は増分値、stop は読み取る最後の行または列です。この構文を使用すると、イメージのダウンサンプリングができます。たとえば、'PixelRegion',{[1 2 10],[4 3 12]} は、第 1 行と第 10 行、第 4 列と第 12 列で囲まれた領域を読み取り、垂直方向は 2 ピクセルごと、水平方向は 3 ピクセルごとにデータをサンプリングします。

例: 'PixelRegion',{[1 100],[4 500]}

データ型: cell

出力引数

すべて折りたたむ

イメージ データ。配列として返されます。

  • ファイルにグレースケール イメージが含まれる場合、A は mn 列の配列です。

  • ファイルにインデックス付きイメージが含まれる場合、A は map 内の色のインデックスに対応するインデックス値からなる mn 列の配列です。

  • ファイルにトゥルーカラー イメージが含まれる場合、A は m×n×3 の配列です。

  • ファイルが TIFF ファイルで、CMYK 色空間を使用するカラー イメージを含む場合、A は m ×n×4 の配列です。

A のクラスは、イメージの形式と、イメージ データのビット深度によって異なります。詳細については、アルゴリズムを参照してください。

A 内のインデックス付きイメージ データに関連付けられたカラーマップ。クラス doublem 行 3 列の行列として返されます。

透明度の情報。行列として返されます。PNG ファイルの場合、transparency はアルファ チャネルです (存在する場合)。アルファ チャネルが存在しない場合や、名前と値のペアの引数 'BackgroundColor' を指定した場合、transparency は空になります。CUR および ICO のファイルの場合、transparency は AND マスクです。カーソル ファイルの場合、このマスクには使用可能なデータのみが含まれることがあります。

詳細

すべて折りたたむ

ビット深度

ビット深度は、各イメージのピクセルを表すために使われるビット数です。

ビット深度は、サンプル単位のビットとピクセル単位のサンプルを乗算することで計算されます。そのため、各色要素 (またはサンプル) に 8 ビットおよびピクセルあたり 3 サンプルを使用する形式のビット深度は 24 になります。場合によっては、ビット深度に関連するサンプル サイズがあいまいなことがあります。たとえば、48 ビットのビット深度は、6 つの 8 ビット サンプル、4 つの 12 ビット サンプル、 3 つの 16 ビット サンプルのすべてに該当します。このあいまいさを避けるためのサンプル サイズの情報は、アルゴリズムを参照してください。

アルゴリズム

すべて折りたたむ

ほとんどのイメージ ファイル形式では、関数 imread は、色平面あたり 8 ビット以下を使用して、イメージ ピクセルを格納します。次の表に、ファイル形式が使用するビット深度に応じて返されるイメージ配列 A のクラスをリストします。

ファイルのビット深度

imread が返す配列のクラス

1 ビット/ピクセル

logical

2 ~ 8 ビット/色平面

uint8

9 ~ 16 ビット/ピクセル

uint16 (BMPJPEGPNG、および TIFF)

16 ビット BMP パック形式 (5-6-5) の場合、MATLAB は uint8 を返します。

以下の節では、形式名のアルファベット順に示した、特定の形式のサポートに関する情報を提供します。

BMP — Windows ビットマップ

次の表に、出力イメージ データ配列がサポートするビット深度およびデータ型をリストします。

サポートされているビット深度圧縮なしRLE 圧縮出力クラスメモ
1 ビットlogical 
4 ビットuint8 
8 ビットuint8 
16 ビットuint81 サンプル/ピクセル
24 ビットuint83 サンプル/ピクセル
32 ビットuint83 サンプル/ピクセル
(1 バイトのパディング)

CUR — Cursor ファイル

次の表に、出力イメージ データ配列がサポートするビット深度およびデータ型をリストします。

サポートされているビット深度圧縮なし圧縮出力クラス
1 ビットlogical
4 ビットuint8
8 ビットuint8

メモ

既定では、Microsoft® Windows® のカーソルは 32 x 32 ピクセルです。MATLAB のポインターは通常、16 x 16 でなければならないので、イメージをスケーリングする必要がある場合があります。この操作を行うために関数 imresize を使用できます。

GIF — Graphics Interchange Format

次の表に、出力イメージ データ配列がサポートするビット深度およびデータ型をリストします。

サポートされているビット深度圧縮なし圧縮出力クラス
1 ビットlogical
2 ~ 8 ビットuint8

HDF4 — Hierarchical Data Format

次の表に、出力イメージ データ配列がサポートするビット深度およびデータ型をリストします。

サポートされているビット深度カラーマップを含むラスター イメージカラーマップなしのラスター イメージ出力クラスメモ
8 ビットuint8 
24 ビットuint83 サンプル/ピクセル

ICO — Icon ファイル

CUR — Cursor ファイルを参照してください。

JPEG — Joint Photographic Experts Group

imread は、任意のベースライン JPEG イメージと、一般的に使用されるいくつかの拡張子をもつ JPEG イメージを読み込みます。JPEG 2000 ファイルのサポートについては、「JPEG 2000」を参照してください。

1 サンプルあたりのサポートされているビット数非可逆圧縮可逆圧縮出力クラスメモ
8 ビットuint8グレースケールまたは RGB
12 ビットuint16グレースケールまたは RGB
16 ビットuint16グレースケール

JPEG 2000 — Joint Photographic Experts Group 2000

JPEG ファイルのサポートについては、「JPEG」を参照してください。

メモ

インデックス付き JPEG 2000 イメージはサポートされません。JP2/JPX ファイルでは JP2 互換の色空間のみがサポートされます。既定では、すべてのイメージ チャネルはファイル内で並べられている順序で返されます。

1 サンプルあたりのサポートされているビット数

非可逆圧縮可逆圧縮出力クラスメモ
1 ビットlogicalグレースケールのみ
2 ~ 8 ビットuint8 または int8グレースケール
または RGB
9 ~ 16 ビットuint16 または int16グレースケール
または RGB

PBM — Portable Bitmap

次の表に、出力イメージ データ配列がサポートするビット深度およびデータ型をリストします。

サポートされているビット深度raw バイナリASCII (プレーン) エンコード出力クラス
1 ビットlogical

PCX — Windows Paintbrush

次の表に、出力イメージ データ配列がサポートするビット深度およびデータ型をリストします。

サポートされているビット深度出力クラスメモ
1 ビットlogicalグレースケールのみ
8 ビットuint8グレースケールまたはインデックス付き
24 ビットuint8RGB
3 つの 8 ビット サンプル/ピクセル

PGM — Portable Graymap

次の表に、出力イメージ データ配列がサポートするビット深度およびデータ型をリストします。

サポートされているビット深度raw バイナリASCII (プレーン) エンコード出力クラスメモ
8 ビットuint8 
16 ビットuint16 
任意1 ビット~ 8 ビットuint8
9 ビット~ 16 ビット: uint16
スケーリングされる値

PNG — ポータブル ネットワーク グラフ

次の表に、出力イメージ データ配列がサポートするビット深度およびデータ型をリストします。

サポートされているビット深度出力クラスメモ
1 ビットlogicalグレースケール
2 ビットuint8グレースケール
4 ビットuint8グレースケール
8 ビットuint8グレースケールまたはインデックス付き
16 ビットuint16グレースケールまたはインデックス付き
24 ビットuint8RGB
3 つの 8 ビット サンプル/ピクセル
48 ビットuint16RGB
3 つの 16 ビット サンプル/ピクセル

PPM — Portable Pixmap

次の表に、出力イメージ データ配列がサポートするビット深度およびデータ型をリストします。

サポートされているビット深度raw バイナリASCII (プレーン) エンコード出力クラス
16 ビットまでuint8
任意 

RAS — Sun ラスター

次の表に、出力イメージ データ配列がサポートするビット深度およびデータ型をリストします。

サポートされているビット深度出力クラスメモ
1 ビットlogicalビットマップ
8 ビットuint8インデックス付き
24 ビットuint8RGB
3 つの 8 ビット サンプル/ピクセル
32 ビットuint8アルファを含む RGB
4 つの 8 ビット サンプル/ピクセル

Aperio SVS — Aperio ScanScope バーチャル スライド

TIFF ベースのイメージ ファイル形式。imread は非圧縮イメージと圧縮イメージの読み取りをサポートします (JPEG 2000 圧縮を使用したイメージを含む)。詳細については、TIFF — Tagged Image File Formatを参照してください。

TIFF — Tagged Image File Format

imread は、TIFF 仕様または LibTIFF でサポートされるイメージの多くを読み取ります。関数 imread は、TIFF の次の機能をサポートしています。

  • 任意のサンプル数/ピクセル

  • CCITT グループ 3 および 4 FAX、Packbits、JPEG, LZW、Deflate、ThunderScan 圧縮、および非圧縮イメージ

  • 論理、グレースケール、インデックス付きカラー、トゥルーカラー、およびハイパースペクトルのイメージ

  • RGB、CMYK、CIELAB、ICCLAB の色空間。カラー イメージが CMYK 色空間を使用している場合、Am×n×4 の配列です。使用される色空間を決定するには、imfinfo を使用してグラフィックス ファイルの情報を取得し、PhotometricInterpretation フィールドの値を参照してください。ファイルに CIELAB カラー データが含まれる場合、imread はこのデータを ICCLAB に変換してから MATLAB ワークスペースに取り込みます。TIFF の 8 ビットまたは 16 ビットの CIELAB エンコード値には符号付きと符号なしのデータ型が混在しており、単一の MATLAB 配列として表現できないため、この変換が必要になります。

  • タイルまたはスキャンラインに分類されたデータ

imread は、次のように TIFF イメージを読み取って変換します。

  • YCbCr イメージは RGB 色空間に変換されます。

  • グレースケール イメージはすべて、黒 = 0、白 = 最大値として読み取られます。

  • 1 ビット イメージは logical クラスとして返されます。

  • 16 ビットの浮動小数点イメージはクラス single として返されます。

  • CIELab イメージは ICCLab 色空間に変換されます。

XWD — X Window Dump

次の表に、XWD ファイルでサポートされているビット深度、圧縮および出力クラスを示します。

サポートされているビット深度ZPixmapsXYBitmapsXYPixmaps出力クラス
1 ビットlogical
8 ビットuint8

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する

参考

関数

ライブ エディター タスク