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

ラベラー アプリにおけるエクスポートしたピクセル ラベルの保存方法

イメージ ラベラービデオ ラベラー、またはグラウンド トゥルース ラベラー (Automated Driving Toolbox) (Automated Driving Toolbox™ が必要) アプリでピクセル ラベルを作成してエクスポートすると、2 セットのデータが保存されます。

  • PixelLabelData という名前のフォルダー。このフォルダーには、ピクセル ラベル情報の PNG ファイルが含まれます。これらのラベルは、インデックス値として符号化されています。

  • ピクセル ラベル データとその他のラベル データを含む MAT ファイル。このデータは groundTruth オブジェクトに保存されるか、またはグラウンド トゥルース ラベラー アプリを使用している場合は groundTruthMultisignal (Automated Driving Toolbox) オブジェクトに保存されます。ピクセル ラベル データの場合、このオブジェクトは、イメージ/ビデオ フレームと PNG ファイル との間の対応関係も保存しています。

PixelLabelData フォルダーに含まれる PNG ファイルは、categorical 行列として保存されています。この categorical 行列には、各カテゴリに割り当てられた値が含まれています。categorical はデータ型です。categorical 行列は、非数値データを効率的に保存して操作するのに適しています。また、意味のわかりやすい名前を値に維持することもできます。これらの行列は、セマンティック セグメンテーション グラウンド トゥルースの自然な表現であり、各ピクセルは事前定義されたラベルのカテゴリの 1 つです。

ピクセル ラベル データ フォルダーの場所

グラウンド トゥルース オブジェクトは、ピクセル ラベル データ フォルダーのフォルダー パスと名前を格納します。groundTruth オブジェクトの LabelData プロパティ、または groundTruthMultisignal オブジェクトの ROILabelData プロパティには、'PixelLabelData' 列の情報が含まれます。ピクセル データ ファイルの場所を変更する場合は、グラウンド トゥルース オブジェクトに含まれる関連情報も更新しなければなりません。情報の更新には、関数 changeFilePaths を使用できます。

エクスポートしたピクセル ラベル データの表示

ラベラー アプリは、各カテゴリを表す uint8 値と共に、セマンティック セグメンテーション グラウンド トゥルースを可逆圧縮の PNG ファイルとして保存します。アプリでは、関数 categorical を使用して、uint8 値をカテゴリに関連付けます。ピクセル データを表示するには、イメージにカテゴリを重ね合わせるか、ラベル付けされたイメージからデータストアを作成します。

イメージにカテゴリを重ね合わせて、エクスポートしたピクセル ラベル データを表示する

関数 imread を、関数 categorical および labeloverlay と共に使用します。categorical 行列からピクセル データを直接表示することはできません。エクスポートしたピクセル ラベル データの表示を参照してください。

ラベル付けされたイメージのデータストアからエクスポートしたピクセル ラベル データの表示

関数 pixelLabelDatastore を使用して、ラベル付けされた一連のイメージからデータストアを作成します。関数 read を使用して、ピクセル ラベル データを読み取ります。ピクセル ラベル データの読み取りと表示を参照してください。

エクスポートしたピクセル ラベル データの表示

イメージと、ラベラー アプリからエクスポートした対応するピクセル ラベル データを読み取ります。

visiondatadir = fullfile(toolboxdir('vision'),'visiondata');
 
buildingImage = imread(fullfile(visiondatadir,'building','building1.JPG'));
buildingLabels = imread(fullfile(visiondatadir,'buildingPixelLabels','Label_1.png'));

buildingLabels で、各ピクセル値のカテゴリを定義します。

labelIDs = [1,2,3,4];
labelcats = ["sky" "grass" "building" "sidewalk"];

イメージと定義を使用して categorical 行列を作成します。

buildingLabelCats = categorical(buildingLabels,labelIDs,labelcats);

イメージにカテゴリを重ねて表示します。

figure
imshow(labeloverlay(buildingImage,buildingLabelCats))

ピクセル ラベル データの読み取りと表示

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

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

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(pxds) は、categorical 行列 C を返します。この行列の要素 C(i,j) は、位置 l(i,j) のピクセルに割り当てられたカテゴリカル ラベルです。

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

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

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

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

B = labeloverlay(I,C{1});
figure
imshow(B)

参考

アプリ

オブジェクト

関数

関連するトピック