How to join or merge two Image Data Stores?

59 Ansichten (letzte 30 Tage)
kowshik Thopalli
kowshik Thopalli am 26 Feb. 2017
Bearbeitet: Matt J am 28 Jun. 2022
If I have two image datastores and I wish to concatenate them. How can I do that?
Thanks
  1 Kommentar
Sherin Aly
Sherin Aly am 13 Jan. 2018
Bearbeitet: Sherin Aly am 13 Jan. 2018
It was a bit tricky but I was able to merge 2 datastores as follows:
imds1 = imageDatastore(location of DS 1,'IncludeSubfolders',true,'LabelSource','foldernames');
imds2 = imageDatastore(imds2 location,'IncludeSubfolders',true,'LabelSource','foldernames');
% create a dummy dataset with the same size of the combined datastores (if ds1 has 100 images and ds2 has 100 images then dummy has 200 images. I made a folder with some photos with equal number of the 2 datastores)
dummy = imageDatastore('Dummy data store locaation','IncludeSubfolders',true,'LabelSource','foldernames');
% note: below this line you can use any datastore variable you want to merge including the ones you get after splitting training and testing
dummy.Files=[imds1.Files;imds2.Files];
dummy.Labels=[imds1.Labels;imds2.Labels];
% Now dummy is the new combined datastore and you can use all datastore functions

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Zhiqiang Qiu
Zhiqiang Qiu am 22 Jan. 2018
I know it is an ancient problem, but I just to make it a better reference for other people.
imds1 = imageDatastore('imds1 location', ...);
imds2 = imageDatastore('imds2 location', ...);
imds_combine = imageDatastore({'imds1 location', 'imds2 location'}, ...);
Just combine the address of these two locations. The following parameters are all the same.
  1 Kommentar
habtamu miheretie
habtamu miheretie am 7 Sep. 2018
that is cool answer! i have very similar problem. when i create the data store the files are not in the same order as in the folder. how can i make that possible? i need it because the label i use is coming from another .csv file. so i need to match the order to process the images easily. can anyone help me on this please?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (5)

Hana
Hana am 18 Jan. 2018
I met the same problem and saw your post. Finally I find out a way:
imds = imageDatastore(cat(1,imds1.Files,imds2.Files))
imds.Labels = cat(1,imds1.Labels,imds2.Labels)
It works for me.
  5 Kommentare
Silvia Guatelli
Silvia Guatelli am 19 Mär. 2021
Excelente!!! Muchas gracias!
Joseph Garrett
Joseph Garrett am 9 Jan. 2022
perfect. thank you so much!!

Melden Sie sich an, um zu kommentieren.


berkan
berkan am 22 Mai 2017
allImages.Files=[test1.Files;test2.Files]; allImages.Labels=[test1.Labels;test2.Labels];
  1 Kommentar
Sascha D. Krauß
Sascha D. Krauß am 3 Jul. 2017
Unfortunately, this produces a struct instead of a new datastore - and I could not find a way to convert it back. This means, that you cannot use the datastore specific functions like "countEachLabel" etc. Does anyone know another solution?

Melden Sie sich an, um zu kommentieren.


KSSV
KSSV am 27 Feb. 2017
A = imread('ngc6543a.jpg');
B = imread('peppers.png');
%%resize the images so that they have same dimensions
A_resize = imresize(A,[size(B,1) size(B,2)]) ;
%%join them
AB = [A_resize B] ;
imshow(AB) ;
  1 Kommentar
kowshik Thopalli
kowshik Thopalli am 27 Feb. 2017
Bearbeitet: kowshik Thopalli am 27 Feb. 2017
Hi, Thanks for the answer, however I am looking to merge two
imageDatastore

Melden Sie sich an, um zu kommentieren.


Aasim Khurshid
Aasim Khurshid am 30 Dez. 2020
Bearbeitet: Matt J am 28 Jun. 2022
There is a better way to do this,
imds = imageDatastore({fullfile(imgFolder1Adress),fullfile(imgFolder2Adress),fullfile(imgFolder3Adress)},...
'IncludeSubfolders',true,'FileExtensions','.png','LabelSource','foldernames');

Matt J
Matt J am 28 Jun. 2022
Bearbeitet: Matt J am 28 Jun. 2022
Perhaps by wrapping them in a TransformedDataStore (R2019a and higher),
imdsnew = transform(imds1,imds2, @(x) x)

Kategorien

Mehr zu Convert Image Type finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by