imageDatastore
イメージ データのデータストア
説明
個々のイメージはメモリに収まるが、イメージの集合全体が必ずしもメモリに収まるとは限らない場合、イメージ ファイルの集合を管理するには ImageDatastore
オブジェクトを使用します。関数 imageDatastore
を使用して ImageDatastore
オブジェクトを作成し、そのプロパティを指定すると、オブジェクト関数を使用してデータのインポートおよび処理ができます。
作成
説明
は、imds
= imageDatastore(location
)location
で指定されたイメージ データの集合からデータストア imds
を作成します。
は、1 つ以上の名前と値のペアの引数を使用して、imds
= imageDatastore(location
,Name,Value
)imds
の追加パラメーターとプロパティを指定します。
入力引数
location
— データストアに含めるファイルまたはフォルダー
FileSet
オブジェクト | ファイル パス | DsFileSet
オブジェクト
データストアに含めるファイルまたはフォルダー。FileSet
オブジェクト、ファイル パス、または DsFileSet
オブジェクトとして指定します。
FileSet
オブジェクト —location
をFileSet
オブジェクトとして指定できます。場所をFileSet
オブジェクトとして指定すると、パスまたはDsFileSet
オブジェクトを指定した場合に比べ、データストアの構築時間が短くなります。詳細については、matlab.io.datastore.FileSet
を参照してください。ファイル パス — 単一のファイル パスを文字ベクトルまたは string スカラーとして指定できます。複数のファイル パスは文字ベクトルの cell 配列または string 配列として指定できます。
DsFileSet
オブジェクト —DsFileSet
オブジェクトを指定できます。詳細については、matlab.io.datastore.DsFileSet
を参照してください。
ファイルまたはフォルダーはローカルでもリモートでもかまいません。
ローカルのファイルまたはフォルダー — ファイルまたはフォルダーのローカル パスを指定します。現在のフォルダー以外のファイルの場合は、絶対パスまたは相対パスを指定します。指定したフォルダーのサブフォルダー内にあるファイルは、自動ではデータストアに含まれません。ローカル パスを指定するときにワイルドカード文字 (*) を使用できます。この文字は、一致するフォルダー内にある、すべてのファイルまたは一致するすべてのファイルをデータストアに含めることを指定します。
リモートのファイルまたはフォルダー —
hdfs:///
の形式の Uniform Resource Locator (URL) として、リモートのファイルまたはフォルダーの絶対パスを指定します。詳細については、リモート データの操作を参照してください。path_to_file
フォルダーを指定する場合、データストアにはサポートされているファイル形式のファイルのみが含まれ、その他の形式のファイルは無視されます。データストアに含めるファイル拡張子のカスタム リストを指定するには、FileExtensions
プロパティを参照してください。
関数 imageDatastore
は、imformats
形式のファイルをサポートします。
例: "file1.jpg"
例: "../dir/data/file1.png"
例: ["C:\dir\data\file1.tif","C:\dir\data\file2.tif"]
例: "C:\dir\data\*.jpg"
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: imds = imageDatastore("C:\dir\imagedata","FileExtensions",[".jpg",".tif"])
IncludeSubfolders
— サブフォルダーを含めるかどうかのフラグ
false
(既定値) | true
サブフォルダーを含めるかどうかのフラグ。"IncludeSubfolders"
と true
または false
で構成される名前と値の引数として指定します。各フォルダー内のすべてのファイルとサブフォルダーを含めるには true
を指定し、各フォルダー内のファイルのみを含めるには false
を指定します。
"IncludeSubfolders"
を指定しない場合、既定値は false
です。
例: "IncludeSubfolders",true
データ型: logical
| double
FileExtensions
— イメージ ファイル拡張子
文字ベクトル | 文字ベクトルの cell 配列 | string スカラー | string 配列
イメージ ファイル拡張子。"FileExtensions"
と、文字ベクトル、文字ベクトルの cell 配列、string スカラーまたは string 配列で構成されるコンマ区切りのペアとして指定します。指定された拡張子に imformats
型式は不要であり、空の引用符 ""
を使用して、拡張子なしでファイルを表すことができます。"FileExtensions"
を指定しない場合、imageDatastore
は、指定パス上の imformats
拡張子をもつすべてのイメージを自動的に含めます。imformats
で認識されない拡張子を含める場合は、すべての拡張子を指定します。
例: "FileExtensions",".jpg"
例: "FileExtensions",[".jpg",".png"]
データ型: char
| cell
| string
AlternateFileSystemRoots
— 代替ファイル システムのルート パス
string ベクトル | cell 配列
代替ファイル システムのルート パス。"AlternateFileSystemRoots"
と string ベクトルまたは cell 配列で構成される名前と値の引数として指定します。ローカル マシン上にデータストアを作成するが、別のマシン (異なるオペレーティング システムの可能性がある) 上でデータにアクセスして処理する必要がある場合は、"AlternateFileSystemRoots"
を使用します。また、Parallel Computing Toolbox™ と MATLAB® Parallel Server™ を使用してデータを処理し、そのデータがローカル マシンに保存され、そのデータのコピーが異なるプラットフォームのクラウドやクラスター マシンにある場合、"AlternateFileSystemRoots"
を使用してルート パスを関連付けなければなりません。
相互に対応する 1 組のルート パスを関連付けるには、
"AlternateFileSystemRoots"
を string ベクトルとして指定します。以下に例を示します。["Z:\datasets","/mynetwork/datasets"]
データストアに対応する複数の組のルート パスを関連付けるには、複数行を含む cell 配列として
"AlternateFileSystemRoots"
を指定します。各行は対応するルート パスの組を表します。cell 配列内の各行を string ベクトル、または文字ベクトルの cell 配列のいずれかとして指定します。以下に例を示します。"AlternateFileSystemRoots"
を string ベクトルの cell 配列として指定します。{["Z:\datasets", "/mynetwork/datasets"];... ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}
あるいは、
"AlternateFileSystemRoots"
を文字ベクトルの cell 配列からなる cell 配列として指定します。{{'Z:\datasets','/mynetwork/datasets'};... {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}
"AlternateFileSystemRoots"
の値は、次の条件を満たさなければなりません。
1 行以上の行を含み、各行は 1 組の対応するルート パスを指定する。
各行は複数のルート パスを指定し、各ルート パスは 2 文字以上を含まなければならない。
ルート パスは一意で、他のルート パスのサブフォルダーではない。
ファイルの場所を指す 1 つ以上のルート パス エントリを含む。
詳細については、異なるマシンまたはクラスターで処理するためのデータストアの設定を参照してください。
例: ["Z:\datasets","/mynetwork/datasets"]
データ型: string
| cell
LabelSource
— ラベル データを提供するソース
"none"
(既定値) | "foldernames"
ラベル データを提供するソース。"LabelSource"
と "none"
または "foldernames"
のいずれかで構成される名前と値の引数として指定します。"none"
を指定した場合、Labels
プロパティは空になります。"foldernames"
を指定した場合、フォルダー名に従ってラベルが割り当てられ、Labels
プロパティに格納されます。後で Labels
プロパティに直接アクセスして、ラベルを変更できます。
名前と値の引数 "LabelSource"
は、ファイルまたはフォルダーの場所として FileSet オブジェクトが使用されている場合は使用できません。
データ型: char
| string
これらの名前と値のペアに加えて、このページの任意のプロパティも名前と値のペアとして指定できます。ただし、Files
プロパティを除きます。
プロパティ
ImageDatastore
プロパティはデータを記述し、データストアからデータを読み取る方法を指定します。datastore オブジェクトの作成時に、名前と値の引数を使用して ImageDatastore
プロパティの値を指定できます。オブジェクトの作成後にプロパティの表示または変更を行うには、ドット表記を使用します。
たとえば、ImageDatastore
オブジェクトを作成して、"ReadFcn"
パラメーターを指定できます。
imds = imageDatastore("peppers.png","ReadFcn",@customreader);
ImageDatastore
の作成後に "ReadFcn"
を @customreader
に割り当てることができます。 imds = imageDatastore("peppers.png");
imds.ReadFcn = @customreader;
Files
— データストアに含まれるファイル
文字ベクトル | 文字ベクトルの cell 配列 | string スカラー | string 配列
データストアに含まれるファイル。文字ベクトル、文字ベクトルの cell 配列、string スカラーまたは string 配列として解決されます。各文字ベクトルまたは string はファイルへの絶対パスです。関数 imageDatastore
および関数 datastore
の location
引数は、データ ストアの作成時に Files
を定義します。
例: {"C:\dir\data\file1.jpg";"C:\dir\data\file2.jpg"}
データ型: char
| cell
| string
Folders
— データストアの作成に使用するフォルダー
文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
データストアの作成に使用するフォルダー。文字ベクトルの cell 配列として返されます。cell 配列は列ベクトルとして方向付けされます。各文字ベクトルは、データ ファイルを含むフォルダーへのパスです。関数 imageDatastore
および関数 datastore
の location
引数は、データストアの作成時に Folders
を定義します。
データ型: cell
ReadSize
— 読み取るイメージ ファイルの数
1 (既定値) | 正の整数スカラー
関数 read
の呼び出しで読み取るイメージ ファイルの数。正の整数スカラーとして指定します。関数 read
の各呼び出しで、最大 ReadSize
個のイメージを読み取ります。
Labels
— ファイルのラベル
カテゴリカル ベクトル、論理ベクトルまたは数値ベクトル | cell 配列 | string 配列
データストア内のファイルのラベル。ベクトル、cell 配列または string 配列として指定します。配列内のラベルの順序は、データストア内の関連付けられたファイルの順序に対応します。ImageDatastore
オブジェクトの作成時に "LabelSource","foldernames"
を指定した場合、ファイルのラベル名はそのファイルを含むフォルダーの名前になります。"LabelSource","foldernames"
を指定しない場合、Labels
は空の cell 配列または string 配列です。データストアの作成後に Files
プロパティを変更した場合、追加されたファイルを含めるように Labels
プロパティが自動更新されることはありません。
データ型: categorical
| cell
| logical
| double
| single
| string
ReadFcn
— イメージ データを読み取る関数
@readDatastoreImage
(既定値) | 関数ハンドル
イメージ データを読み取る関数。関数ハンドルとして指定します。関数はイメージ ファイル名を入力として受け取らなければならず、その後に対応するイメージ データを出力します。たとえば、customreader
がイメージ データを読み取る関数として指定された場合、この関数には次のようなシグネチャがなければなりません。
function data = customreader(filename) ... end
imageDatastore
は最初の引数のみを使用して、残りの引数を無視します。
メモ
2 次元イメージの変換または前処理に ReadFcn
を使用することは推奨されません。imformats
の認識するファイル形式について、ReadFcn
を指定すると imageDatastore
のパフォーマンスが遅くなります。イメージの変換および前処理の効率的な方法の詳細については、イメージの深層学習向け前処理 (Deep Learning Toolbox)を参照してください。
例: @customreader
データ型: function_handle
SupportedOutputFormats
— 書き込みでサポートされる形式
string 行ベクトル
この プロパティ は読み取り専用です。
書き込みでサポートされる形式。string の行ベクトルとして返されます。このプロパティは、writeall
を使用してデータストアから出力ファイルを書き込む際に使用可能な出力形式を指定します。
DefaultOutputFormat
— 既定の出力形式
string スカラー
この プロパティ は読み取り専用です。
既定の出力形式。string スカラーとして返されます。このプロパティは、writeall
を使用してデータストアから出力ファイルを書き込む際の既定の形式を指定します。
データ型: string
オブジェクト関数
countEachLabel | ImageDatastore ラベル内のファイルをカウントする |
hasdata | データが読み取り可能かどうかを判別 |
numpartitions | データストアの区画数 |
partition | データストアを分割する |
preview | データストア内のデータのサブセットをプレビュー |
read | データストアのデータの読み取り |
readall | データストアのすべてのデータの読み取り |
readimage | 指定されたイメージをデータストアから読み取る |
writeall | ファイルへのデータストアの書き込み |
reset | データストアの初期状態へのリセット |
shuffle | データストア内のすべてのデータをシャッフルする |
splitEachLabel | ImageDatastore のラベルを比率で分割 |
subset | データストアまたは FileSet のサブセットの作成 |
transform | データストアの変換 |
combine | 複数のデータストアのデータを統合 |
isPartitionable | データストアが分割可能かどうかを判別 |
isSubsettable | Determine whether datastore is subsettable |
isShuffleable | データストアがシャッフル可能かどうかを判別 |
例
サブフォルダーとラベルを使用した ImageDatastore オブジェクトの作成
MATLAB® パスおよびそのサブフォルダー内にあるすべての .tif
ファイルに関連付けられた ImageDatastore
オブジェクトを作成します。フォルダー名をラベル名として使用します。
imds = imageDatastore(fullfile(matlabroot,"toolbox","matlab"),... "IncludeSubfolders",true,"FileExtensions",".tif","LabelSource","foldernames")
imds = ImageDatastore with properties:
Files: {
'...\matlab\toolbox\matlab\demos\example.tif';
'...\matlab\toolbox\matlab\matlab_images\tif\corn.tif'
}
Folders: {
'...\matlab\toolbox\matlab'
}
Labels: [demos; imagesci]
AlternateFileSystemRoots: {}
ReadSize: 1
SupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"]
DefaultOutputFormat: "png"
ReadFcn: @readDatastoreImage
読み取るイメージの指定
4 つのイメージを含む FileSet
オブジェクトを作成します。ImageDatastore
オブジェクトを作成します。
fs = matlab.io.datastore.FileSet(["street1.jpg","street2.jpg","peppers.png","corn.tif"])
fs = FileSet with properties: NumFiles: 4 NumFilesRead: 0 FileInfo: Show FileInfo for all 4 files AlternateFileSystemRoots: {}
imds = imageDatastore(fs)
imds = ImageDatastore with properties:
Files: {
'...\matlab\toolbox\matlab\demos\street1.jpg';
'...\matlab\toolbox\matlab\demos\street2.jpg';
' ...\matlab\toolbox\matlab\imagesci\peppers.png'
... and 1 more
}
Folders: {
'...\matlab\toolbox\matlab\demos';
'...\matlab\toolbox\matlab\imagesci'
}
AlternateFileSystemRoots: {}
ReadSize: 1
Labels: {}
SupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"]
DefaultOutputFormat: "png"
ReadFcn: @readDatastoreImage
最初のイメージをプレビューします。
imshow(preview(imds));
2 番目と 3 番目のイメージのみを 1 つずつ読み取ります。
for i = 2:3 img = readimage(imds,i); end
イメージを 4 つすべて読み取り、3 番目のイメージを表示します。
imgs = readall(imds); imshow(imgs{3})
制限
2 次元イメージの変換または前処理に ReadFcn を使用することは推奨されません。
imformats
の認識するファイル形式について、ReadFcn
を指定するとimageDatastore
のパフォーマンスが遅くなります。イメージの変換および前処理の効率的な方法の詳細については、イメージの深層学習向け前処理 (Deep Learning Toolbox)を参照してください。
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
使用上の注意事項および制限事項:
read
、readall
、およびreadimage
は、スレッドベースの環境では次のイメージ形式をサポートしません。階層データ形式 (HDF)
SVS
TIFF
writeall
はスレッドベースの環境でサポートされません。combine
およびtransform
は、スレッドベースの環境ではImageDatastore
、CombinedDatastore
、SequentialDatastore
、またはTransformedDatastore
オブジェクトでのみ使用できます。
詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2015b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)