メインコンテンツ

imread

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

説明

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

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

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

A = imread(___,Name=Value) は、前述の構文の任意の入力引数の組み合わせに加え、1 つ以上の名前と値の引数を使用して形式固有のオプションを指定します。たとえば、JPEG イメージの向きを自動設定するには、AutoOrienttrue (R2024b 以降) に設定します。

[A,map] = imread(___)filename のインデックス付きイメージを A、イメージの関連カラーマップを map に読み取ります。イメージ ファイルのカラーマップ値は、自動的に、範囲 [0, 1] に再スケーリングされます。HEIF と HEIC のファイル形式ではカラーマップがサポートされていないため、この構文はそれらのイメージ ファイルには適用されません。

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

すべて折りたたむ

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

A = imread("ngc6543a.jpg");

imread 関数は、uint8 型の 650×600×3 の配列を返します。

イメージを表示します。

image(A)

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

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

[A,map] = imread("corn.tif");
whos A map
  Name        Size              Bytes  Class     Attributes

  A         415x312            129480  uint8               
  map       256x3                6144  double              

インデックス付きイメージ Auint8 型の 415 行 312 列の行列で、カラーマップ mapdouble 型の 256 行 3 列の行列です。map の寸法は、インデックス付きイメージに最大 256 色が含まれていることを示します。

イメージを表示します。

imshow(A,map)

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

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

RGB = ind2rgb(A,map);

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

[minVal,maxVal] = bounds(RGB(:))
minVal = 
0.0078
maxVal = 
0.9765

サンプル ファイルの 3 番目のイメージを読み取って表示します。

[A,map] = imread("corn.tif",3);
imshow(A,map)

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

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

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

  alpha      0x0                 0  double              

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

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

読み取る領域の境界を示すベクトルの cell 配列とともに名前と値の引数 PixelRegion を指定します。最初のベクトルでは読み取る行の範囲を示し、2 番目のベクトルでは読み取る列の範囲を示します。

[A,map] = imread("corn.tif",PixelRegion={[201 400] [151 250]});

imread 関数は、corn.tif から行 201 ~ 400、列 151 ~ 250 のイメージ データを読み取り、200 行 100 列の配列 A を返します。

イメージを表示します。

imshow(A,map)

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

R2024b 以降

一部のイメージ ファイルでは、Exif (Exchangeable image file format) の Orientation タグに方向メタデータが含まれています。imread でイメージ ファイルを読み取る場合、名前と値の引数 AutoOrienttrue として指定することで、この方向タグに従ってイメージ データの向きを自動設定できます。

Exif の Orientation タグの値が異なる同じイメージの 8 つのバージョンのタイル配置を作成します。ファイル clock_n.jpg では、Exif の Orientation タグに値 "n" が含まれています。名前と値の引数 AutoOrient を指定しなかった場合、それぞれの Exif の Orientation タグ値を考慮せずにイメージが読み込まれます。

filenames = "clock_" + string(1:8) + ".jpg";

for i = 1:8
    rawImages{i} = imread(filenames(i));
end

imshow(imtile(rawImages,BorderSize=[25 25],GridSize=[2 4]))

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

名前と値の引数 AutoOrient を使用して、イメージ データをワークスペースに読み取る前に、それぞれの Exif の Orientation タグ値に従って各イメージを変換します。変換されたイメージを表示します。

for i = 1:8
    orientedImages{i} = imread(filenames(i),AutoOrient=true);
end
imshow(imtile(orientedImages,BorderSize=[25 25],GridSize=[2 4]))

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

入力引数

すべて折りたたむ

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

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

場所

形式

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

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

例: "myImage.jpg"

フォルダー内のファイル

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

例: "C:\myFolder\myImage.png"

例: "\imgDir\myImage.bmp"

Uniform Resource Locator (URL)

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

例: "http://my_hostname/my_path/my_image.jpg"

リモートの場所

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

scheme_name://path_to_file/my_file.ext

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

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

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

例: "s3://my_bucket/my_path/my_image.heif"

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

例: "png"

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

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

