最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

pixelLabelDatastore

ピクセル ラベル データのデータストア

説明

PixelLabelDatastore オブジェクトを使用して、セマンティック セグメンテーションのピクセル ラベル データを読み取ることができます。

PixelLabelDatastore からピクセル ラベル データを読み取るには、関数 read を使用します。この関数は、すべてのピクセル位置 (i,j) またはボクセル位置 (i,j,k) に割り当てられたカテゴリカル ラベルを含む categorical 配列を返します。

作成

ここで説明する関数 pixelLabelDatastore を使用して PixelLabelDatastore オブジェクトを作成します。オブジェクトを作成すると、データのアクセスや管理を行う関数を使用できます。ドット表記を使用して、ReadSize プロパティと ReadFcn プロパティを変更できます。

説明

pxds = pixelLabelDatastore(gTruth) は、groundTruth オブジェクトまたは groundTruth オブジェクトの配列から PixelLabelDatastore オブジェクトを作成します。

pxds = pixelLabelDatastore(location,classNames,pixelLabelIDs) は、ピクセル ラベル データが保存されているイメージ ファイルから PixelLabelDatastore オブジェクトを、location で指定されたフォルダーまたはファイルに作成します。この関数は、イメージ ピクセル ラベルの値をクラス名にマップするピクセル ID を使用してオブジェクトを作成します。

pxds = pixelLabelDatastore(___,Name,Value) は、名前と値のペアの引数を使用して ReadSize プロパティと AlternateFileSystemRoots プロパティのいずれかまたは両方を設定し、PixelLabelDatastore オブジェクトを作成します。イメージ ファイルの入力では、名前と値のペアの引数を使用して ReadFcn プロパティを設定したり、あるいはデータストアに含めるファイルに関するオプションを指定することもできます。複数の名前と値のペアを指定できます。各プロパティ名を引用符で囲みます。

たとえば、pixelLabelDatastore(loc,names,ids,'ReadSize',8,'FileExtensions','png') によって作成されるピクセル ラベル データストアには PNG イメージのみが含まれ、関数 read の呼び出しごとに 8 個のイメージを読み取ります。

入力引数

すべて展開する

グラウンド トゥルース データ。groundTruth オブジェクトまたは groundTruth オブジェクトの配列として指定します。各 groundTruth オブジェクトには、一連のグラウンド トゥルース ラベルのデータ ソース、ラベル定義のリスト、およびマークされたすべてのラベルに関する情報が含まれます。

フォルダーまたはイメージ ファイルの名前。文字ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。イメージには uint8 データが含まれなければなりません。

location説明
文字ベクトル、string 配列フォルダーの名前。指定されたフォルダーのサブフォルダー内のファイルは、自動的にはデータストアに含まれません。データストアにはサポートされているファイル形式のイメージのみが含まれ、他の形式は無視されます。関数 imformats を使用して、サポートされているファイル形式の一覧を確認します。
文字ベクトルの cell 配列複数のイメージのファイルの名前。

pixelLabelDatastore はファイル名を拡張し、絶対ファイル パスを Files プロパティに保存します。

location を指定する際、ワイルドカード文字 (*) を使用できます。この文字は、すべての一致するファイル、または一致するフォルダー内のすべてのファイルがデータストアに含まれることを示します。

ファイルが現在のフォルダーに存在しない場合、絶対パスまたは相対パスを含めなければなりません。

ファイルがローカルで使用できない場合、ファイルまたはフォルダーの絶対パスを hdfs://hostname:portnumber/path_to_file のような国際化リソース識別子 (IRI) にしなければなりません。Amazon S3™ および HDFS™ での datastore の使用に関する詳細は、リモート データの操作 (MATLAB)を参照してください。

例: 'file1.jpg'

例: '../dir/data/file1.png'

例: {'C:\dir\data\file1.tif','C:\dir\data\file2.tif'}

例: 'C:\dir\data\*.jpg'

データ型: char | cell

クラス名。string または文字ベクトルの cell 配列として指定します。pixelLabelDatastore は名前を cell 配列に変換し、ClassNames プロパティに名前を保存します。

例: ["sky" "grass" "building" "sidewalk"]

ピクセル ラベルを ClassNames にマップするための ID。ベクトル、m 行 3 列の行列、列ベクトルの cell 配列、または m 行 3 列の行列の cell 配列として指定します。値は [0, 255] の範囲の整数でなければなりません。m 行 3 列の行列は RGB イメージでのみサポートされています。

