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

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

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

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

  • groundTruth オブジェクトを含む MAT ファイル。このオブジェクトは、イメージ/ビデオ フレームと PNG ファイルとの間の対応関係を保存しています。オブジェクトには、マークした四角形またはポリラインも含まれます。

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

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

groundTruth オブジェクトは、ピクセル ラベル データ フォルダーのフォルダー パスと名前を格納します。このオブジェクトのグラウンド トゥルースの LabelData プロパティには、'PixelLabelData' 列の情報が含まれます。ピクセル データ ファイルの場所を変更する場合は、groundTruth オブジェクトに含まれる関連情報も更新しなければなりません。情報の更新には、関数 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(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)

参考

アプリ

オブジェクト

関連するトピック