Load signals from custom image sources into Ground Truth Labeler app
vision.labeler.loading.CustomImageSource class creates an interface for
loading signals from custom image data sources into the Ground
Truth Labeler app. In the Add/Remove Signal dialog box of the app, when
Source Type is set to
Custom Image, this
class controls the parameters in that dialog box.
To access this dialog box, in the app, select Import > Add Signals.
vision.labeler.loading.CustomImageSource class is a
When you export labels from a Ground Truth Labeler app session that contains
custom image sources, the exported
groundTruthMultisignal object stores instances of this class in its
To create a
CustomImageSource object programmatically, such as when
programmatically creating a
groundTruthMultisignal object, use the
vision.labeler.loading.CustomImageSource function (described
customImgSource = vision.labeler.loading.CustomImageSource
CustomImageSource object for loading signals from custom image
data sources. To specify the data source and the parameters required to load the source,
Name — Name of source type
"Custom Image" (default) | string scalar
Name of the type of source that this class loads, specified as a string scalar.
Description — Description of class functionality
"A custom image source reader" (default) | string scalar
Description of the functionality that this class provides, specified as a string scalar.
SourceName — Name of data source
 (default) | string scalar
Name of the data source, specified as a string scalar. Typically,
SourceName is the name of the file from which the signal is
SourceParams — Parameters for loading custom image signal from data source
 (default) | structure
Parameters for loading a custom image signal from a data source, specified as a structure.
This table describes the required and optional fields of the
|Field||Description||Required or Optional|
|Custom reader function for reading images from the data source, specified as a function handle. In the Add/Remove Signal dialog box of the app, specify this function handle in the Custom Reader Function parameter. For details on creating a custom reader function, see Use Custom Image Source Reader for Labeling.|
Timestamps for the custom image signal, specified as a cell array
containing a single
In the Add/Remove Signal dialog box of
the app, when you click the Import from Workspace
button to read the timestamps from a variable in the MATLAB workspace, then the
SignalName — Names of signals in data source
 (default) | string vector
Names of the signals that can be loaded from the data source, specified as a string vector.
SignalType — Types of signals in data source
 (default) | vector of
Types of the signals that can be loaded from the data source, specified as a vector of
vision.labeler.loading.SignalType enumerations. Each signal listed in the
SignalName property is of the type in the corresponding position of
Timestamp — Timestamps of signals in data source
 (default) | cell array of
Timestamps of the signals that can be loaded from the data source, specified as a cell array
duration vectors. Each signal listed in the
SignalName property has the timestamps in the corresponding
NumSignals — Number of signals in data source
0 (default) | integer
Number of signals that can be read from the data source, specified as a nonnegative integer.
NumSignals is equal to the number of signals in the
Customize the loading panel for the data source object. In the loading dialog box of the app, this method is invoked when you select the data source type from the Source Type list.
Obtain the data needed to load the data source object currently selected in the loading panel. In the loading dialog box of the app, this method is invoked when you add a source. The method returns these outputs.
[sourceName,sourceParams] = getLoadPanelData(sourceObj)
Both of these outputs are passed to the
Load a data source object into the app. In the loading dialog box of the app, this method is invoked after you add a source and the
Read a frame of data from a signal contained in a data source object at the specified timestamp index. The index must be in the bounds of the length of the timestamps for that signal.
frame = readFrame(sourceObj,signalName,tsIndex)
Check the load panel for the loading dialog box of the app. This method opens a dialog box similar to the loading dialog box that you open from the Open menu on the app toolstrip. Use this method to preview how the
Create Custom Image Source
Specify the path to a folder containing a sequence of road images.
imageFolder = fullfile(toolboxdir('driving'),'drivingdata','roadSequence');
Store the images in an image datastore. The Ground Truth Labeler app and
groundTruthMultisignal object do not natively support image datastores, so it is considered a custom image data source.
imds = imageDatastore(imageFolder);
Write a reader function,
readerFcn, to read images from the datastore. The first input argument to the reader function,
sourceName, is not used. The second input argument,
currentTimestamp, is converted from a
duration scalar to a 1-based index. This format is compatible with reading images from the datastore.
readerFcn = @(~,idx)readimage(imds,seconds(idx));
Create a custom image source. Load the source name, reader function, and first five timestamps of the datastore into the
sourceName = imageFolder; sourceParams = struct(); sourceParams.FunctionHandle = readerFcn; sourceParams.Timestamps = seconds(1:5); customImgSource = vision.labeler.loading.CustomImageSource; loadSource(customImgSource,sourceName,sourceParams)
Read the first frame in the sequence. Display the frame.
signalName = customImgSource.SignalName; I = readFrame(customImgSource,signalName,1); figure imshow(I)
You can this class as a starting point for creating a custom data source loading class. To view the source code for this class, use this command:
Introduced in R2020a