Contenido principal

findPointsInCylinder

Find points within a cylindrical region in a point cloud

Since R2023a

Description

indices = findPointsInCylinder(ptCloud,radius) finds the points within a cylindrical neighborhood of the specified radius in a point cloud, ptCloud.

example

indices = findPointsInCylinder(___,Name=Value) specifies options using one or more name-value arguments in addition to the previous syntax. For example, Height=10, sets the height of the cylinder to 10.

Examples

collapse all

Load a point cloud from a saved MAT file.

load("drivingLidarPoints.mat","ptCloud")

Specify a hollow cylindrical neighborhood with an inner radius of 2 meters and an outer radius of 15 meters, and find the points in the point cloud within the neighborhood.

minRadius = 2;
maxRadius = 15;

indices = findPointsInCylinder(ptCloud,[minRadius maxRadius]);

Select the cylindrical neighborhood in the point cloud, preserving the organized format.

ptCloudCylinder = select(ptCloud,indices,OutputSize="full");

Visualize the selected points.

figure
pcshow(ptCloudCylinder)

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

Load a point cloud from a saved MAT file.

load("object3d.mat","ptCloud")
maxRadius = 0.1;
cylinderHeight = 0.5;

Offset the center of the cylinder 0.6 units in the X-direction and 0.2 units in the Z-direction. Then, find and select the points of the point cloud within the cylinder.

shiftedCenter = [0.6 0 0.2];
indices = findPointsInCylinder(ptCloud,maxRadius,Height=cylinderHeight,Center=shiftedCenter,VerticalAxis="Z");
ptCloudCylinder = select(ptCloud,indices);

Visualize the selected points.

figure
pcshow(ptCloudCylinder)

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

Input Arguments

collapse all

Point cloud, specified as a pointCloud object.

Cylinder radius, specified as a scalar or a 2-element vector of the form [minRadius maxRadius] that specifies the inner and outer radii of the cylindrical neighborhood. The radius is along the Z-axis of the point cloud and with [0 0 0] as its origin. The function finds the neighbors within the specified radius along the defined VerticalAxis with its origin at the Center of the cylinder.

Name-Value Arguments

collapse all

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: Height=10 sets the height of the cylinder to 10.

Total height of cylinder, specified as a positive scalar. The height is measured along the cylinder’s vertical axis, VerticalAxis. The cylinder is centered at its midpoint, the Center, with half of the height extending in one direction along the vertical axis and the other half extending in the opposite direction.

Cylinder positioned in a point cloud with the cylinder height labeled.

Center of the cylinder, specified as a 3-element vector of the form [x y z] in Cartesian coordinates. The center point is halfway between the top and bottom of the cylinder, and the axis of the cylinder passes through it.

Cylinder positioned in a point cloud with the cylinder center point labeled.

Vertical axis of the cylinder, specified as "X", "Y", or "Z".

Output Arguments

collapse all

Logical indices of the points within a cylindrical neighborhood, returned as a column vector for unorganized point clouds or a matrix for organized point clouds. For organized point clouds. indices is the same size as the input point cloud, and each element with a value of 1 (true) indicates that the corresponding index of the input point cloud references a point inside the specified cylindrical neighborhood.

Extended Capabilities

expand all

GPU Code Generation
Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

Version History

Introduced in R2023a

See Also

Functions

Objects