形式説明
ベクトルベクトルの長さとクラス名の数は等しくなければなりません。値は一意でなければなりません。
m 行 3 列の行列m は、クラス名の数に対応します。各行には、各クラス名と関連付ける RGB ピクセル値を表す 3 要素ベクトルが含まれます。ベクトルは一意でなければなりません。この形式を、RGB イメージとして保存されているピクセル ラベル データに使用します。

列ベクトルの cell 配列

m 行 3 列の行列の cell 配列

cell 配列を使用して、複数のピクセル ラベル ID を 1 つのクラス名にマップします。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'IncludeSubfolders',true

インクルード サブフォルダー。'IncludeSubfolders'false (0) または true (1) で構成されるコンマ区切りのペアとして指定します。すべてのファイルとサブフォルダーを各フォルダー内に含める場合は true を、ファイルのみを各フォルダー内に含める場合は false を指定します。

グラウンド トゥルース データ gTruth を指定した場合、IncludeSubfolders 引数はサポートされません。

データストアに含まれるファイルのファイル拡張子。'FileExtensions' と文字ベクトル、文字ベクトルの cell 配列、string スカラー、または string 配列で構成されるコンマ区切りのペアとして指定します。既定では、データストアには関数 imformats によってサポートされるすべての拡張子をもつファイルが含まれます。

グラウンド トゥルース データ gTruth を指定した場合、FileExtensions 引数はサポートされません。

例: ["png" "gif" "bmp"]

プロパティ

すべて展開する

このプロパティは読み取り専用です。

データストアに含まれるファイル。文字ベクトル、または文字ベクトルの cell 配列として指定します。各文字ベクトルは、ファイルへの絶対パスです。PixelLabelDatastore オブジェクトを作成する場合、このプロパティを設定するには location 引数を使用します。

このプロパティは読み取り専用です。

クラス名。文字ベクトルの cell 配列を指定します。

関数 read への各呼び出しで読み取るイメージ ファイルの最大数。正の整数として指定します。

代替ファイル システムのルート パス。'AlternateFileSystemRoots' と、string ベクトルまたは cell 配列から構成されるコンマ区切りのペアとして指定します。データストアはローカル マシンに作成するが、(オペレーティング システムが異なる可能性のある) 別のマシン上のデータにアクセスして処理する必要がある場合、'AlternateFileSystemRoots' を使用します。Parallel Computing Toolbox™ と MATLAB® Parallel Server™ を使用してデータを処理する場合、およびデータをローカル マシンに保存するのに加えて、そのデータのコピーを異なるプラットフォームのクラウドやクラスター マシンで利用できるようにする場合も、'AlternateFileSystemRoots' を使用してルート パスを関連付けなければなりません。

  • 互いに等価なルート パスのセットを関連付けるには、'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 つ以上の行を含む。各行は等価なルート パスのセットを指定する。

  • 各行は複数のルート パスを指定する。各ルート パスは少なくとも 2 文字を含まなければならない。

  • ルート パスは一意であり、互いのサブフォルダーではない。

  • ファイルの場所を指すルート パス エントリを少なくとも 1 つ含む。

詳細については、異なるマシンまたはクラスターで処理するためのデータ ストアの設定 (MATLAB)を参照してください。

例: ["Z:\datasets","/mynetwork/datasets"]

データ型: string | cell

ピクセル ラベル付きイメージ データを読み取る関数。関数ハンドルとして指定します。カスタム読み取り関数は、入力としてイメージ ファイル名を取った後、対応するピクセル ラベル付きデータを categorical 行列、logical 行列、またはデータ型 uint8 の数値行列として出力しなければなりません。たとえば、customreader がイメージ データを読み取るために指定された関数である場合、この関数は次のようなシグネチャを持たなければなりません。

function C = customreader(filename)
...
end
読み取り関数に複数の出力引数がある場合は、最初の出力引数のみが使用されます。残りは無視されます。

グラウンド トゥルース データ gTruth を指定した場合、ReadFcn プロパティはサポートされません。

例: @customreader

オブジェクト関数

combine複数のデータ ストアのデータを統合
countEachLabelCount occurrence of pixel or box labels
hasdataDetermine if data is available to read from datastore
numpartitionsNumber of partitions for a datastore
partitionPartition a label datastore
previewReads first image from pixel label datastore
readRead data from a datastore
readallRead all data in datastore
readimageRead specified pixel label data file
resetReset datastore to initial state
transformデータ ストアの変換

