フィルターのクリア

無作為な画像の切り抜き

7 ビュー (過去 30 日間)
Kodai Sato
Kodai Sato 2020 年 1 月 12 日
コメント済み: Kodai Sato 2020 年 1 月 13 日
セマンティックセグメンテーションを行うにあたって,データ数を増やすために1枚の画像からランダムで複数の画像を切り出したいと考えているのですがどのようなコードで可能なのでしょうか
  1 件のコメント
Kodai Sato
Kodai Sato 2020 年 1 月 12 日
例えば800×1000の画像からランダムに100×100で100サンプル取り出すといったものです.

サインインしてコメントする。

採用された回答

Kenta
Kenta 2020 年 1 月 12 日
編集済み: Kenta 2020 年 1 月 12 日
こんにちは、 randomCropWindow2d という関数を使えばできます。
ひとまずデータを拡張して、セマンティックセグメンテーションの性能を試したいということでしたら、
以下のようにしてもよいかもしれません。補助関数が入っていないので、添付のライブエディターを実行してください。
例えば、したのURLが参考になると思います。
ご質問にある、複数の画像の切り出しは以下のもので実行可能と思います。
また、randomPatchExtractionDatastoreを使うのもよいと思います。
練習のために、たくさん数を切り出したいのなら上の方法が、直感的でわかりやすいかもしれません。ただ、コーディング自体は下のやり方に倣うほうがシンプルでよいかもしれません。
詳細は下のURLをご覧ください。
clear;clc
numObservations = 4;
filenameImage = 'kobi.png';
trainImages = repelem({filenameImage},numObservations,1);
filenameLabels = 'kobiPixelLabeled.png';
trainLabels = repelem({filenameLabels},numObservations,1);
classes = ["floor","dog"];
ids = [1 2];
imds = imageDatastore(trainImages);
pxds = pixelLabelDatastore(trainLabels,classes,ids);
trainingData = combine(imds,pxds);
augmentedTrainingData = transform(trainingData,@jitterImageColorAndWarp);
data = readall(augmentedTrainingData);
inputSize=size(read(imds));
targetSize = [400 400];
I = imread(filenameImage);
L = imread(filenameLabels);
C = categorical(L,ids,classes);
resizedI = imresize(I,targetSize);
resizedC = imresize(C,targetSize);
B = labeloverlay(resizedI,resizedC);
figure;imshow(B)
imwrite(B,'dog.jpg')
preprocessedTrainingData = transform(augmentedTrainingData,...
@(data)randomCropImageAndLabel(data,targetSize));
data = readall(preprocessedTrainingData);
rgb = cell(numObservations,1);
for k = 1:numObservations
I = data{k,1};
C = data{k,2};
rgb{k} = labeloverlay(I,C);
end
figure;montage(rgb)
Cropped_I=getframe;
imwrite(imresize(Cropped_I.cdata,.5),'cropped.jpg')
  6 件のコメント
Kenta
Kenta 2020 年 1 月 13 日
編集済み: Kenta 2020 年 1 月 13 日
そうですか…コードを眺めてぱっと言えるのはこれくらいです。すいません。
Kodai Sato
Kodai Sato 2020 年 1 月 13 日
確認したところimds, pxdsの画像サイズが1ピクセルずれていたため,それが原因だと思います.
ありがとうございました.

サインインしてコメントする。

その他の回答 (0 件)

タグ

製品


リリース

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!