MATLAB: How can i use ‘pcdownsampling’ from Computer Vision System Toolbox

distancedowndownsamplingMATLABminimumradiussampling

I would like to downsample a cloud of points such as no points is within a given distance of each other. In other word, I would like to downsample such that the minimum distance between the remaining point is higher than a threshold value. Using the 'gridAverage' method, the minimum distance between point is not higher than the 'gridStep', as shown here:
 
>> ptCloud = pcread('teapot.ply');
>> gridStep = 0.1;
>> ptCloudA = pcdownsample(ptCloud,'gridAverage',gridStep);
>> disp(min(pdist(ptCloudA.Location)))
0.0194557

Best Answer

When using 'pcdownsample' with the 'gridAverage' method, the downsampled points are achieved by averaging the points inside each voxel of the 3-D grid. The size of the voxel is specified as 'gridStep'. Because of the averaging, the distance between the outputs of two neighboring voxels can be smaller than gridStep. The 'pcdownsample' cannot be used to achieve a minimum distance between point.
For a workaround, please refer to the attached script.