Set union of Datastores with TransformedDatastores

13 views (last 30 days)
Matt J
Matt J on 26 Jul 2019
Edited: Carlos Ramirez on 8 Sep 2020
Given an imageDatastore and some transformation of it, e.g.,
imds1 = imageDatastore({'street1.jpg','peppers.png'});
imds2 = transform(imds1,@(x) imwarp(x,tform));
I would like to form the set union of these data stores in some way so that trainNetwork processes the series of images from both imds1 and imds2 as a single combined set (and similarly with the response data). Is this possible in some way?
I am aware that this functionality is somewhat captured by augmentedImageDatastore, but the operation I describe would open up a variety of data augmentation schemes not currently avaialble.
I am also aware of this thread,
but this does not cover what I am pursuing here, because the images in a TransformedDatastore are not physically stored anywhere (nor would I want them to be).

Accepted Answer

Jeremy Hughes
Jeremy Hughes on 26 Jul 2019
Edited: Jeremy Hughes on 26 Jul 2019
Horizontal (i.e. associated reads)
cds = combine(imds,otherds);
Vertical (i.e. joining two sets of files into one datastore)
imds = imageDatastore({'folder1/*.jpg','folder2/*.png'});
Or leave off the extensions
imds = imageDatastore({'folder1/','folder2/'});
Carlos Ramirez
Carlos Ramirez on 8 Sep 2020
Hi, did you ever manage to solve this ?. I don't really understand what's the purpose of the function combine(idms,idms2) (with idms2 being a transformed one) if later the read function returns two images at the same time. How useful is that for training a CNN using trainNetwork ?. Similat to the original question, I do not want to physically store the augmented images created by the transform function. Any help ?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by