Filter löschen
Filter löschen

無作為な画像の切り抜き

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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Kenta
Kenta am 12 Jan. 2020
Bearbeitet: Kenta am 12 Jan. 2020
こんにちは、 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 Kommentare
Kenta
Kenta am 13 Jan. 2020
Bearbeitet: Kenta am 13 Jan. 2020
そうですか…コードを眺めてぱっと言えるのはこれくらいです。すいません。
Kodai Sato
Kodai Sato am 13 Jan. 2020
確認したところimds, pxdsの画像サイズが1ピクセルずれていたため,それが原因だと思います.
ありがとうございました.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!