www.gusucode.com > vision 源码程序 matlab案例代码 > vision/DetectMultiplePlanesFromPointCloudExample.m
%% Detect Multiple Planes from Point Cloud % %% % Load the point cloud. load('object3d.mat') %% % 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')