MATLAB Answers

How to change imgae in imageLabelingSession.mat file

7 views (last 30 days)
Raza Ali
Raza Ali on 26 Sep 2020
Commented: Raunak Gupta on 6 Oct 2020
I have used Image labeler App to mark the labels. I saved the imageLabelingSession file and PixelLabelData files. Now I want to apply same PixelLabelData (groundtruth images) on other images which has same structure but different in terms of parameters(i used image processing method on thses images).
How can I repalce the image files in imageLabelingSession with out marking again.


Sign in to comment.

Answers (1)

Raunak Gupta
Raunak Gupta on 2 Oct 2020
I assume after doing the labeling you have exported the labels as a groundTruth object. The groundTruth object contains three field DataSource, LabelDefinitions and LabelData. You can replace the groundTruth.DataSource with a groundTruthDataSource object. This can be created by reading the replacement images into imageDatastore.
Below example code explains above steps:
% load groundTruth object created from exported labels
load groundTruth
% replaceImagedir :- directory where replacement images are stored
replaceImds = imageDatastore(replaceImagedir);
replaceDataSource = groundTruthDataSource(replaceImds);
% Replacing the Datasource to the new images
groundTruth.DataSource = replaceDataSource;


Show 1 older comment
Raunak Gupta
Raunak Gupta on 5 Oct 2020
You cannot give struct to imageDatastore as it doesn't take struct object (dir return a struct object naming all file in given path). You can give path directly to imageDatastore and mention the FileExtension as '.jpg' and it will create the datastore from it.
replaceImds = imageDatastore(D,'FileExtensions','.jpg');
You can read more here.
Raza Ali
Raza Ali on 6 Oct 2020
Error using groundTruthDataSource/parseAndPopulateInputs (line 473)
The value of 'SourceName' is invalid. Expected input number 1, Data Source Name (Image Sequence, Video Name or Custom Source Name), to be one of these types:
char, string, cell
Instead its type was
Error in groundTruthDataSource (line 187)
parseAndPopulateInputs(this, varargin{:});
Raunak Gupta
Raunak Gupta on 6 Oct 2020
I think dot indexing is not supported to replace the property in groundTruth object. You can either use below command or a standalone function which can replace links.
newgroundTruth = groundTruth(replaceDataSource,oldgroundTruth.LabelDefinitions,oldgroundTruth.LabelData);
The standalone function is changeFilePaths.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!