for文内で作成した​imageDatas​toreの結合

1つのフォルダの中に3つのサブフォルダがありそれぞれにimageが何枚かずつ保存されている場合、
以下のように親となるフォルダを指定しまとめてイメージデータストアを作成できることは確認しました。
%参照したいimageが含まれるサブフォルダの手前までのパス
datasetpath = " ";
imds = imageDatastore(path,'IncludeSubfolders',true,'LabelSource','foldernames');
対して、以下のようにfor文内でそれぞれサブフォルダごとのイメージデータストアを作成して結合させることで上記と同じイメージデータストアを作成することは可能でしょうか。
%参照したいimageが含まれるサブフォルダのパス
datasetpath = [" "," "," "];
for i=1:length(datasetpath)
path = datasetpath{i};
imds = imageDatastore(path,'IncludeSubfolders',true,'LabelSource','foldernames');
end

 Akzeptierte Antwort

Hernia Baby
Hernia Baby am 7 Mär. 2022

1 Stimme

2つ方法があります
1. combine関数 でデータストアを統合する
imdsCombined = combine(imdsdsL,imdsdsR);
2. cellで複数のpathを格納して読み込む
imdsCombined = datastore({'path to dsL', 'path to dsR'},'Type','tall')

3 Kommentare

Atsushi Ueno
Atsushi Ueno am 9 Mär. 2022
※以下「イメージデータストア」を「imds」とします
>for文内でそれぞれサブフォルダごとのimdsを作成して結合させることで上記と同じimdsを作成することは可能でしょうか ⇒YES 可能です。しかし、新規にimdsを作成する場合はそうすべきではありません。
回答の2つの方法はどちらも有効ですが、似て非なるオブジェクトを生成する異なる処理です。前者のCombinedDatastore オブジェクトは複数のimdsを纏めた物で各imdsの中身迄は融合されません。
  1. combine関数:複数の(既存の)imdsを結合する処理 ⇒ CombinedDatastore オブジェクト
  2. datastore関数:複数のパスからimdsを作成する処理 ⇒ ImageDatastore オブジェクト
「1. combine関数 でimdsを統合する」は既存のimdsを結合する際に使用すべきです。
%% YES(回答の1)
datasetpath = [" "," "," "];
imdsCombined = imageDatastore({}); % 空のimdsを定義(for文内での結合に必要)
for i = 1:length(datasetpath)
path = datasetpath{i};
imds = imageDatastore(path,'IncludeSubfolders',true,'LabelSource','foldernames');
imdsCombined = combine(imdsCombined, imds);
end
% imdsCombinedに本来は不要な空のimdsが消えずに残ります(問題にはなりません)
% 空のimdsを定義せず、for文内ではimdsをセル配列に纏め、for文外でcombine関数を使えば解消します
%combine(imds{:});
「2. cellで複数のpathを格納して読み込む」は新たにimdsを作る際に使用すべきです。質問冒頭のプログラムそのままで動作します。
%% NO(回答の2)
datasetpath = [" "," "," "]; %参照したいimageが含まれるサブフォルダの手前までのパス
imdsCombined = imageDatastore(datasetpath,'IncludeSubfolders',true,'LabelSource','foldernames');
Atsushi Ueno
Atsushi Ueno am 9 Mär. 2022
>上記と同じimdsを作成することは可能でしょうか
CombinedDatastore オブジェクトは複数のimdsを纏めた物で各imdsの中身迄は融合されません
だから、質問の答えはNOですね。
so ss
so ss am 13 Mär. 2022
事細かに説明いただき有難うございます。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Gefragt:

am 7 Mär. 2022

Kommentiert:

am 13 Mär. 2022

Community Treasure Hunt

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

Start Hunting!