Contenido principal

Multi-Sensor Labeler

R2026b

Label ground truth data in images, videos, and point clouds across multi-sensor scenes

Since R2026b

Description

The Multi-Sensor Labeler app enables you to label ground truth data in videos, image sequences, and lidar point clouds from multiple sensors capturing the same scene.

Using the app, you can:

  • Simultaneously label multiple time-overlapped signals representing the same scene.

  • Define rectangular, rotated rectangular, point, line, polygon, projected cuboid, cuboid, pixel, Semantic Point, and scene label definitions. Use these labels to interactively label your ground truth data.

  • Use Semantic Point tools including brush, lasso and cluster selection to label individual points in point cloud data.

  • Use built-in AI-assisted detection and tracking algorithms to label ground truth data automatically.

  • Write, import, and use custom automation algorithms to automatically label ground truth data.

  • Label data in burst mode, which enables you to draw labels on static objects and apply those labels across multiple frames simultaneously.

  • Use the Projected View option to view point cloud labels in top, front, and side views simultaneously.

  • Use the XY View, YZ View, and XZ View options to get the top view, front view, and side view of a point cloud scene, respectively.

  • Use the Camera View option to create and reuse custom views of the point cloud data.

  • Use the Auto Align option to rotate and best fit a cuboid to a cluster.

  • Remove the ground plane from point cloud scenes for clearer labeling.

  • Evaluate the performance of your label automation algorithms by using a visual summary.

  • Export the ground truth labels as a groundTruthMultiSensor object. You can use this object for system verification or for creating training data for object detection, semantic segmentation or instance segmentation networks.

  • Display time-synchronized signals, such as CAN bus data, by using the lidar.connector.Connector class.

The app supports videos, image sequences, and a variety of point cloud formats including PLY, PCD, LAS, LAZ, and E57 files, and Velodyne, Hesai, and Ouster PCAP files. The app also supports ROS (.bag) and ROS 2 (.db3, .mcap) bag files, which can contain both image and point cloud signals.

To learn more about this app, see Get Started with Multi-Sensor Labeler.

The Multi-Sensor Labeler app consolidates and replaces the Ground Truth Labeler (Automated Driving Toolbox) and Lidar Labeler apps into a single, unified labeling environment. If you are transitioning from these apps, see Migrate from Ground Truth Labeler and Lidar Labeler Apps to Multi-Sensor Labeler App.

Multi-Sensor Labeler App

Open the Multi-Sensor Labeler App

  • MATLAB® Toolstrip: On the Apps tab, under Image Processing and Computer Vision, click the app icon.

  • MATLAB command prompt: Enter multiSensorLabeler.

Programmatic Use

multiSensorLabeler opens a new session of the app, enabling you to label ground truth data.

multiSensorLabeler(videoFileName) opens the app and loads the input video. The video file must have an extension supported by VideoReader.

Example: multiSensorLabeler("caltech_cordova1.avi")

multiSensorLabeler(imageSeqFolder) opens the app and loads the image sequence from the input folder. An image sequence is an ordered set of images that resembles a video.

imageSeqFolder must be a string scalar or character vector that specifies the folder containing the image files. The image files must have extensions supported by imformats and are loaded in the order returned by the dir function.

multiSensorLabeler(imageSeqFolder,timestamps) opens the app and loads a sequence of images with their corresponding timestamps. timestamps must be a duration vector of the same length as the number of images in the sequence.

For example, load a sequence of road images and their corresponding timestamps into the app.

imageDir = fullfile(toolboxdir("driving"),"core","drivingdata","roadSequence");
load(fullfile(imageDir,"timeStamps.mat"))
multiSensorLabeler(imageDir,timeStamps)

multiSensorLabeler(ptCloudSeqFolder) opens the app and loads the point cloud sequence from the folder ptCloudSeqFolder, where ptCloudSeqFolder is a string scalar or character vector specifying a folder that contains point cloud files. The point cloud files must have extensions supported by pcformats, and are loaded in the order returned by the dir function.

multiSensorLabeler(ptCloudSeqFolder,timestamps) opens the app and loads a point cloud sequence with corresponding timestamps. timestamps must be a duration vector of the same length as the number of point cloud files in the sequence.

Example: multiSensorLabeler("D:\data",seconds(0:9))

multiSensorLabeler(pcapFile,sensorModel,calibrationFile) opens the app and loads point cloud data from a PCAP file recorded by a Velodyne or Hesai lidar sensor. pcapFile is a string scalar or character vector specifying the path to the PCAP file. sensorModel is a string scalar or character vector specifying the sensor model (for example, "VLP16" or "Pandar128E3X"). calibrationFile is a string scalar or character vector specifying the path to the sensor calibration file.

For supported Velodyne sensor models, see velodyneFileReader. For supported Hesai sensor models, see hesaiFileReader.

Example: multiSensorLabeler("vlp16.pcap","VLP16","VLP-16.xml") multiSensorLabeler("busy_road.pcap","Pandar128E3X","Pandar128_calibration.csv")

