イメージラベラーで特定の色の箇所だけ、ラベリングする方法
5 views (last 30 days)
Show older comments
Natsuo OKADA
on 24 Apr 2019
Edited: Tohru Kikawada
on 11 May 2019
上記の画像の赤色の部分だけ、ラベリングをしたいのですが塗りつぶし以外で方法はあるのでしょうか?
0 Comments
Accepted Answer
Tohru Kikawada
on 7 May 2019
Edited: Tohru Kikawada
on 11 May 2019
赤色の部分を抽出してラベル画像化する方法があります。
ご参考になれば幸いです。
%% 画像を保存
imDir = 'images';
[~,~,~] = mkdir(imDir);
websave(fullfile(imDir,'image.png'),'https://www.mathworks.com/matlabcentral/answers/uploaded_files/215647/image.png');
%% 色のしきい値(Color Thresholder)を使って着色部分を取り出し
% 赤い部分のみ取り出すしきい値を決めてエクスポートからcreateMask関数を生成し保存
I = imread('image.png');
colorThresholder(I);
%% 着色されたラベル画像を読み込み
imds = imageDatastore(imDir);
pxDir = 'pixelLabels';
[~,~,~] = mkdir(pxDir);
for k = 1:imds.numpartitions
I = imread(imds.Files{k});
[folder,file,ext] = fileparts(imds.Files{k});
BW = createMask(I);
Ilabel = im2uint8(BW);
imwrite(Ilabel,fullfile(pxDir,[file ext]));
end
pxds = imageDatastore(pxDir);
%% イメージラベラーに読み込める形式に変換
dataSource = groundTruthDataSource(imds.Files);
ldc =labelDefinitionCreator();
addLabel(ldc,'myLabel',labelType.PixelLabel);
labelDefs = create(ldc);
labelDefs.PixelLabelID = {255};
dataFile = pxds.Files;
labelData = table(dataFile,'VariableNames',{'PixelLabelData'})
gTruth = groundTruth(dataSource,labelDefs,labelData)
%% イメージラベラーでgTruthをインポート
imageLabeler
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!