メモ

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

例: 2

例: 6:10

データ型: double

名前と値の引数

すべて展開する

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

例: imread("myImage.tif",Index=5) は、TIFF ファイルの 5 番目のイメージを読み取ります。

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

例: imread("myImage.tif","Index",5) は、TIFF ファイルの 5 番目のイメージを読み取ります。

GIF ファイル

すべて展開する

読み取るフレーム。正の整数、整数ベクトル、または "all" として指定します。たとえば、3 を指定した場合、imread はファイルの 3 番目のフレームを読み取ります。"all" を指定した場合、imread はすべてのフレームをファイル内の順序で読み取って返します。

例: 5

例: 1:10

例: "all"

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string | char

JPEG ファイル

すべて展開する

R2024b 以降

イメージの向きの自動設定。false または true として指定します。AutoOrienttrue として指定すると、イメージ ファイルの Exif の Orientation タグに従って filename 内のデータが変換されます。AutoOrientfalse として指定した場合、imread 関数は Exif の Orientation タグを無視します。

データ型: logical

JPEG 2000 ファイル

すべて展開する

読み取る領域の境界。{rows,cols} という形式の cell 配列として指定します。rows の値は読み取る行の範囲を示し、cols の値は読み取る列の範囲を示します。rowscols は両方とも、1 ベースのインデックスを含む 2 要素ベクトルでなければなりません。たとえば、PixelRegion={[1 2] [3 4]} は、イメージ データの第 1 行と第 2 行、第 3 列と第 4 列で囲まれた領域を読み取ります。

メモ

ReductionLevel を正の値として指定する場合は、解像度を下げた後のイメージを基準として PixelRegion を指定します。

例: {[1 100] [4 500]}

イメージ解像度の低減。非負の整数として指定します。ReductionLevel を値 L として指定すると、イメージの解像度は 2L 分の 1 に低減されます。低減レベルは、imfinfo 関数の出力の WaveletDecompositionLevels フィールドで指定された分解レベルの総数によって制限されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

MATLAB 7.9 (R2009b) 以前との互換性。false または true として指定します。V79Compatibletrue として指定した場合、返されるグレースケールまたは RGB のイメージは、旧バージョンの imread (MATLAB 7.9 (R2009b) 以前) と互換性をもちます。

データ型: logical

PNG ファイル

すべて展開する

背景色。"none"、正の整数、範囲 [0, 1] の数値、または範囲 [0, 1] の数値の 3 要素ベクトルとして指定します。BackgroundColor"none" として指定した場合、imread 関数は合成を実行しません。それ以外の場合、imread 関数は透明ピクセルに背景色をブレンドします。

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

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

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

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

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

  • transparency 出力を要求しなかった場合、次のようになります。

    • ファイルに背景色チャンクが含まれている場合、そのチャンクの色が BackgroundColor の既定値になります。

    • ファイルに背景色チャンクが含まれていない場合は、次のようになります。

      • 入力イメージがインデックス付きの場合、BackgroundColor の既定値は 1 になります。

      • 入力イメージがグレースケールの場合、BackgroundColor の既定値は 0 になります。

      • 入力イメージが RGB の場合、BackgroundColor の既定値は [0 0 0] になります。

例: 2

例: 0.5

例: [0.2 0.8 0.5]

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string | char

TIFF ファイル

すべて展開する

R2024b 以降

イメージの向きの自動設定。false または true として指定します。AutoOrienttrue として指定すると、イメージ ファイルの Exif の Orientation タグに従って filename 内のデータが変換されます。AutoOrientfalse として指定した場合、imread 関数は Exif の Orientation タグを無視します。

メモ

AutoOrienttrue として指定することに加えて PixelRegion を指定すると、imread 関数はまず指定された領域を読み取り、次にファイル内の Exif の Orientation タグに従って領域を変換します。

データ型: logical

読み取るイメージ。正の整数として指定します。たとえば、Index の値が 3 の場合、imread 関数はファイル内の 3 番目のイメージを読み取ります。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

データ型: struct

