Main Content


Add view to map



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);

Figure contains an axes. The axes contains an object of type scatter.

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 deleteSegment 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.

See Also



Introduced in R2021a