すべて折りたたむ

ピクセル ラベル データをイメージに重ね合わせます。

イメージとピクセル ラベル データの場所を設定します。

dataDir = fullfile(toolboxdir('vision'),'visiondata');
imDir = fullfile(dataDir,'building');
pxDir = fullfile(dataDir,'buildingPixelLabels');

イメージ データストアとピクセル ラベル データストアを作成します。

imds = imageDatastore(imDir);
classNames = ["sky" "grass" "building" "sidewalk"];
pixelLabelID = [1 2 3 4];
pxds = pixelLabelDatastore(pxDir,classNames,pixelLabelID);

イメージとピクセル ラベル データを読み取ります。read(pxs) は、categorical 行列 C を返します。この行列の要素 C(i,j) は、位置 l(i,j) のピクセルに割り当てられたカテゴリカル ラベルです。

I = read(imds);
C = read(pxds);

C のラベル カテゴリを表示します。

categories(C)
ans = 4x1 cell array
    {'sky'     }
    {'grass'   }
    {'building'}
    {'sidewalk'}

ピクセル ラベル データをイメージに重ね合わせて表示します。

B = labeloverlay(I,C);
figure
imshow(B)

3 次元ボリュームおよびピクセル ラベル データの位置を指定します。このデータは、ラベル付けされた脳の 3 次元 MRI スキャンです。

dataDir = fullfile(toolboxdir('images'),'imdata');
imDir = fullfile(dataDir,'BrainMRILabeled','images');
pxDir = fullfile(dataDir,'BrainMRILabeled','labels');

カスタム ReadFcn を指定します。この例では、MAT イメージ ファイルから 3 次元イメージ データを読み取る samplePXDSMatReader と呼ばれる関数を指定します (この例の終わりで定義)。

matReader = @samplePXDSMatReader;

イメージ データストアを作成します。

imds = imageDatastore(imDir,'FileExtensions','.mat','ReadFcn',matReader);

ピクセル ラベル データストアを作成します。

classNames = ["edema","nonEnhancingTumor","enhancingTumour"];
pixelLabelID = [1 2 3];
pxds = pixelLabelDatastore(pxDir,classNames,pixelLabelID,'FileExtensions','.mat','ReadFcn',matReader);

ボリュームとピクセル ラベル データを読み取ります。L は categorical 行列であり、L(i,j,k)V(i,j,k) に割り当てられたカテゴリカル ラベルです。

V = read(imds);
L = read(pxds);

ラベル カテゴリを表示します。

categories(L)
ans = 3×1 cell array
    {'edema'            }
    {'nonEnhancingTumor'}
    {'enhancingTumour'  }

labelvolshow を使用して結果を可視化します。

h = labelvolshow(L,V);

この例では、イメージ ファイルから 3 次元イメージ データを読み取るための補助関数 samplePXDSMatReader を定義します。この関数は .MAT ファイルを読み込んで、ファイルに保存された最初の変数を返します。

function data = samplePXDSMatReader(filename)
    inp = load(filename);
    f = fields(inp);
    data = inp.(f{1});
end

ヒント

  • pixelLabelDatastore は、ファイルを辞書式順序で格納します。たとえば、'file1.jpg''file2.jpg'、…、'file11.jpg'、および 'file12.jpg' という名前の 12 個のファイルがある場合、ファイルは次の順序で格納されます。

    'file1.jpg'
    'file10.jpg'
    'file11.jpg'
    'file12.jpg'
    'file2.jpg'
    'file3.jpg'
    ...
    'file9.jpg'

    対照的に、imageDatastore は、データストアに追加された順にファイルを格納します。グラウンド トゥルース イメージとピクセル ラベル データを同時に読み取る場合、イメージとラベルの間の不一致が発生する可能性があります。これが発生した場合は、ピクセル ラベル ファイルの名前を変更して、適切な順序になるようにします。たとえば、'file1.jpg'、…、'file9.jpg' の名前を 'file01.jpg'、…、'file09.jpg' に変更します。

  • ビデオ ラベラーまたはグラウンド トゥルース ラベラーを使用して生成された groundTruth オブジェクトからセマンティック セグメンテーション データを抽出するには、関数 pixelLabelTrainingData を使用します。

R2017b で導入