読み取る領域の境界。{rows,cols} という形式の cell 配列として指定します。rows の値は読み取る行の範囲を示し、cols の値は読み取る列の範囲を示します。rowscols は両方とも、1 ベースのインデックスを含む 2 要素または 3 要素ベクトルでなければなりません。

  • rows または cols[start stop] という形式の 2 要素ベクトルで、読み取る最初と最後の行または列を指定します。たとえば、{[1 2] [3 4]} は、イメージ データの第 1 行と第 2 行、第 3 列と第 4 列で囲まれた領域を読み取ります。

  • rows または cols[start step stop] という形式の 3 要素ベクトルで、ステップ サイズとともに、読み取る最初と最後の行または列を指定します。たとえば、{[1 2 10] [4 3 12]} は、イメージ データの第 1 行と第 10 行、第 4 列と第 12 列で囲まれた領域を、水平ステップ サイズ 2、垂直ステップ サイズ 3 で読み取ります。

例: {[1 100] [4 500]}

例: {[100 5 200] [250 2 500]}

HEIF ファイルと HEIC ファイル

R2025a 以降

すべて展開する

イメージの向きを自動設定するオプション。数値または logical 1 (true) または 0 (false) として指定します。AutoOrienttrue として指定すると、イメージ ファイルの Exif の Orientation タグに従って filename 内のデータが変換されます。AutoOrientfalse として指定した場合、imread 関数は Exif の Orientation タグを無視します。

データ型: logical

出力引数

すべて折りたたむ

イメージ データ。配列として返されます。イメージ データに m 行および n 列が含まれている場合、次のようになります。

  • ファイルにグレースケール イメージが含まれている場合、A は、イメージ内のピクセルの強度を表す値の mn 列の配列です。

  • ファイルにインデックス付きイメージが含まれている場合、A は、map の行を参照するインデックス値の mn 列の配列です。

  • ファイルに RGB (トゥルーカラー) イメージが含まれている場合、Am×n×3 の配列です。

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

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

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

透明度の情報。行列として返されます。

  • PNG ファイルの場合:

    • アルファ チャネルが存在し、名前と値の引数 BackgroundColor を指定しなかった場合、transparency がアルファ チャネルになります。

    • アルファ チャネルが存在しない場合、または名前と値の引数 BackgroundColor を指定した場合、transparency は空になります。

  • CUR および ICO のファイルの場合、transparency は AND (不透明度) マスクです。

詳細

すべて折りたたむ

ヒント

  • 名前と値の引数 AutoOrient は、JPEG、TIFF (R2024b 以降)HEIF、または HEIC (R2025a 以降) 形式のファイルでのみ機能します。他の形式のファイルで AutoOrient 引数を指定した場合、この引数は効果をもちません。この動作により、コレクション内の一部のファイルが JPEG、TIFF (R2024b 以降)HEIF、または HEIC (R2025a 以降) 形式でない場合でも、AutoOrient 引数を使用してイメージのコレクションの向きの自動設定を試行できます。

  • 次の表に、名前と値の引数 AutoOrienttrue である場合に、imread 関数が Exif の Orientation タグの値を使用してイメージ データをどのように変換するのかを示します。

    Orientation フィールドの値変換の説明
    1変換なし
    2縦軸を中心に鏡映
    3180 度回転
    4縦軸を中心に鏡映してから、180 度回転
    5縦軸を中心に鏡映してから、反時計回りに 90 度回転
    6時計回りに 90 度回転
    7縦軸を中心に鏡映してから、時計回りに 90 度回転
    8反時計回りに 90 度回転

    (R2024b 以降)

アルゴリズム

すべて折りたたむ

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

ファイルのビット深度

imread が返す配列のクラス

1 ビット/ピクセル

logical

2 ~ 8 ビット/色平面

uint8

9 ~ 16 ビット/ピクセル

uint16 (BMP、JPEG、PNG、TIFF)

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

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

拡張機能

すべて展開する

バージョン履歴

R2006a より前に導入

すべて展開する

参考

関数

ライブ エディター タスク