multiSensorLabeler(pcapFile,calibrationFile) opens the app and loads point cloud data from a PCAP file recorded by an Ouster lidar sensor. pcapFile is a string scalar or character vector specifying the path to the PCAP file. calibrationFile is a string scalar or character vector specifying the path to the sensor metadata JSON file.

For supported Ouster sensor models, see ousterFileReader.

Example: multiSensorLabeler("OS-DOME-128.pcap","OS-DOME-128.json")

multiSensorLabeler(sessionFile) opens the app and loads a saved app session from the session file, sessionFile. The sessionFile input contains the path to and name of the .prj project file saved from the Multi-Sensor Labeler app.

You can also use this syntax to load legacy session files from the Ground Truth Labeler app (.prj or .mat project files) and the Lidar Labeler app (.mat session files). The app automatically converts these into Multi-Sensor Labeler app sessions.

Note

Support for loading legacy Ground Truth Labeler and Lidar Labeler session files will be removed in a future release. To preserve your work, open the legacy sessions in the Multi-Sensor Labeler app and save them as a project file.

multiSensorLabeler(gTruth) opens the app and loads a ground truth object. The gTruth input is a groundTruthMultiSensor object. The ground truth object data source must be an image sequence, video, point cloud sequence, or a custom data source.

You can also use this syntax to load a groundTruthMultisignal (Automated Driving Toolbox) object exported from the Ground Truth Labeler app or a groundTruthLidar object exported from the Lidar Labeler app.

Note

Support for loading groundTruthMultisignal (Automated Driving Toolbox) and groundTruthLidar objects exported from Ground Truth Labeler and Lidar Labeler apps will be removed in a future release. To preserve your work, load the groundTruthMultisignal and groundTruthLidar objects in the Multi-Sensor Labeler app and export them as groundTruthMultiSensor objects.

multiSensorLabeler(___,"ConnectorTargetHandle",connector) opens the app and loads both of these components:

  • A signal, depending on the input argument combination you specify

  • An external analysis or visualization tool that is time-synchronized with the specified signal

The connector input is a handle to a lidar.connector.Connector class that implements the external tool. You can also use this syntax with a connector that inherits from driving.connector.Connector (Automated Driving Toolbox) supported by the Ground Truth Labeler app.

Note

Support for loading connectors that inherit from driving.connector.Connector (Automated Driving Toolbox) will be removed in a future release. Update your connectors to inherit from lidar.connector.Connector instead.

For example, this syntax opens the app with a video signal and a synchronized lidar visualization tool.

multiSensorLabeler("01_city_c2s_fcw_10s.mp4","ConnectorTargetHandle",@LidarDisplay);

When you have an external tool connected to a signal in the app, consider these tips.

  • If you remove the signal that is connected to the tool, the app disconnects the tool and closes it.

  • The signal connected to the tool must be the main signal, that is, the signal whose timestamps are used in the playback controls at the bottom of the app. If you change the main signal, the app disconnects the tool and closes it.

  • If you start a new app session, the app disconnects the tool and closes it.

Limitations

  • Semantic Point ROI labels do not support sublabels or attributes.

  • Pixel ROI labels do not support sublabels or attributes.

  • Cuboid ROI labels do not support sublabels.

  • The Label Summary window does not support sublabels or attributes.

More About

expand all

Tips

  • To avoid having to relabel ground truth with new labels, organize the labeling scheme you want to use before marking your ground truth.

  • You can copy and paste labels between signals that are of the same type.

  • Remove the ground plane to clearly view the created object labels in point cloud signals.

  • Use the rotate, translate, expand, and shrink options to edit cuboids after drawing them.

  • Use the Camera View option to save a view of the point cloud data from the current angle and direction.

  • Use burst mode to label static objects across multiple point cloud frames simultaneously.

Algorithms

expand all

The Multi-Sensor Labeler app provides semi-automated and fully automated labeling options for both image and point cloud signals. Semi-automated algorithms require initial guidance — such as drawing labels on key frames — before propagating labels across the remaining frames. Fully automated algorithms process data and generate labels without manual input. Custom automation algorithms require implementing your own algorithms using the template interfaces provided by the app to enable automated labeling. This table summarize the automated labeling features of the Multi-Sensor Labeler app for images and point clouds:

Automation TypeImage SignalsPoint Cloud Signals
Semi-Automated Algorithms (Built-In)Point Tracker, Temporal InterpolatorBurst Mode, Lidar Object Tracker, Point Cloud Temporal Interpolator
Fully Automated Algorithms (Built-In)

ACF People Detector

ACF Vehicle Detector, Lane Boundary Detector (requires Automated Driving Toolbox™)

Pretrained PointPillars, SalsaNext, and SqueezeSegV2 Models
Custom Algorithms (Examples)Automate Vehicle Labels and Distance Attributes Using YOLOv2 in Multi-Sensor LabelerAutomate Point Cloud Labeling Using SNAP Model

Version History

Introduced in R2026b

expand all