Main Content


Add view to map

Since R2021a



sMapOut = addView(sMapIn,viewId,features) adds a view, viewId, that contains the specified features features to the map sMapIn.

sMapOut = addView(sMapIn,viewId,features,segments) adds the segments segments that correspond to each feature.


collapse all

Create a map representation to hold point cloud segments and features.

sMap = pcmapsegmatch('CentroidDistance',1);

Load point cloud scans.

data = load('fullParkingLotData.mat');
ptCloudScans = data.fullParkingLotData;

Set the radius to select a cylindrical neighborhood.

outerCylinderRadius = 30;
innerCylinderRadius = 3;

Set the threshold parameters for segmentation.

distThreshold = 0.5;
angleThreshold = 180;

Segment each point cloud and add the features and point cloud segments to the map.

for n = 1:numel(ptCloudScans);
    ptCloud = ptCloudScans(n);

    % Segment and remove the ground plane.
    groundPtsIdx = segmentGroundFromLidarData(ptCloud,'ElevationAngleDelta',11);
    ptCloud = select(ptCloud,~groundPtsIdx,'OutputSize','full');

    % Select cylindrical neighborhood.
    dists = sqrt(ptCloud.Location(:,:,1).^2 + ptCloud.Location(:,:,2).^2);
    cylinderIdx = dists <= outerCylinderRadius ...
        & dists > innerCylinderRadius;
    ptCloud = select(ptCloud,cylinderIdx,'OutputSize','full');

    % Segment the point cloud.
    [labels, numClusters] = segmentLidarData(ptCloud,distThreshold,angleThreshold,'NumClusterPoints',[50 5000]);

    % Extract features from the point cloud.
    [features,segments] = extractEigenFeatures(ptCloud,labels);

    % Add the features and segments to the map.
    sMap = addView(sMap,n,features,segments);

Display the map of segments.

figure; show(sMap);

Input Arguments

collapse all

Original map of segments and features, specified as a pcmapsegmatch object.

View identifier, specified as an integer. Each view identifiers is unique to a specific view.

Eigenvalue-based features, specified as a vector of eigenFeature objects. The function filters out features that already exist in the map are filtered out as duplicates based on their centroid location and the distance specified by the CentroidDistance property of the map.

You should extract new features from only a point cloud registered to the point clouds of existing features

Point cloud segments, specified as a vector of pointCloud objects. To use the show object function for visualization, you must specify this argument.

For improved performance, do not include segments in the map with findPose and updateMap object functions. Alternatively, you can use the deleteSegments object function to remove the existing segments before using findPose or updateMap.

Output Arguments

collapse all

Updated map of segments and features, returned as a pcmapsegmatch object.

Version History

Introduced in R2021a

See Also