Fit plane to 3-D point cloud
fits a plane to a point cloud that has a maximum allowable distance from an
inlier point to the plane. The function returns a geometrical model that
describes the plane.
model = pcfitplane(
This function uses the M-estimator SAmple Consensus (MSAC) algorithm to find the plane. The MSAC algorithm is a variant of the RANdom SAmple Consensus (RANSAC) algorithm.
Load the point cloud.
Display and label the point cloud.
figure pcshow(ptCloud) xlabel('X(m)') ylabel('Y(m)') zlabel('Z(m)') title('Original Point Cloud')
Set the maximum point-to-plane distance (2cm) for plane fitting.
maxDistance = 0.02;
Set the normal vector of the plane.
referenceVector = [0,0,1];
Set the maximum angular distance to 5 degrees.
maxAngularDistance = 5;
Detect the first plane, the table, and extract it from the point cloud.
[model1,inlierIndices,outlierIndices] = pcfitplane(ptCloud,... maxDistance,referenceVector,maxAngularDistance); plane1 = select(ptCloud,inlierIndices); remainPtCloud = select(ptCloud,outlierIndices);
Set the region of interest to constrain the search for the second plane, left wall.
roi = [-inf,inf;0.4,inf;-inf,inf]; sampleIndices = findPointsInROI(remainPtCloud,roi);
Detect the left wall and extract it from the remaining point cloud.
[model2,inlierIndices,outlierIndices] = pcfitplane(remainPtCloud,... maxDistance,'SampleIndices',sampleIndices); plane2 = select(remainPtCloud,inlierIndices); remainPtCloud = select(remainPtCloud,outlierIndices);
Plot the two planes and the remaining points.
figure pcshow(plane1) title('First Plane')
figure pcshow(plane2) title('Second Plane')
figure pcshow(remainPtCloud) title('Remaining Point Cloud')
maxDistance— Maximum distance from an inlier point to the plane
Maximum distance from an inlier point to the plane, specified as a scalar value. Specify the distance in units that are consistent with the units you are using for the point cloud.
referenceVector— Reference orientation constraint
Reference orientation constraint, specified as a 1-by-3 vector.
maxAngularDistance— Maximum absolute angular distance
5degrees (default) | scalar value
Maximum absolute angular distance between the normal vector of the fitted plane and the reference orientation, specified as a scalar value in degrees.
comma-separated pairs of
the argument name and
Value is the corresponding value.
Name must appear inside quotes. You can specify several name and value
pair arguments in any order as
'SampleIndices'— Linear indices of points to be sampled
(default) | column vector
Linear indices of points to sample in the input point cloud, specified
as the comma-separated pair consisting of
SampleIndices' and a column vector. An empty
vector means that all points are candidates to sample in the RANSAC
iteration to fit the plane. When you specify a subset, only points in
the subset are sampled to fit a model.
'MaxNumTrials'— Maximum number of random trials
1000(default) | positive integer
Maximum number of random trials for finding inliers, specified as the
comma-separated pair consisting of '
and a positive integer. Increasing this value makes the output more
robust but adds additional computations.
'Confidence'— Confidence percentage for finding maximum number of inliers
99(default) | numeric scalar
Confidence percentage for finding maximum number of inliers, specified
as the comma-separated pair consisting of
Confidence' and a numeric scalar, in the range
[0 100]. Increasing this value makes the output more robust but adds
model— Geometric model of plane
Geometric model of plane, returned as a
When the input point cloud does not contain enough valid points, or when the function cannot find enough inlier points, the coefficients for the output model are set to zero.
inlierIndices— Linear indices of inlier points
Linear indices of inlier points within the input point cloud, returned as a column vector.
outlierIndices— Linear indices of outlier points
Linear indices of outlier points within the input point cloud, returned as a column vector.
meanError— Mean square error
Mean error of the distance of inlier points to the model, returned as a scalar value.
 Torr, P. H. S., and A. Zisserman. “MLESAC: A New Robust Estimator with Application to Estimating Image Geometry.” Computer Vision and Image Understanding. 2000.
Usage notes and limitations:
Supports code generation (requires MATLAB®
Coder™) only in generic
MATLAB Host Computer
Generates code that uses a precompiled, platform-specific shared library.